shell 介绍及命令历史
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell 介绍及命令历史相关的知识,希望对你有一定的参考价值。
1、什么是 shell ?
打开系统,输入 zs ,按下 Tab 键,出现下图命令 zsoelim ,
说明没有 zsh 命令,这时候可以安装一下,先输入命令 yum list |grep zsh ,回车,搜索一下,
可以看出有 zsh 命令,也有 ksh 命令,这边我们就不安装了。
2、命令历史
我们执行过的命令,实际上是有保存到一个文件的。按向上的方向键,可以查看之前的命令,那么这些命令在哪边被保存的呢?有一个文件在用户的加目录下,root 用户见下图,
可以 cat 查看,命令非常多,截取一部分,见下图,
要想知道之前执行过的命令有多少条,可以用 history 命令查看,输入 history ,回车,截取一部分图品,见下图,
可以看到之前的历史是 672 条,那么这个文件 .bash_history 最大可以存储 1000 条命令。这一点可以通过环境变量 HISTSIZE 查询,见下图,
还有一个命令 history -c ,可以把当前的历史命令清空,见下图,
那么该命令可以清空配置文件吗?输入命令 cat .bash_history ,回车,见下图,
可以看到配置文件的内容,没有被清空,说明 history -c 命令仅仅是把内存当中的命令历史清空而已,此时使用向上方向键,也查看不到之前的历史命令,只有刚刚的几条命令。
那么我们执行过的命令,什么时候会保存到这个文件里去呢?举个例子,
现在执行三次 ls 命令,然后再输入命令 cat .bash_history ,回车,
可以看到,这些命令的最后几行,并没有 ls ,再次使用 history 查看,见下图,
此时就可以看到 ls 命令,说明刚刚执行过的命令,目前只存在与内存中,只有退出终端之后,这些命令才可以保存到配置文件 .bash_history 中。
环境变量 HISTSIZE 去哪里定义呢?在 /etc/profile 中,使用 vi /etc/profile 命令进入,搜索一下HIST,
HISTSIZE 默认的量是1000 。
觉得太少的话,可以改成5000 。按字母 i 进入编辑,完成之后,按 Esc 退出编辑,输入 :wq ,保存后退出。
更改完数值之后,不会马上变成5000,需要执行一下 source 命令,才可以生效,见下图,
现在来看一下 history 命令,
上图中,只显示了 ID 号和具体的命令,能不能将对应的命令的运行时间记录下来,这就需要对 HISTSIZE 重新赋值,见下图,
这边需要注意一下,这次更改的赋值,仅对当前的终端操作有效,再次打开终端以后,就会失效。也就是说,系统默认环境变量是不存在的,不要去定义。这时候,再执行 history 命令,
就会看到,命令历史的格式发生了改变,会记录命令的运行日期和时间。以上改变就是环境变量作用的结果。要让改变生效,可以编辑 /etc/profile 文件,输入命令 vim /etc/profile ,回车,见下图,
搜索 HIST ,见下图,
增加一行上图红色框框的内容,保存后退出,执行命令 source ,
退出 Putty ,再重新登录,执行 history 命令,见下图,
可以看到,日期和时间永久生效了。
接着做实验,见下图,
执行上图这条命令以后,这个文件就只能追加,不能删除。
终端没有正常退出时,history 里面就不会保存本次执行过的命令或者保存的命令不全。
另外再讲一下,!! ,!n(n表示数字) ,!word(word表示命令单词) ,详见下图,
以上是关于shell 介绍及命令历史的主要内容,如果未能解决你的问题,请参考以下文章
Linux CentOS 7 Shell基础(命令历史,管道,作业控制,变量及环境变量)