ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

复习之命令历史

2022-02-17 18:31:09  阅读:177  来源: 互联网

标签:HISTTIMEFORMAT 历史 复习 17 命令 root history


1.命令历史

使用bash shell,会将执行过的命令记录到history对应的缓冲区中。当用户注销时,会将history缓存区的命令历史追加保存到~/.bash_history文件中。当下次登录shell时,系统会读取命令历史文件中记录的命令到命令缓冲区。利用命令历史,不仅可以了解之前所作的操作,也可以方便重复执行。

 

2.history命令

Bash shell中提供一个内部命令history,可以显示和管理曾经执行过的命令列表。

history命令语法格式:

history [-c] [-d offset] [n] or history -anrw [filename] or history -psarg [arg...]

history命令常用选项说明:

-c            表示清空历史命令
-d offset   删除历史中指定的第offset个命令
n             显示最近n条命令
-a            追加本次会话新执行的命令历史列表至历史文件
-r            读历史文件附加到历史列表
-w            保存历史列表到指定的历史文件
-n            读取历史文件中未读过的行到历史列表
-p            展开历史参数成多行,但不存在历史列表中
-s            展开历史参数成一行,附加在历史列表中

范例:history查看命令历史

#显示命令历史列表
[root@centos8 ~ 7]#history
    1  pwd
    2  ls
    3  hostname
    4  who
    5  whoami
    6  w
    7  history
#显示最近三条命令历史
[root@centos8 ~ 18]#history 3
   16  echo -1 -1 -2 -3 -123123 123 123 | grep -E  '?[0-9]+'
   17  echo -1 -1 -2 -3 -123123 123 123 | grep -E  '\-?[0-9]+'
   18  history 3
#清除历史列表
[root@centos8 ~ 19]#history -c
[root@centos8 ~ 1]#history
    1  history

 

3.history命令相关的shell变量

history命令有一些相关的shell变量。所谓变量就是一个代号,可以表示和代表一些字符的集合。Linux中有一些内置的变量,将之设置不同的值会影响其执行的结果。

设置shell变量:
变量名=“值”
示例:HISTTIMEFORMAT=“%F %T”
查看变量:
echo $变量名
示例:echo $HISTTIMEFORMAT

控制历史列表的变量如下表:

HISTSIZE                 命令历史记录的条数
HISTFILE                 指定历史文件,默认为~/.bash_history
HISTFILESIZE          命令历史文件记录历史的条数
HISTTIMEFORMAT        显示时间,示例:HISTTIMEFORMAT=“%F %T”
HISTIGNORE            指定历史中不记录的命令,示例:HISTIGNORE"str1:str2*....",忽略str1命令,str2开头的历史
HISTCONTROL       控制命令历史的记录方式,可设置的值如下:
             ignoredups:默认,忽略重复的命令,连续且相同认为重复
             ignorespace:忽略所有以空白开头的命令
             ignoreboth:相当于ignoredups和ignorespace的组合
             erasedups:删除重复命令

提示:如果要持久保存上述变量,需要将上面指令放在/etc/profile或者~/bash_profile中

范例:history相关变量

#修改历史列表为时间格式
[root@centos8 ~ 4]#history
    1  history
    2  ls
    3  hostname
    4  history
[root@centos8 ~ 5]#HISTTIMEFORMAT="%F %T"
[root@centos8 ~ 6]#echo $HISTTIMEFORMAT
%F %T
[root@centos8 ~ 7]#history
    1  2022-02-17 17:13:00history
    2  2022-02-17 17:43:30ls
    3  2022-02-17 17:43:36hostname
    4  2022-02-17 17:43:41history
    5  2022-02-17 17:44:30HISTTIMEFORMAT="%F %T"
    6  2022-02-17 17:44:45echo $HISTTIMEFORMAT
    7  2022-02-17 17:44:55history
#退出当前终端,重新登录
[root@centos8 ~ 8]#exit
logout
#history格式无法保存
[root@centos8 ~ 6]#history
    1  ls
    2  hostname
    3  history
    4  HISTTIMEFORMAT="%F %T"
    5  echo $HISTTIMEFORMAT
    6  history
    7  exit
    8  history
#修改~/.bash_profile文件,在最后一行增加HISTTIMEFORMAT设置
[root@centos8 ~ 7]#echo 'export HISTTIMEFORMAT="%F %T"' > ~/.bash_profile
[root@centos8 ~ 8]#cat ~/.bash_profile
export HISTTIMEFORMAT="%F %T"    

 

4.命令历史的快捷方式使用

利用历史的快捷键可以提高输入命令的速度,提高工作效率,也可以避免错误。常见的命令历史快捷键如下:

重复前一个命令有三种方法:

1)使用向上的方向键并回车执行
2)按!!并回车执行
3)输入!-1并回车执行

执行前一个不包含参数的命令:!:0

执行history命令输出对应序号n的命令:!n

执行history命令历史中倒数第n个命令:!-n

重复前一个以string开头的命令:!string

重复前一个包含string的命令:!?string

仅打印命令历史,并不执行:!string:p

打印输出!$(上一个命令的最后一参数)的内容:!$:p

打印输出!*(上一个命令的所有参数)的内容:!*:p

删除上一个命令的第一个string:^string

将上一个命令的第一个string1替换为string2:^string1^string2

将上一个命令的所有的string1都替换为string2:!:gs/string1/string2

使用up(向上)和down(向下)键来上下浏览从前输入的命令

在命令历史中搜索命令:ctrl+r

从历史搜索中模式中退出:ctrl+g

要重新调用前一个命令中最后一个参数,三种方式:

1)!$
2) esc,.(单击esc键后松开,再单击.键
3) alt+. (按住alt键同时单击.键)

调用历史参数:

利用上一个命令的第一个参数做cmd的参数:cmd!^

利用上一个命令的最后一个参数做cmd的参数:cmd!$

利用上一个命令的全部参数做cmd的参数:cmd!*

利用上一个命令的第n个参数做cmd的参数:cmd!:n

调用第n条命令的第一个参数:cmd!n:^

标签:HISTTIMEFORMAT,历史,复习,17,命令,root,history
来源: https://www.cnblogs.com/weilanxuesre/p/15905908.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有