码迷,mamicode.com
首页 > 系统相关 > 详细

shell 介绍及命令历史

时间:2018-02-26 11:25:06      阅读:146      评论:0      收藏:0      [点我收藏+]

标签: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 介绍及命令历史

标签:shell 介绍   命令历史   

原文地址:http://blog.51cto.com/13503302/2072983

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!