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

时间: 2024-08-04 02:44:39

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

MyBatis魔法堂:ResultMap详解

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

Java魔法堂:内部类详解

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

.Net魔法堂:log4net详解

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

php9个超全局变量的用法详解(二)

今天来讲一下$_GET()与$_POST(). 其实很容易理解,根据表面意思就可以看得出来,是获得post与get表单的数据,其实也正是如此,来点专业的话来讲, $_GET 变量是一个数组,内容是由 HTTP GET 方法发送的变量名称和值. $_GET 变量用于收集来自 method="get" 的表单中的值.从带有 GET 方法的表单发送的信息,对任何人都是可见的(会显示在浏览器的地址栏),并且对发送的信息量也有限制(最多 100 个字符).好,看个例子,上简单登录界面的代码: 登

php9个超全局变量的用法详解(一)

PHP 中的许多预定义变量都是"超全局的",这意味着它们在一个脚本的全部作用域中都可用.在函数或方法中无需执行 global $variable; 就可以访问它们. 这些超全局变量是: $GLOBALS $_SERVER $_GET $_POST $_FILES $_COOKIE $_SESSION $_REQUEST $_ENV 1.先看一下$GLOBALS,它是包含了全部变量的全局组合数组,什么意思呢,看一个c语言程序 int main() { int a = 3; void t(

C++ Iostreams用法详解(四)缓冲区

在前面说到过每一个iostream对象都有一个缓冲区,我们称之为流缓冲区,那个这个所谓的流缓冲区是怎 么存在的呢?iostreams中将该流缓冲区抽象为一个类,即streambuf类. 每个iostream的类都会包含 一个指向streambuf对象的指针,这也就意味着我们可以直接的去访问到这个指针,并向该streambuf对象发送 消息等(但是一般情况下我们并不需要这样做). 既然说我们可以得到这个指针,那isotreams类当然 会提供访问的接口了,这就是const成员函数rdbuf(),它

C++ Iostreams用法详解(三)状态标志位

iostreams中共有四个状态标志位定义在ios_base中,具体如下: namespace std { class ios_base { public: typedef implementation-defined-bitmask-type iostate; static const iostate badbit; static const iostate eofbit; static const iostate failbit; static const iostate goodbit;

C++ Iostreams用法详解(二)标准输入输出

首先说我们最常用的两个全局对象cin和cout,以下摘自MSDN: You can then extract values from cin or wcin to read the standard input. The rules for doing so are outlined in the description of the class basic_istream Class. You can also insert values to cout or wcout to write t

JDBC日期处理用法详解

JDBC日期处理用法详解,可以作为一个连接JDBC的标准类 package JDBC; import java.sql.Connection; import java.sql.Date; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.DriverManager; import java.sql.Statement; import java.sql.Time; import java.sql.Tim