Linux入门之History历史命令

简介:

   在linux 中我们一般都是使用字符界面下来通过命令来执行相应的操作,那么比如想查看之取执行过了什么命令,这时linux中的history功能就为我们提供了很好的历史记录,不过记录条数默认是有大小控制的,不过这些都可以改变

 

history 一些快捷功能:

history命令使用之前,我要介绍一些常用的快捷方式来调出历史命令

1、通过输入hisotry 会列出当前内存中的命令历史以及编号

[root@localhost ~]# history

    1  history

    2  hostname

    3  uname -n

    4  file /etc/issue

    5  ls -l

6  history

解释:左边的为第几条记录,如果有新纪录,会按顺序编号

 

2、通过!符合来调出并执行历史命令

格式:

![num]      第几行     

!-[num]     倒数第几行

!?[keyword]  包含关键字最近的历史命令

 

举例:

![num] 执行指定编号(行号的历史命令)

[root@localhost ~]# !4

file /etc/issue

/etc/issue: ASCII text

注意:这里会同时显示命令代码和命令执行结果

!-[num] 执行最近(倒数)几行的历史命令

[root@localhost ~]# !-1

hostname

localhost.localdomain

解释:这里是执行倒数第一行的命令

!?[keyword] 通过关键字来找历史中包含关键字的最近命令

[root@localhost ~]# !?fil

file /etc/issue

/etc/issue: ASCII text

解析:显然我后面可能执行了history查看,但是只执行了一条file开头的命令,那么历史会找file这个命令来执行

 

使用快捷键或者命令来调出命令

Ctrl+p  调出上一次执行过的命令

Ctrl+r  通过关键字搜索最近的历史命令执行

Esc,.  Alt+.  调出上一次执行命令的参数,Alt+.在以ssh方式的模拟软件终端下可能不行

!$     上一次执行命令的最后一个参数

!^     上一次执行命令的第一个参数

!*     上一次执行命令的所有参数

!n     执行第n条命令

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

!n:$   调用第n条历史命令的最后一个参数

!n:*   调用第n条历史命令的所有参数

!n:m   调用第n条历史命令的第m个参数

 

 

使用history命令的选项,一般为下面三种方式

history  [-c] [-d [offset]] [num]

-c         清空当前内存的的所有历史记录

-d  [offset] 删除指定编号的记录数

[num]      显示最近的第条记录

[starnum]  [endnum] 显示从starnum~endnum的所有历史列表

history  -anrw [filename] : 对指定的文件进行操作,默认会操作~/.bash_history

history  -ps arg1 arg2 ...

    -a  将当前内存的历史记录追加(append)到历史文件中

    -n  从历史文件中读取当前内存记录里未读取的行输出

 -r  从历史文件中读取所有记录附加到内存历史记录

 -w 从内存历史中读取数据覆盖到历史记录文件中,可以指定文件保存记录

 -p  将参数输出为列表,但不保存

 -s  将参数保存成命令历史记录中,可以以此伪造命令记录

 

通过修改环境变量来控制history的保存属性

$HISTSIZE  历史记录最大条数

$HISTFILE  历史记录存放文件

$HISTFILESIZE  历史文件条目最大数

$HISTTIMEFORMAT="%F %T"  在命令历史显示时输出时间等格式

$HISTIGNORE="str1;str2;str3*" 表示不记录str1str2命令和以str3开头的命令

 

控制命令的记录方式:

$HISTCONTROL

ignoredups 忽略重复的命令(连续输出为重复)

    ignorespace 忽略前面加空格键的命令

    ignoreboth  ignoredups,ignorespace 的结合,及忽略连续重复执行和前面加空格的命令

    erasedups  删除重复命令

export var_name= value 声明并赋值变量并导入为环境变量

只是变量改变只是临时生效,为本地变量

 

要想永久生效,需要在以下任意中添加次此变量,然后正常退出后再次登陆生效

注意:/etc/profile    全局变量

     ~/.bash_profile 用户局部变量

      局部变量的优先级要大

 

linux 自身快捷键

有我们通过以上方式调出命令或者命令参数,可能会输出错误,如果使用Backspace退格键或者Delete键来逐个删除会很慢,还有在输入命令时想要快速移动,使用方向键对于较长的命令可能不太好,这里会有linux自身的快捷键来使用

Ctrl+a 移动光标到命令行首

Ctrl+e 移动光标到命令行尾

Ctrl+u 删除光标到行首的代码

Ctrl+k 删除光标到行尾的代码

Esc,b  按下Esc 然后按b关标会向左逐个单词移动

Esc,f  按下Esc 然后按f关闭会向右逐个单词移动