1 一些内置命令
echo 输出字符串并换行 -n 不换行 -e 启用转义字符
printf 类似C语言的格式输出
read 读取变量 -p STRING 显示提示 -s 不回显 -t 输入时限
source FILE 或者一个点[.]代替source 读取文件中的脚本并执行
hash 检查命令缓存和击中次数
type CMD 检查命令类型并显示信息
-t 仅显示命令类型[file|alias|butltin]
-a 搜索$PATH 显示CMD命令
-p 如果CMD为外部命令 才显示完整文件名
ulimit [options] [配额]
-a 显示所有限制额度
-H 严格设置 用户无法超出此值
-S 警告设置 用户超出此值会被警告
-c 限制core file最大容量[进程发生错误时生成的文件]
-f 创建的最大文件容量
-d 最大断裂内存(segment)的容量
-l 锁定(lock)的内存量
-t 可使用的最大CPU时间 单位为秒
-u 用户可使用的最大进程(process)数量
2 bash变量
env 列出所有环境变量
$_ 上一次命令的最后一个参数或者命令本身
$TERM 终端环境类型
$SHELL shell类型
$HISTSIZE 命令历史条目数
$USER 用户名
$MAIL 邮箱目镜
$PATH 命令搜索路径
$PWD 当前目录(pwd命令取出)
$LANG 语言和编码
$HOME 家目录
set 列出所有环境变量以及自定义变量[当前bash有效]
$HOSTNAME 主机名
$HOSTTYPE 硬件架构
$HISTFILE 命令历史记录文件
$$ bash的PID
$? 上一个命令的状态码
$PS1 命令提示符
$PS2 多行命令提示符
export 显示所有环境变量的定义
export VAR 将自定义变量升级为环境变量
locale 显示语言和编码 -a 显示所有系统支持的语言和编码
$RANDOM 随机生成一个0-32767的数的变量
unset 删除变量
3 命令特性和历史\ 延续命令多行输入
[TAB]命令补全
[TAB][TAB]路径补全
Ctrl+c 终止当前命令
Ctrl+d 输入EOF
Ctrl+z 将当前命令暂停[调入后台]
Ctrl+a 跳到命令行首
Ctrl+e 跳到命令行尾
Ctrl+u 删除光标至命令行首的内容
Ctrl+k 删除光标至命令行尾的内容
Ctrl+l 清屏 (clear命令)
Ctrl+m 等同于ENTER
Ctrl+s 暂停屏幕输出
Ctrl+q 恢复屏幕输出
history 显示命令历史
-c 清空命令历史
-d N 删除指定位置N的命令
-w 保存命令历史至历史文件中
!string 执行命令历史中最近一个以指定字符串开头的命令
!$/Esc, . 引用前一个命令的最后一个参数
!n 执行命令历史中的第n条命令
!-n 执行命令历史中的倒数第n条命令
!! 执行上一条命令 (UP ENTER)
4 命令替换和别名
alias CMDALIAS='CMD [options] [arguments]' 设定命令别名
ualias CMDALIAS 取消命令别名
"" 双引号 弱引用 可以实现变量替换
'' 单引号 强引用 不能实现变量替换
$(CMD)|`COMMAND` 命令替换
{} 花括号同级展开 例子 mkdir ./test/{a,b,c} mkdir ./test/{a,b}{c,d}
- 上一个工作目录 ~ 当前家目录 ~root ROOT家目录
echo ~+ 显示$PWD
echo ~- 显示$OLDPWD
echo ~+N 显示dirs中第N+1个内容 索引基于0
echo ${!PWD} 显示PWD的变量名 而不是它的值
echo ${!P*} 显示所有以P开头的环境变量名
echo $((16#32)) 十六进制的32 输出50 双圆括号算数展开
echo $[1+4] 输出1+4的值5 方括号算数展开
命令替换时的特性
${#STRING} 求STRING的长度
${STRING:POSITION} 求从POSITION开始的子串
${STRING:POSITION:LENGTH} 求从POSITION开始长度为LENGTH的子串
5 文件名通配(globbing)
* 任意长度的任意字符
? 任意单个字符
[] 匹配指定范围内的任意单个字符
[^] 匹配指定范围外的任意单个字符
[abc],[a-z],[0-9a-zA-Z] 常用检测字符组
[[:space:]] 空白字符
[[:punct:]] 标点符号
[[:lower:]] 小写字母
[[:upper:]] 大写字母
[[:alpha:]] 大小写字母
[[:digit:]] 数字
[[:alnum:]] 数字和大小写字母
匹配4个字符的文件名
ls ????
匹配字母|下划线开头 数字结尾的文件名
ls [a-zA-Z_]*[0-9]
匹配非数字开头 非字母结尾的文件名
ls [^0-9]*[^[:alpha:]]
6 重定向和管道和命令连用
&& 同时执行命令
|| 上一个命令不执行时执行
; 分步执行命令
&& || 相当于一个if else控制流程结构
< 重定向标准输入
<< EOF 重定向大段标准输入 EOF结尾
> 重定向标准输出[覆盖方式]
>> 重定向标准输出[追加方式]
2> 重定向错误输出[覆盖方式]
2>> 重定向错误输出[追加方式]
&> 重定向标准输出和错误输出 [覆盖方式]
&>> 重定向标准输出和错误输出 [追加方式]
管道 前一个命令的输出 作为后一个命令的输入
格式 CMD1 | CMD2 | CMD3 | ...
set -C 禁止对已经存在文件使用覆盖重定向 强制覆盖输出使用 >|
set +C 关闭上述功能
7 相关配置文件
/etc/sysconfig/i18n 语言和编码配置文件
~/.bash_history 命令历史文件
~/.bash_logout 注销时执行的文件
/etc/issue 登陆显示信息的文件
/etc/motd 远程连接登陆显示信息的文件
/etc/profile bash总体配置文件
/etc/inputrc 输入特性文件
/etc/profile.d/*.sh 被/etc/profile调用
~/.bash_profile 个人配置文件
如果没有~/.bash_profile 则会读取~/.bash_login或者~/.profile
~/.bashrc 个人配置文件 被~/.bash_profile调用
/etc/bashrc REDHAT系列独有的文件 设置一些属性
/etc/man.config 设置man page的搜索路径的文件
bash配置文件的登陆调用流程 非登陆式切换用户则从~/.bashrc开始调用
8 其他
如果不喜欢默认终端机的特性 可以使用stty和set来设置终端机的特性
echo 字符串中的特殊属性
\033[0m 关闭所有属性
\033[1m 设置高亮度
\033[4m 下划线
\033[5m 闪烁
\033[7m 反显
\033[8m 消隐
\033[30m -- \033[37m 设置前景色
\033[40m -- \033[47m 设置背景色
\033[nA 光标上移n行
\033[nB 光标下移n行
\033[nC 光标右移n行
\033[nD 光标左移n行
\033[y;xH设置光标位置
\033[2J 清屏
\033[K 清除从光标到行尾的内容
\033[s 保存光标位置
\033[u 恢复光标位置
\033[?25l 隐藏光标
\033[?25h 显示光标
echo -e "\033[42;36m hello \033[0m" 绿底蓝字例子
颜色特性中 0~7颜色分别为 黑红绿黄蓝紫青白