目录
Linux之history、tab、alias、命令执行顺序、管道符以及exit
history历史命令
格式
参数
修改默认记录历史命令条数
案例
案例1 --- 显示history历史记录中出现次数最高的top10
案例2 --- 增加history显示的时间信息
命令与文件名补全 --- tab
命令别名
格式
案例
注意
命令执行顺序
顺序执行
前面命令执行不成功,后面的命令不执行
管道符
符号
案例
exit退出程序
作用
格式
状态码
常见状态码
案例
history [参数] [历史命令保存文件]
参数 | 作用 |
-c | 清空历史命令 |
-w | 把缓存中的历史命令写入历史命令保存文件。如果不手工指定历史命令保存文件,则放入默认历史命令保存文件~/.bash_history 中 |
[root@localhost ~]# vim /etc/profile
[root@localhost ~]# history | tr -s " " | cut -d " " -f3 | sort | uniq -c |sort -nr | head -10
浏览命令 | 压缩为1个空格 | 截取以空格为分割的第3部分 | 排序 | 统计并去重 | 降序数字排序| 显示前10个
[root@localhost ~]# vim ~/.bashrc # 定位最后一行增加一行内容
export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S: "
[root@localhost ~]# source ~/.bashrc # 刷新配置
[root@localhost ~]# history
alias 别名=原命令
[root@localhost ~]# alias hi=history
[root@localhost ~]# hi
别名的优先级比命令高
第一顺位:执行用绝对路径或相对路径执行的命令。
第二顺位:执行别名。
第三顺位:执行 Bash 的内部命令。
第四顺位:执行按照 $PATH 环境变量定义的目录查找顺序找到的第一个命令。
为了让这个别名永久生效,可以把别名写入环境变量配置文件“~/.bashrc
[root@localhost ~]# vim ~/.bashrc
# 在最下面增加
命令1 ; 命令2
[root@localhost ~]# date ; ls -l /etc/passwd
命令1 && 命令2
[root@localhost ~]# mkdir /mnt/iso && mount /dev/sr0 /mnt/iso
前面命令成功,后面就不执行,如果前面不成功后面就执行
命令1 || 命令2
[root@localhost ~]# mkdir tt || ls /
[root@localhost ~]# mkdir tt || ls / # 可以再次执行
当在两个命令之间设置管道时,管道符|左边命令的输出就变成了右边命令的输入。只要第一个命令向标准输出写入,而第二个命令是从标准输入读取,那么这两个命令就可以形成一个管道
命令1 | 命令2
提取系统网卡的IP地址
[root@localhost ~]# ip a | grep ens160 | grep inet | tr -s " " | cut -d / -f1 | cut -d " " -f3
显示IP信息 | 行向过滤包含ens60 | 行向过滤inet | 压缩为一个空格 | 以/为分割依据,取第一部分 | 以空格为分割依据,取第3部分
显示主机内存剩余容量
[root@localhost ~]# free -h |grep Mem | tr -s " " | cut -d " " -f4
终止Shell程序的执行
exit 状态码
该参数是一个整数值,其取值范围为0~255
注意:
Shell程序的退出状态码储存在系统变量$?中,因此,用户可以通过该变量取得Shell程序返回给父进程的退出状态码
0----------------命令运行成功
1----------------通知未知错误
2----------------误用shell命令
126-------------命令不可执行
127-------------没有找到命令
128-------------无效退出参数
128+x-----------linux信号x的严重错误
130--------------命令通过Ctrl+C终止
255--------------退出状态码越界
演示在不同的情况下,程序返回不同的状态码
[root@localhost ~]# echo "china"
[root@localhost ~]# echo $?
[root@localhost ~]# ehco "china"
bash: ehco: command not found...
Similar command is: 'echo'
[root@localhost ~]# echo $?