百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>服务器> linux中history命令使用详解
分享文章到:

linux中history命令使用详解

发布时间:01/15 来源: 浏览: 关键词:
history就是历史的意思了在linux中history命令也是这个用法了,我们一起来看linux中history命令使用详解吧,具体的细节如下文介绍。

shell中的引用

‘’:强引用,变量替换不会进行
“”:弱引用,能够执行变量替换
``:命令替换,引用命令的执行结果:命令的替换的另外一个符号:$()

shell命令历史:history 内置命令
当前shell进程的命令保存在缓存缓冲区中
当退出shell缓冲区的命令会保存至其用户家目录下的隐藏文件:.bash_history

以点号开课的文件为隐藏文件,ls -a可以查看隐藏文件,如果我们要再次执行命令历史中对于数字后面的命令,只需要!数字即可

  678  ls -a
  679  cat .bash_history
  680  vi
  681  history
[root@docker-node1 ~]# !678
ls -a
.  ..  anaconda-ks.cfg  .bash_history  .bash_logout  .bash_profile  .bashrc  .cshrc  in.sh  .pki  .tcshrc  .viminfo
[root@docker-node1 ~]#

那如果我们要执行上一条命令,则使用!!即可

[root@docker-node1 ~]# !678
ls -a
.  ..  anaconda-ks.cfg  .bash_history  .bash_logout  .bash_profile  .bashrc  .cshrc  in.sh  .pki  .tcshrc  .viminfo
[root@docker-node1 ~]# !!
ls -a
.  ..  anaconda-ks.cfg  .bash_history  .bash_logout  .bash_profile  .bashrc  .cshrc  in.sh  .pki  .tcshrc  .viminfo
[root@docker-node1 ~]#

那如果要执行倒数的命令,则可以!-即可

  682  ls -a
  683  history
[root@docker-node1 ~]# !-2
ls -a
.  ..  anaconda-ks.cfg  .bash_history  .bash_logout  .bash_profile  .bashrc  .cshrc  in.sh  .pki  .tcshrc  .viminfo
[root@docker-node1 ~]#

如果你想执行上次命令且不看命令数字,且引用命令参数,则可如下(只可以执行命令历史中最近一次的命令,并且是从下往上)

[root@docker-node1 ~]# cat in.sh
#!/bin/bash
CNAME=$1
CPID=$(docker inspect --format "{{.State.Pid}}" $CNAME)
nsenter --target "$CPID" --mount --uts --ipc --net --pid
[root@docker-node1 ~]# !ca
cat in.sh
#!/bin/bash
CNAME=$1
CPID=$(docker inspect --format "{{.State.Pid}}" $CNAME)
nsenter --target "$CPID" --mount --uts --ipc --net --pid
[root@docker-node1 ~]#

当我们查看一个目录是否存在,如果存在且进入目录,快速切入则可以使用如下示例

[root@docker-node1 ~]# ls /usr/local/
apache-tomcat-7.0.63         bin                           etc    include                 lib    libexec  share  tomcat   tomcat3
apache-tomcat-7.0.63.tar.gz  cmdline-jmxclient-0.10.3.jar  games  jdk-7u79-linux-x64.rpm  lib64  sbin     src    tomcat2
[root@docker-node1 ~]# cd !$
cd /usr/local/
[root@docker-node1 local]#

当然,你也可以先按住esc 在按. 即可快速的引用上个命令

如果你不喜欢被看见所有的历史命令,则history -c则可以清空命令历史,如果你不喜欢被看见某条则可以history -d 数字 指定删除,但是这种方式删除,你的删除命令历史的操作还是存在于history中

  691  cat in.sh
  692  ls /usr/local/
  693  cd /usr/local/
  694  history
[root@docker-node1 local]# history -d 693

[root@docker-node1 local]# history
  693  history
  694  history -d 693
  695  history

追加当前会话的命令历史到历史文件中-a即可
读取所有的包括历史文件中的,但是未被读取到当前会话,-n
读取历史文件,保存到历史列表中-r
讲当前历史写到历史文件中去,并附加到历史列表-w

命令历史默认保存1000条命令,在HISTSIZE中定义

[root@docker-node1 local]# echo $HISTSIZE
1000
[root@docker-node1 local]#

.bash_history
[root@docker-node1 local]# echo $HISTFILE
/root/.bash_history
[root@docker-node1 local]#

命令历史文件保存数:HISTFILESIZE

控制命令历史生成机制:HISTCONTROL
[root@docker-node1 local]# echo $HISTCONTROL
ignoredups :忽略记录重复的命令
[root@docker-node1 local]#

这里的重复仅说是连续的则认为是重复,不连续则不重复

ok。那如果我不想别人看到我执行了那些命令,我们在还需要修改以下即可:
将ignoredups修改为ignorespace

[root@docker-node1 local]# HISTCONTROL=ignorespace
[root@docker-node1 local]# echo $HISTCONTROL
ignorespace

在执行命令之前加上空格 ls

[root@docker-node1 local]#  ls
apache-tomcat-7.0.63         bin                           etc    include                 lib    libexec  share  tomcat   tomcat3
apache-tomcat-7.0.63.tar.gz  cmdline-jmxclient-0.10.3.jar  games  jdk-7u79-linux-x64.rpm  lib64  sbin     src    tomcat2
[root@docker-node1 local]#  cd tomcat
[root@docker-node1 tomcat]#

在看history

[root@docker-node1 tomcat]# history
    1  history
    2  history -m
    3  history -n
    4  ls
    5  history
    6  histzize
    7  echo $HISTZIZE
    8  echo $HISTsIZE
    9  echo $HISTSIZE
   10  echo $HISTFILE
   11  echo $HISTCONTROL
   12  echo $HISTFILESIZE
   13  HISTCONTROL=ignorespace
   14  echo $HISTCONTROL
   15  history
[root@docker-node1 tomcat]#

那如果希望加上空格不记录,且能够去重,修改HISTCONTROL=ignoreboth即可

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有10人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板