bash魔法堂:History用法详解

简介:

Brief                              

  又要敲那条长到没朋友的命令了,真心不再爱了。。。

  有了history这条命令我想大家可以再爱一次了吧!

 

>history                            

  语法: history [n | -c | -raw histfile] 

  n —— 数字,用于表示罗列最近的n笔命令

  -c —— 表示清除history中的所有内容(实质上是清理$HISTFILE中保存的内容)

  -a —— 表示将当前会话的自上次执行history -a histfile命令后执行所有命令保存到hisfile文件中,若histfile缺省值为$HISTFILE变量指向的文件(~/.bash_history)

  -r —— 表示从histfile读取内容到当前会话的history

  -w —— 表示将目前的hitory内容写入histfile中

 

How 2 execute the command show by "history"      

  M1.  !n 

    n为数字,表示执行history中指定编号的命令

  M2.  !cmd 

    cmd为命令的部分字符串,从最近往最远开始匹配以该字符串开头的首条命令并执行

  M3.  !!  或  !-1  或  Ctrl + p 

    !和-1表示获取最近一条命令,并执行。(Ctrl + p为快捷键)

  M4.  !?string?  或  Ctrl + r 

    string为命令的部分字符串。从最近往最远开始匹配含字符串的首条命令并执行(Ctrl + r为快捷将)

  M5.  fc n 

    n为数字,表示执行history中指定编号的命令。但此时会打开一个文本编辑器并显示该条命令,我们可以修改该命令,然后退出编辑器时则会执行修改后的命令。

  M6.  ^replacedString^newString!:s/replacedString/newString

    将上一条命令的replacedString内容替换为newString内容后执行新命令

> ps -ef|grep httpd
> ^httpd^grep

M7.  !!& 

    在执行上一条命令后再执行另一条命令

 

Fetch Args from History Commnad              

   !^ 获取上一条命令的第一个参数。

   !$ 获取上一条命令的最后一个参数。

   !:n 获取上一条命令的第n个参数,n从1开始。(为0时则挑选出命令名称)

   !:n-x 获取上一条命令的第n个参数到第x个参数,n和x均从1开始。(为0时则挑选出命令名称)

   !* 获取上一条命令的所有参数。

   !n* n为数字,获取上一条命令的从第n个参数(含第n个参数)后的所有参数。

   !n- n为数字,获取上一条命令的从第n个参数(含第n个参数)后的除了最后一个参数外的所有参数。

 

Configurations begin with "HIST"              

  HISTTIMEFORMAT  

    用于设置history命令的输出格式。

     >export HISTTIMEFORMAT='%F %T' 

  HISTSIZE

  用于控制命令历史记录的总条目数。(当设置为0时则为禁用命令历史记录功能)

    >export HISTSIZE=0 

  HISTFILE

    用于设置命令历史的保存位置,默认保存在~/.bash_history文件中。

    >export HISTFILE=~/.cmd_history 

  HISTCONTROL

    剔除连续重复的命令历史条目: >export HISTCONTROL=ignoredups 

    清理所有重复的命令历史条目: >export HISTCONTROL=erasedups 

    不记录以空格开头的记录: >export HISTCONTROL=ignorespace 

  HISTIGNORE

    用于设置某些命令将不被保存到历史记录中

     >export HISTIGNORE='pwd:ls:ls -ltr:' 

    上述表示pwd,ls和ls -ltr将不被保存。

注意:上述环境变量均仅对当前会话有效,当退出会话后将失效。若要所有会话均有效则需要将设置写入~/.bash_profile文件中。

 

Conclusion                          

  通过man 3 history我们可以了解history更多酷炫的玩法!

目录
相关文章
|
Shell
善用Bash history 命令(三)
善用Bash history 命令
140 0
|
Shell
善用Bash history 命令(二)
善用Bash history 命令
99 0
|
Shell Linux 索引
善用Bash history 命令(一)
善用Bash history 命令
135 0
|
Unix Linux Shell
Bash 强大的History 命令
Bash的使用GUN readline库来处理用户输入,所以BASH也有emacs/vi 两种模式(主要是快捷键不同)(4DOS没有)一般来说BASH缺省是emacs模式,如果想变成vi模式(如果你是vi用户)就可以了,然后你就可以用和vi一样的快捷键来编辑命令行了.
673 0
|
4月前
|
Linux Shell Windows
4:Bash shell命令-步入Linux的现代方法
4:Bash shell命令-步入Linux的现代方法
53 0
|
6月前
|
关系型数据库 MySQL Shell
【Linux命令】-bash: mysql: command not found
【Linux命令】-bash: mysql: command not found
56 0
|
8月前
|
Ubuntu 安全 Linux
不用安装虚拟机,直接在Windows上面运行Linux Bash Shell,嗯!真香!!!
不用安装虚拟机,直接在Windows上面运行Linux Bash Shell,嗯!真香!!!
152 0
|
1天前
|
Java Shell Linux
【linux进程控制(三)】进程程序替换--如何自己实现一个bash解释器?
【linux进程控制(三)】进程程序替换--如何自己实现一个bash解释器?
|
15天前
|
存储 Shell Linux
【攻防世界】unseping (反序列化与Linux bash shell)
【攻防世界】unseping (反序列化与Linux bash shell)
|
2月前
|
Linux Shell
mac/linux提示bash: telnet: command not found
mac/linux提示bash: telnet: command not found

相关课程

更多