1.别名 alias
alias 查看系统中已经生效的别名
alias cl=‘clear’
alias vi=‘vim’
vi .bashrc 添加alias vi='vim’可以永久生效,别名的名字优先级高于原始命令,例如vim的别名vi优先级高于系统原有的vi命令
.bashrc文件需要重新登录生效,source .bashrc直接生效,不用重新登录
unalias
常用快捷键
ctrl+c 强制终止当前命令
ctrl+1 清屏
ctrl+a 光标移动到命令行首
ctrl+e 光标移动到命令行尾
ctrl+u 从光标所在位置删除到行首
ctrl+z 把命令放入后台
ctrl+r 在历史命令中搜索
2.历史 history
history [选项][历史命令保存文件
-c 清除历史命令
-w 把缓存中的历史命令下乳历史命令保存文件~/.bash_history中
!n 执行第n条命令
!! 重复执行上一条命令
!字符串 重复执行最后一条以该字符串开头的命令
历史命令默认保留1000条,可以在/etc/profile中的HISTSIZE=1000参数修改
3.输入输出重定向
1)标准输入输出
设备 设备文件名 文件描述符 类型
键盘 /dev/stdin 0 标准输入
显示器 /dev/stdout 1 标准输出
显示器 /dev/stderr 2 标准错误输出
2)输出重定向
**类型 符号 作用**
标准输出重定向 命令 >文件 以覆盖的方式,把命令的正确输出输出到指定的文件或设备当中。
命令 >>文件 以追加的方式,把命令的正确输出输出到指定的文件或设备当中。
标准错误输出重定向 错误命令 2>文件 以覆盖的方式,把命令的错误输出输出到指定的文件或设备当中。(错误输出的 '>'左右两侧不能有空格)
错误命令 2>>文件 以追加的方式,把命令的错误输出输出到指定的文件或设备当中。(错误输出的 '>>'左右两侧不能有空格)
正确输出和错误输出同时保存 命令>文件 2>&1 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中。
命令>>文件 2>&1 以追加的方式,把正确输出和错误输出都保存到同一个文件当中。 (常见)
命令 &>文件 以覆盖的方式,把正确输出和错误输出同时输出都保存到同一个文件当中。
命令 &>>文件 以追加的方式,把正确输出和错误输出同时输出都保存到同一个文件当中。
命令>>文件1 2>>文件2 把正确的输出追加到文件1中,把错误的输出追加到文件2中
#ls &>/dev/null 对于不关心的输出(例如此处ls)扔进黑洞
eg:
将命令执行结果及报错均输入tar.log
tar -xvf tartest.tar >>tar.log 2>&1
tar -xvf tartest.tar &>>tar.log
将命令执行正确结果放入tar1.log,错误结果放入tar2.log
tar -xvf tartest.tar >>tar1.log 2>>tar2.log
3)输入重定向
命令<文件 把文件作为命令的输入
wc [选项][文件名]
选项:
-c 统计字节数
-w 统计单词数
-l 统计行数
4.管道符
1)多命令顺序执行
符号 格式 作用
; 命令1;命令2 多个命令顺序执行,命令之间没有逻辑联系(不论其中有哪一个命令报错)
$$ 命令1&&命令2 逻辑与,当命令1正确执行,命令2才会执行
|| 命令1||命令2 逻辑或,命令1若不正确执行,则命令2执行;命令1正确执行,则命令2不执行
eg:
[root@localhost shell]# date;tar -xvf tartest.tar ;date
Tue Apr 28 13:45:42 CST 2020
tartest/
tartest/a
tartest/b
tartest/c
Tue Apr 28 13:45:42 CST 2020
[root@localhost shell]# date1;tar -xvf tartest.tar ;date
bash: date1: command not found... ---无论前面命令是否成功,不影响后面命令的执行
Similar command is: 'date'
tartest/
tartest/a
tartest/b
tartest/c
Tue Apr 28 13:49:22 CST 2020
[root@localhost shell]# date&&tar -xvf tartest.tar&&date
Tue Apr 28 13:46:14 CST 2020
tartest/
tartest/a
tartest/b
tartest/c
Tue Apr 28 13:46:14 CST 2020
[root@localhost shell]# date1&&tar -xvf tartest.tar&&date
bash: date1: command not found... ---date1执行失败,随后两个命令均不执行
Similar command is: 'date'
[root@localhost shell]# date1||tar -xvf tartest.tar||date
bash: date1: command not found... ---date1命令报错,才会触发第二个tar命令的执行,tar命令执行,则最后的date不执行
Similar command is: 'date'
tartest/
tartest/a
tartest/b
tartest/c
[root@localhost shell]# date1||tar12 -xvf tartest.tar||date
bash: date1: command not found... ---date1命令报错,触发第二个tar12命令的执行,tar12命令执行失败,触发最后的date执行
Similar command is: 'date'
bash: tar12: command not found...
Tue Apr 28 13:46:46 CST 2020
[root@localhost shell]# date1&&echo yes||echo no --注意先写&&再写||,用来判断命令是否正确执行
bash: date1: command not found...
Similar command is: 'date'
no
[root@localhost shell]# date&&echo yes||echo no
Tue Apr 28 13:48:10 CST 2020
yes
2)管道符
命令1|命令2 命令1的输出作为命令2的操作对象
eg:
[root@localhost shell]# ls /etc|grep cront
anacrontab
crontab
[root@localhost shell]# netstat -an|grep ESTABLISHED|wc -l —计算连接此服务器的客户端数目
1
5.通配符
1)通配符 作用
1)通配符 作用
* 匹配任意字符,例:find /home -name "*test*",显示所有名字带test的文件;或例:find /home -name "*",home目录下的所有文件,包括隐藏文件。
? 匹配任意一个字符,
[] 匹配任意一个中括号内的字符,例:find /home -name "test[12]",显示test1和test2文件;或find /home -name "[12]",显示以1和2开头的文件。
[-] 匹配中括号内任意一个字符,代表一个范围。例如test[0-9]代表匹配test后跟任意一个数字的
[^] 逻辑非,表示匹配不是中括号内的一个字符串。例如test[^0-9]代表匹配test后没有紧跟数字的
组合使用:例:find /home -name "*[12]",显示所有1和2结尾的文件
2)其他特殊符号
符号 作用
'' 单引号。在单引号中的所有特殊符号,如“$”和“`”(反引号,键盘中ESC下的按键)都没有特殊含义,即单引号中所有内容该是什么样就是什么样,不会变
"" 双引号。在双引号中的特殊符号也没有特殊含义,但是“$”和“`”和“\”是例外, 拥有“调用变量的值”,“引用命令”和“转义符”的特殊含义
`` 反引号。用来引用系统命令
$() 和反引号作用一样,用来引用系统命令
# bash中#开头的行代表注释
$ 调用变量的值
\ 用来转义,跟在\后的特殊符号将失去特殊含义,如\$就可以输出$这个字符
eg:
[root@localhost shell]# a=123
[root@localhost shell]# echo $a
123
[root@localhost shell]# echo '$a'
$a
[root@localhost shell]# echo "$a"
123
[root@localhost shell]# aa=`ls` ---将ls的执行结果赋值给aa
[root@localhost shell]# echo "$aa"
hello.sh
tar1.log
tar2.log
tar.log
tartest
tartest.tar
[root@localhost shell]# bb=$(ls)
[root@localhost shell]# echo "$bb"
hello.sh
tar1.log
tar2.log
tar.log
tartest
tartest.tar
[root@localhost shell]# echo "\$bb"
$bb