博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell 介绍及命令历史
阅读量:5833 次
发布时间:2019-06-18

本文共 1520 字,大约阅读时间需要 5 分钟。

1、什么是 shell ?

shell 介绍及命令历史

打开系统,输入 zs ,按下 Tab 键,出现下图命令 zsoelim ,

shell 介绍及命令历史
说明没有 zsh 命令,这时候可以安装一下,先输入命令 yum list |grep zsh ,回车,搜索一下,
shell 介绍及命令历史
可以看出有 zsh 命令,也有 ksh 命令,这边我们就不安装了。

2、命令历史

shell 介绍及命令历史

我们执行过的命令,实际上是有保存到一个文件的。按向上的方向键,可以查看之前的命令,那么这些命令在哪边被保存的呢?有一个文件在用户的加目录下,root 用户见下图,

shell 介绍及命令历史
可以 cat 查看,命令非常多,截取一部分,见下图,
shell 介绍及命令历史
要想知道之前执行过的命令有多少条,可以用 history 命令查看,输入 history ,回车,截取一部分图品,见下图,
shell 介绍及命令历史

可以看到之前的历史是 672 条,那么这个文件 .bash_history 最大可以存储 1000 条命令。这一点可以通过环境变量 HISTSIZE 查询,见下图,

shell 介绍及命令历史
还有一个命令 history -c ,可以把当前的历史命令清空,见下图,
shell 介绍及命令历史
那么该命令可以清空配置文件吗?输入命令 cat .bash_history ,回车,见下图,
shell 介绍及命令历史
可以看到配置文件的内容,没有被清空,说明 history -c 命令仅仅是把内存当中的命令历史清空而已,此时使用向上方向键,也查看不到之前的历史命令,只有刚刚的几条命令。
shell 介绍及命令历史
那么我们执行过的命令,什么时候会保存到这个文件里去呢?举个例子,
shell 介绍及命令历史
现在执行三次 ls 命令,然后再输入命令 cat .bash_history ,回车,
shell 介绍及命令历史
可以看到,这些命令的最后几行,并没有 ls ,再次使用 history 查看,见下图,
shell 介绍及命令历史
此时就可以看到 ls 命令,说明刚刚执行过的命令,目前只存在与内存中,只有退出终端之后,这些命令才可以保存到配置文件 .bash_history 中。

环境变量 HISTSIZE 去哪里定义呢?在 /etc/profile 中,使用 vi /etc/profile 命令进入,搜索一下HIST,

shell 介绍及命令历史
HISTSIZE 默认的量是1000 。
shell 介绍及命令历史
觉得太少的话,可以改成5000 。按字母 i 进入编辑,完成之后,按 Esc 退出编辑,输入 :wq ,保存后退出。
shell 介绍及命令历史
更改完数值之后,不会马上变成5000,需要执行一下 source 命令,才可以生效,见下图,
shell 介绍及命令历史

现在来看一下 history 命令,

shell 介绍及命令历史
上图中,只显示了 ID 号和具体的命令,能不能将对应的命令的运行时间记录下来,这就需要对 HISTSIZE 重新赋值,见下图,
shell 介绍及命令历史
这边需要注意一下,这次更改的赋值,仅对当前的终端操作有效,再次打开终端以后,就会失效。也就是说,系统默认环境变量是不存在的,不要去定义。这时候,再执行 history 命令,
shell 介绍及命令历史
就会看到,命令历史的格式发生了改变,会记录命令的运行日期和时间。以上改变就是环境变量作用的结果。要让改变生效,可以编辑 /etc/profile 文件,输入命令 vim /etc/profile ,回车,见下图,
shell 介绍及命令历史
搜索 HIST ,见下图,
shell 介绍及命令历史
增加一行上图红色框框的内容,保存后退出,执行命令 source ,
shell 介绍及命令历史
退出 Putty ,再重新登录,执行 history 命令,见下图,
shell 介绍及命令历史
可以看到,日期和时间永久生效了。

接着做实验,见下图,

shell 介绍及命令历史
执行上图这条命令以后,这个文件就只能追加,不能删除。
终端没有正常退出时,history 里面就不会保存本次执行过的命令或者保存的命令不全。

另外再讲一下,!! ,!n(n表示数字) ,!word(word表示命令单词) ,详见下图,

shell 介绍及命令历史

转载于:https://blog.51cto.com/13503302/2072983

你可能感兴趣的文章
瞎子摸象与刻舟求剑
查看>>
多个相同name的文本输入框,输入其中一个后,使剩下的不能输入值
查看>>
cocos2d-x于android在call to OpenGL ES API with no current context
查看>>
CentOS升级git
查看>>
HTTP必知必会(转)
查看>>
c c++ 函数入口和出口的hook(gcc 编译选项),然后打印出函数调用关系的方法
查看>>
全局唯一标识符(GUID)
查看>>
android插件技术-apkplug于OSGI服务基础-08
查看>>
iOS9下App Store新应用提审攻略
查看>>
【转】学习JAVA的步骤
查看>>
C# 内存法图像处理
查看>>
UIScrollView视差模糊效果
查看>>
8个超炫酷的纯CSS3动画及源码分享
查看>>
Python自动化测试工具Splinter简介和使用实例
查看>>
Oracle逻辑迁移某业务用户及数据
查看>>
享元模式(FlyWeight)
查看>>
单例模式(Singleton)
查看>>
Nodejs之express第三方核心模块的中间件——body-parser
查看>>
Codeforces Round #398 (Div. 2) A. Snacktower 模拟
查看>>
第一百五十二节,封装库--JavaScript,表单验证--年月日注入
查看>>