Linux基础(4)之命令的运行与命令历史

Linux基础(4)之命令的运行与命令历史

微信搜索 zze_coding 或扫描 👉 二维码关注我的微信公众号获取更多资源推送:

命令的运行

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 开头的命令。
!!:调用上一条命令。

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://www.zze.xyz/archives/linux-base-4.html

Buy me a cup of coffee ☕.