专栏首页偏前端工程师的驿站bash魔法堂:History用法详解

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更多酷炫的玩法!

Thanks                            

http://blog.sina.com.cn/s/blog_5caa94a00100gyls.html

http://blog.csdn.net/yorkingalan/article/details/7166583

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 打造高效前端工作环境-tmuxinator

    前言  虽然tmux能让我们方便组织工作环境,但每次重新打开会话时都需要手动重新创建窗口、窗格和执行各种程序,能不能像VS那样以工程为单位保存窗口、窗格和各种所...

    ^_^肥仔John
  • HTML5魔法堂:全面理解Drag & Drop API

    一、前言                                      在HTML4的时代,各前端工程师为了实现拖拽功能可说是煞费苦心,初听HTML...

    ^_^肥仔John
  • location的hash部分和使用window.onhashchange实现ajax请求内容时使用浏览器后退和前进功能

     在js跨域双向数据传递时可以用iframe加上location.hash来实现,在研究这个的时候深入学习了一下hash的特性。   hash就是uri中#及后...

    ^_^肥仔John
  • GCD 时间源小例

    @property(nonatomic,strong)dispatch_source_t  time;

    ZY_FlyWay
  • python入门基础教程05 Pytho

    初学者通常会使用Python-Shell来学习Python基础及语法知识,在使用Python-Shell 时会遇到这样或者那样的错误,有的是语法错误,有的是键入...

    py3study
  • 如何把windows上的文件以web的形式发布出去

    这种方式适用于同一局域网内,并且还要安装python,在一切都准备好之后,便可以使用以下命令来从别的电脑下载我们主机上的文件了

    dogfei
  • 【Sensors】运动传感器(3)

    重力,线性加速度,旋转矢量,显着运动,步进计数器和步进检测器传感器基于硬件或基于软件。 加速计和陀螺仪传感器始终基于硬件。 大多数由Android设备驱动的设备...

    py3study
  • 如何在踩踏事故中幸存,如何避免踩踏事故发生?

    大数据文摘
  • 从 JavaScript 发展历史中聊 ECMAScript(ES6-ES11) 新功能

    JavaScript 是当今使用最广泛的、发展最好的前后端(后端主要是 Nodejs)语言,如果我们想要灵活使用 JavaScript,我们首先需要了解的就是 ...

    coder_koala
  • C#开发BIMFACE系列23 服务端API之获取模型数据8:获取模型链接信息

    在Revit等BIM设计工具中可以给模型的某个部位添加链接信息。即类似于在Office Word、Excel 中给一段文字添加本地文件链接或者网址链接等类似功能...

    张传宁老师

扫码关注云+社区

领取腾讯云代金券