命令的运行
shell 程序的可执行命令对应的程序文件的路径定义在 PATH
环境变量中。
[root@zze ~]# echo $PATH
/usr/local/java/jdk1.8.0_191/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
所以当我们在命令行键入命令回车后,shell 程序将会在上述路径中查找对应程序并运行。要注意的是,shell 程序的搜寻顺序是从左至右的,而 shell 搜寻到的外部命令的路径结果会缓存至内存中的一个 kv(key-value)结构中,即如果在多个路径中有相同的命令,那么找到第一个命令后就只会将第一个命令对应程序位置缓存到 kv 中,后续的同名命令将会被忽略。
可通过 hash
命令可查看已缓存命令执行的命中次数:
[root@zze ~]# hash
hits command
1 /usr/bin/tty
1 /usr/local/java/jdk1.8.0_191/bin/java
1 /usr/bin/whereis
2 /usr/bin/info
19 /bin/ls
命令历史
登录进 shell 后新执行的命令只会记录在缓存中,退出时会将缓冲区中的命令记录到命令历史文件中。
登录进 shell 时,会读取命令历史文件中记录下的命令,并且可以通过 history
命令查看到这些命令。
[root@zze ~]# history
1 ls
2 history
命令历史文件存储在登录用户的家目录,路径为:~/.bash_history
。
常用选项
-a
:手动将本次会话执行的命令历史追加到命令历史文件中。
-d
:删除指定位置的历史命令,需指定要删除命令的位置。
-c
:清除命令历史。
快捷操作
!n
:调用命令历史的第 n 条命令。
!string
:调用命令历史中第一个以 string
开头的命令。
!!
:调用上一条命令。
评论区