============================================================================================================================
这里提到了history,那么不得不说在linux下还是ctr+r(用途:反向搜索执行过的命令(reverse-i-search))更为常用和易用。
当然,!^、!$、!:num-num的方式获取上一命令的参数是基本操作技巧。
^mo^mp这会把上一个命令行里的mo替换成mp,这就少见了,非常有用。类似sqlplus下的c/mo/mp替换功能。
============================================================================================================================
Linux 历史特性

使用history命令可以调出历史曾经用过的命令列表
shell> history
994  cat config.nice
995  cd /usr/local/src
996  ls
997  cd /usr/src
998  ls
999  dmesg
1000  history
1001  history 100

如果你想重新执行"cd /usr/local/src" 那就可以直接这样调出历史:
shell> !995
对简短容易的命令来说,可能没什么用处,但是对于

cd /usr/local/src/ZendOptimizer-3.0.0-linux-glibc21-i386
./configure --prefix=/usr/local/gd --without-x --without-freetype --without-fontconfig --without-png
这样的长命令,可能就有点帮助了,

获取上个命令中的某个参数.
比如你执行了如下的操作

shell> ls /bin/sh
shell> file /bin/sh
比较一下,两个命令的参数是一样的,这时候,你就可以使用"!"来获得上一个命令的参数了.如下:

shell> ls /bin/sh
shell> file !:$
"!"会提示shell获得上面的命令的某部分,作为当前的输入,比如$表示结尾,那就是获得了ls命令的最后一个参数(其实这里也是第一个参数.

再来看一个长点的。

shell> tar zxvf httpd-2.0.59.tar.bz2
这显然是一个错误的输入,大家都知道bz2是使用bzip解压缩的,对应的tar参数,应当是使用"jxvf". 那我们可以立即这样修正它:

shell> tar jxvf !:2
"!:2"会获得上面tar命令的第2个参数,作为当前的输入. 获取的历史输入,并不只是可以单独使用,也可以作为命令的一部分象这样:

shell> tar zxvf httpd-2.0.59.tar.bz2
shell> tar jxvf !:2 -C /usr/tmo
执行完上面的获取,命令被替换成了tar jxvf httpd-2.0.59.tar.bz2 -C /usr/tmo
那就会按照-C指定的路径把包解压缩到/usr/tmo中.
命令执行后的结果:
tar: /usr/tmo: Cannot chdir: No such file or directory
tar: Error is not recoverable: exiting now
sorry,我一不小心又敲错了.我本来是想解压缩到/usr/tmp中的这时候另一个更有趣的命令派上用场了,

"^"号(替换)
shell> ^mo^mp
这会把上一个命令行里的mo替换成mp
神奇吧,你的指法再快,只是在浪费时间,我轻敲6个字符,就搞定了上面的错误.

一些有用的历史命令

!是bash和cshell默认的历史替换符号
!!                重复最后一个命令
!:s/xy/yx        这个命令会把最后一个命令里的xy替换成yx
比如etho xy !:s/xy:/yx

!so                重复最近以so开始的命令
!?fn?              重复最近喊有fn的命令,在某个参数中或某个命令的名称中都可以使用
!32                执行号码为32的命令
!! &               会在最后一个命令的末尾加上& (可以加上任意内容)
!:0                挑选出命令的名称,而不是整行
!:3                第参数
!:2-4              第2到4个参数
!:-3               从第0个到第三个参数
!^                 第一个参数
!$                 最后一个参数
!*                 第一个到最后一个参数
!:2*               第2个到最后一个
!:2-               从第2个开始,但不要结尾参数
!?fn?%             给出第一个包含 fn的次(sort fn1 fn2 fn3 ...   =>echo !?fn?%        =>echo fn1)

更cool的,请参
man 3 history
和其他的一些man page

命令行编程 shell是直接支持命令行编程的. 比如:

sh > /usr/local/src
sh > ls *z

--------------------------------------------------------------------------------

ZendOptimizer-3.0.0-linux-glibc21-i386.tar.gz  mod_fastcgi-2.4.2.tar.gz
dia-0.94.tar.gz                                mod_fcgid.1.10.tar.gz
gd-2.0.33.tar.gz                               mysql-4.0.27.tar.gz
jpegsrc.v6b.tar.gz                             mysql-standard-4.0.26-pc-linux-gnu-i686-glibc23.tar.gz
lighttpd-1.4.11.tar.gz

--------------------------------------------------------------------------------

开工了,我要把这些东西装起来,解压缩吧,好多呀,要敲n个命令.

别急,这不会花费你几秒钟的时间;

sh > for i in `ls *z`
sh > do
sh > tar zxvf $i
sh > done
眼晕了吧,不一会所有的包都解压缩了。

这只是一个简单的应用,其实你还可以加上判断,把gz和bz2,rar什么的分别用不同的程序解压缩.

使用sed和shell配合,你甚至可以一次修改一大堆的虚拟主机配置文件中的主目录:

sh > for i in `ls`
sh > do
sh > sed -i  's/\/home\//\/disk1\\/home\//g\' $i
sh > done
大搬家!把所有用户的虚拟主机都从/home搬迁到/disk1/home中了.

转自:http://blog.chinaunix.net/u/76/showart_155742.html

Yorking Alan

Linux Shell History (快速使用Linux命令)相关推荐

  1. Linux Shell CentOS 写一个输出命令 支持颜色

    文章目录 Linux Shell CentOS 写一个输出命令 支持颜色 相关阅读 1.代码 2.演示 Linux Shell CentOS 写一个输出命令 支持颜色 相关阅读 Linux Shell ...

  2. linux获取文件的md5,linux shell 获取文件md5的命令linux操作系统 -电脑资料

    下面我给各位朋友总结一下在linux中利用shell命令来获取文件md5及遍历目录下所有文件的md5的例子,希望此例子对各位同学会有所帮助, 获取文件的MD5值: $ md5sum linuxmint ...

  3. linux下history(历史)命令用法详解

    如果你经常使用 Linux 命令行,那么使用 history(历史)命令可以有效地提升你的效率.本文将通过实例的方式向你介绍 history 命令的15个用法. 1. 使用 HISTTIMEFORMA ...

  4. linux shell比大小expr,Linux shell命令中expr(示例代码)

    在Linux shell命令中expr虽然不是很起眼,但是它的作用是非常大的!到目前为止,我个人看来最大的作用就是两个--四则运算和字符串的操作. 先说四则运算,在Shell中四则运算不能简简单单的加 ...

  5. Linux shell 日期,时间相关的命令

    在shell开发中,经常要用到跟获取日期相关的东西,这里记录一下Linux shell 获取日期的方法 获取当前日期:today=`date +"%Y-%m-%d"` 获取昨天的日 ...

  6. linux shell编程多线程和wait命令学习

    http://blog.csdn.net/shuanghujushi/article/details/38186303 最近在使用shell做一些部署工作,在使用过程中,效率一直不高.想提高效率,经过 ...

  7. linux shell $0怎么输出,linux shell中$0,$?,$!等的特殊用法

    一.Shell脚本中$0.$?.$!.$$.$*.$#.$@等的意义说明 (1)$$ Shell本身的PID(ProcessID,即脚本运行的当前进程ID号) (2)$! Shell最后运行的后台Pr ...

  8. linux shell程序设计实验报告,linux的shell脚本实验报告

    <linux的shell脚本实验报告>由会员分享,可在线阅读,更多相关<linux的shell脚本实验报告(7页珍藏版)>请在人人文库网上搜索. 1.第二次实验内容一.实验名称 ...

  9. linux shell 当前用户名,在Linux中使用Whoami命令显示当前登录用户名称及替代命令的方法...

    本文介绍在Linux操作系统中使用Whoami命令的方法,顾名思义,whoami命令显示有效用户ID的用户名,换句话说,它显示当前登录用户的名称. 使用whoami命令的方法 whoami命令的语法如 ...

最新文章

  1. 搭建Eclipse+MyEclipse开发环境
  2. 工业项目,用MCU还是PLC?
  3. 打怪升级,在线练习编程的神器!
  4. 关于Log4j的初始化
  5. codeforce303C-Minimum Modular-剪枝,暴力
  6. Dreamweaver的jquery插件
  7. C++重载运算符的规则详解
  8. 转:Kafka、RabbitMQ、RocketMQ消息中间件的对比 —— 消息发送性能 (阿里中间件团队博客)...
  9. vba随机抽取人名不重复_excel启用宏,通过vba实现从数字数组里随机获取N个不重复的数字...
  10. gdal、geos的 windows编译 openCL加速
  11. python word 英语音标_完整word版,英语音标大全,推荐文档
  12. U8g2 图形库必备!试试这几个即时生效的界面工具
  13. Android手机端编程开发软件合集(一)
  14. 梯度消失\梯度爆炸(Vanishing/exploding gradients)与解决方案
  15. win10 64位装三菱PLC软件出现oleaut32.dll拒绝访问
  16. 怎么隐藏CAD文件里的图层?
  17. Tensorflow keras中实现语义分割多分类指标:IOU、MIOU
  18. ES6解构赋值: ES6...转为ES5的写法
  19. java中矩形和圆形的周长面积_抽象类实现圆和矩形周长和面积的计算
  20. 牙齿松动怎么办|成年人牙齿松动怎么办

热门文章

  1. 解决iIntelliJ IDEA中新建servlet后,报错cannot resolve symbol ‘HttpServletRequest‘的问题
  2. 数据结构实验之图论二:图的深度遍历(DFS)
  3. 相似三角形_JAVA
  4. linux换源 最最简单
  5. 【自动驾驶】13. Apollo交通信号灯感知
  6. Nodejs开源项目推荐
  7. Java SE7新特性之try-with-resources语句
  8. JDK7与JDK8中HashMap的实现
  9. Hadoop学习笔记—4.初识MapReduce
  10. 编程之美-中国象棋将帅问题方法整理