Linux Bash系列教程(2)-使用历史命令扩展

Bash系列教程目录:

  1. Bash系列教程(10)-流程控制之 case条件判断
  2. Bash系列教程(9)-流程控制之 if条件判断
  3. Bash系列教程(8)-Bash 数组变量用法详解
  4. Bash系列教程(7)-Bash 变量高级特性
  5. Bash系列教程(6)-Bash 变量基础
  6. Bash系列教程(5)-内置命令介绍
  7. Bash系列教程(4)-文件描述符(file descriptor)与 I/O重定向(redirection)
  8. Bash系列教程(3)-命令行中多条命令组合和运行控制
  9. Bash系列教程(2)-使用历史命令扩展
  10. Bash系列教程(1)-命令行中快速输入和修改 bash (快捷键组合)

上一篇Bash系列教程(1)-命令行中快速输入和修改 bash (快捷键组合),我们讲述了命令行到基本的基本编辑功能,和使用快捷键快速到输入和编辑命令行中命令的功能。除了通过键入命令之外,我们平时在命令行中会多次使用同一条或者相似到命令,假如我们能够快速使用之前执行过的命令那么我们就能更加快速的输入和执行命令,工作效率也将会大大提高。要达到次目的,我们就需要使用到 bash 的历史命令扩展。
我们一般从一下两个角度来使用历史命令扩展
1、调用历史命令
2、修改历史命令或者提取历史命令中我们需要的部分

历史命令记录在环境变量 $HISTFILE 所指的文件中,一般在用户目录的 .bash_history 文件中。
我们可以通过 history 命令查看和操作历史命令。
不带任何参数的 history 命令会显示所有到历史命令,

history -n           : 显示最后 n 条历史命令
history -d offset    : 删除第 offset 条历史命令
history -c           : 删除所有历史命令
history -r file      : 将 file 中的内容追加到历史命令记录文件中

可以通过制定命令编号和模糊匹配到办法调用历史命令。
根据历史命令编号调用:

!!                   : 调用上一条历史命令
!n                   : 调用编号为 n 到历史命令
!-n                  : 调用倒数第 n 条历史命令

模式匹配调用:

!cmd                 : 调用最近一个以 “cmd” 开头的历史命令
!?cmd?               : 调用最近一个包含 “cmd” 的历史命令

注:下文中使 CMD 表示通过以上方式选取到的历史命令

修改历史命令并调用

^find^replace^       : 将前一个历史命令中的 “find” 替换为 “replace”,然后调用此修改过的命令
CMD:s/find/replace/  : 将历史命令 CMD中 “find” 替换为 “replace”,然后调用此修改过的命令

提取历史命令中提取有用到部分
一般模式是这样的,选取我们要提取内容到命令这个就是上面将到方法;然后就是制定我们要提取到部分。

!#                   : 命令行中已输入的部分
CMD:$                : 提取历史命令 CMD中的最后一个参数
CMD:^                : 提取历史命令 CMD中的第一个参数
CMD:n                : 提取历史命令 CMD中的第 n个参数
CMD:n-m              : 提取历史命令 CMD中的第 n至第 m个参数
CMD:*                : 提取历史命令 CMD中的所有参数
CMD:h                : 提取将历史命令CMD 当作为一个文件路径并将文件名去掉的内容
CMD:t                : 提取将历史命令CMD 当作为一个文件路径并将目录去掉的内容
CMD:p                : 显示历史命令CMD 但不调用

7 Trackbacks

  1. By Bash系列教程目录 – 薹翮 on 2012 年 7 月 26 日 at 下午 5:00

    […] Bash系列教程(2)-使用历史命令扩展 […]

  2. […] 薹翮 我悄悄地离开,在昨天;今天我又静静地到来 SEO 查询工具   « Fedora16,17 安装完毕之后需要的配置和需要安装的软件(自动脚本) Bash系列教程(2)-使用历史命令扩展 » […]

  3. By Bash系列教程(5)-内置命令介绍 – 薹翮 on 2012 年 7 月 28 日 at 下午 2:32

    […] Bash系列教程(2)-使用历史命令扩展 […]

  4. […] Bash系列教程(2)-使用历史命令扩展 […]

  5. By Linux Bash系列教程(6)-Bash 变量基础 – 薹翮 on 2012 年 8 月 7 日 at 上午 12:42

    […] Bash系列教程(2)-使用历史命令扩展 […]

  6. By Linux Bash系列教程(7)-Bash 变量高级特性 – 薹翮 on 2012 年 8 月 7 日 at 上午 12:43

    […] Bash系列教程(2)-使用历史命令扩展 […]

  7. […] Bash系列教程(2)-使用历史命令扩展 […]

Post a Comment

Your email is never shared. Required fields are marked *

*
*