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

尊重原创,转载请注明来自:http://www.cnblogs.com/fsjohnhuang/p/4753904.html ^_^肥仔John

Thanks                            

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

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

时间: 2024-10-13 05:08:45

bash魔法堂:History用法详解的相关文章

history用法详解

History用法详解   作用:显示或操作历史列表 用法:history[-c] [-d offset] history -anrw[filename] history -ps arg[arg...] 参数选项: -c:清空历史记录 清空的是内存中的历史,文件中历史还存在,重新登录后还能看到历史记录. 要彻底清除历史记录有两种方法: 1.清除所有用户的历史记录:在/etc/profile文件中加入HISTSIZE=0 清除单个用户的历史文件:在该用户家目录下的.bash_profile文件中加

MyBatis魔法堂:ResultMap详解

一.前言   MyBatis是基于“数据库结构不可控”的思想建立的,也就是我们希望数据库遵循第三范式或BCNF,但实际事与愿违,那么结果集映射就是MyBatis为我们提供这种理想与现实间转换的手段了,而resultMap就是结果集映射的配置标签了. 二.从SQL查询结果到领域模型实体 在深入ResultMap标签前,我们需要了解从SQL查询结果集到JavaBean或POJO实体的过程. 1. 通过JDBC查询得到ResultSet对象 2. 遍历ResultSet对象并将每行数据暂存到HashM

.Net魔法堂:log4net详解

一.作用 提供一个记录日志的框架,可以将日志信息记录到文件.控制台.Windows事件日志和数据库(MSSQL.Acess.Oracle.DB2和SQLite等). 二.先看看示例,感受一下吧   config配置文件 <?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="log4net"

Java魔法堂:内部类详解

一.前言 对于内部类平时编码时使用的场景不多,比较常用的地方应该就是绑定事件处理程序的时候了(从C#.JS转向Java阵营的孩子总不不习惯用匿名内部类来做事件订阅:().本文将结合Bytecode对四种内部类作介绍,当作一次梳理以便日后查阅. 首先要明确的是内部类是编译器提供的特性,编译器会将含内部类的java文件编译成外部类和内部类的N个文件(N>=2) ,然后JVM就按普通类的方式运行.就如下面的源码会被编译为Outer.class和和Outer$Inner.class文件. class O

53 kvm及libvirt、使用virsh管理kvm虚拟机、网络虚拟化技术基础、网络名称空间netns用法详解

01 kvm及libvirt [[email protected] ~]# yum install libvirt libvirt-client python-virtinst virt-manager virt-install -y [[email protected] ~]# yum -y install qemu-kvm [[email protected] ~]# systemctl start libvirtd.service #创建桥 [[email protected] ~]# v

grep用法详解 grep与正则表达式

Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户. 主要参数    [options]主要参数:    -c:只输出匹配行的计数.    -I:不区分大 小写(只适用于单字符).    -h:查询多文件时不显示文件名.    -l:查询多文件时只输出包含匹配字符的文件名.    -n:显示匹配行及 行号.    -s

(转)Shell中read的用法详解

Shell中read的用法详解 原文:http://blog.csdn.net/jerry_1126/article/details/77406500 read的常用用法如下: read -[pstnd] var1 var2 ... -p 提示语句-n 字符个数-s 屏蔽回显-t 等待时间-d 输入分界 [plain] view plain copy 01). read                           # 从标准输入读取一行并赋值给特定变量REPLY [email prote

(转)Xargs用法详解

Xargs用法详解 原文:http://czmmiao.iteye.com/blog/1949225 简介之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了xargs命令,例如: 这个命令是错误的find /sbin -perm +700 |ls -l 这样才是正确的find /sbin -perm +700 |xargs ls -l   xargs 可以读入 stdin 的资料,并且以空白字元或断行字元作为分辨,将 stdin 的资料分隔成为

(转)linux 中特殊符号用法详解

linux 中特殊符号用法详解 原文:https://www.cnblogs.com/lidabo/p/4323979.html # 井号 (comments)#管理员  $普通用户 脚本中 #!/bin/bash   #!/bin/sh井号也常出现在一行的开头,或者位于完整指令之后,这类情况表示符号后面的是注解文字,不会被执行. # This line is comments.echo "a = $a" # a = 0由于这个特性,当临时不想执行某行指令时,只需在该行开头加上 # 就