shell介绍

- 可以使用 yum list |grep zsh 或者 yum list |grep ksh
- 这样可以搜索 zsh 和 ksh ,有需要的话可以安装
- 总之,默认使用的就是 .bash shell
命令历史
- 输入过的命令会被保存在一个文件内
- 在shell界面,使用 上方向键 可以往上查看之前输入过的命令
- 这个保存命令的文件地址在用户家目录下面
- 例子:root 用户的家目录就是 /root
- 保存过往命令的文件名称是 .bash_history
- 那么root用户保存过往命令的文件路径就在 /root/.bash_history
- 使用 history 命令就可以查看记录了多少条过往命令

- 上图可以看到,输入的最后一条命令是 history
- 序号是1003,说明.bash_history已经记录了1003条过往命令
- 不过 .bash_history 最多只能存储1000条命令

- 往上翻,可以看到,命令是从序号 4 开始的
- 因为记录到1003条命令,但只能存1000条命令,所以最前面的3条命令被删除了

- 有一个系统内置的环境变量 HISTSIZE

- 使用上图命令,可以看到返回的值是 1000
- 所以 .bash_history 最大记录的命令数量为1000
- 使用 history -c 命令可以清空当前 .bash_history 的内容
- 不过 history -c 只是清空内存中的内容,写进硬盘的内容并不会被清空
- 使用终端时输入的命令都是保存在内存里面的
- 退出终端的时候才会被写入硬盘
- HISTSIZE 环境变量可以被修改
- 可以在 /etc/profile 文件中修改

- vi 打开 profile 文件,然后找到上图中的这个变量
- 将变量数值修改为自己想要的数值,然后保存退出
- 不过现在修改还没有生效,需要执行命令 source /etc/profile
- 这样修改才会生效,可以使用 echo $HISTSIZE 查看是否生效
- 或者退出终端,然后重新进入后也会生效

- 如果想把命令输入的时间也记录进 .bash_history
- 可以使用上图的命令,首先赋值给环境变量 HISTTIMEFORMAT
- "%Y%m%d %H:%M:%S " 代表时间的格式:年月日 时:分:秒
- 使用 echo $HISTTIMEFORMAT 查看格式的值是否改变了
- 可以看到下面返回的值是 "%Y/%m/%d %H:%M:%S "
- 系统默认 HISTTIMEFORMAT 的值为空,所以新建一个终端这个变量的值是为空的

- 如图,可以看到,再使用 history 命令查看记录在内存里面的过往命令
- 每一条过往命令都增加了使用时间的记录
- 如果希望永久保留这个设置,而不是每次打开终端都要重新设置一遍
- 可以在 /etc/profile 文件里面设置这一个变量

- 用 vim 打开 profile
- 如图,找到 HISTSIZE,在它的下面增加一行,HISTTIMEFORMAT
- 就把之前设置变量的格式复制到这里,然后保存退出
- 然后需要 source /etc/profile 一下使其生效
- 然后重新进入终端

- 可以发现,默认 HISTTIMEFORMAT 的值已经是之前设置的格式了

- 上图命令是对 .bash_history 文件追加 a 权限
- 增加 a 权限后,这个文件就只能被追加信息,而不会被删除信息
- 这样就可以无限的保存命令到这个命令历史文件里面了
- 但是如果不正常退出终端的话,有可能过往命令会保存不全
- 正常退出终端需要使用命令 logout 或者 exit
- 命令 !! 会执行上一条命令,也就是说命令历史里面记录的最后一条命令
- 比如使用 ls 命令后,再使用 !! 命令
- 那么就会再执行一次 ls 命令,因为上一条命令是 ls
- 命令 !n ,n代表数字
- 使用命令 history 查看命令历史,每一条命令都有一个id号码
- 例子,使用命令 !768 那么就会执行命令历史里面id为768的命令
- 命令 !word ,word代表单词
- 比如在命令历史里面,总共使用了3次 ls /root 命令
- 然后使用命令 !ls
- 那么就会执行命令历史里面最后一次 ls 命令
- 也可以使用 !vim 或者 !echo
- 那么也会执行命令历史里面最后一次使用 vim 或者 echo 的命令










