免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 920 | 回复: 0
打印 上一主题 下一主题

命令行妙用 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-31 14:37 |只看该作者 |倒序浏览

                sunfengxi@sunfengxi-laptop:~$ history
  ...
  131  cd programming/
  132  ls
  133  vim shangji1.c
  134  cp shangji1.c ~/experiment/suanfa/1/
  135  cd ..
  136  ls
  137  rm p4-2.c
如果想重新执行 cp shangji1.c ~/experiment/suanfa/1/  只要用下面的命令
:~$ !134
这个对于短命令没什麽帮助,但是对于长命令就很有帮助了。
如果你感兴趣,可以用用。
这是我偶然在网上看到的,自己试了试,挺好用的。
还有下面的:
sunfengxi@sunfengxi-laptop:~$ ls experiment/system/linux-test/
sunfengxi@sunfengxi-laptop:~$ cd experiment/system/linux-test/
这两个命令的参数是一致的,这时,可以用“!” 来获得上一个命令的参数了.如下:
sunfengxi@sunfengxi-laptop:~$ ls experiment/system/linux-test/
sunfengxi@sunfengxi-laptop:~$ cd !:$
“!”会提示shell获得上面的命令的某部分,作为当前的输入,比如$表示结尾,那就是获得了ls命令的最后一个参数(其实这里也是第一个参数).
sunfengxi@sunfengxi-laptop:~/公共的$ tar zxvf gtk+-2.16.6.tar.bz2
这显然是一个错误的输入,大家都知道bz2是使用bzip解压缩的,对应的tar参数,应当是使用”jxvf”. 那我们可以立即这样修正它:
sunfengxi@sunfengxi-laptop:~/公共的$ tar jxvf !:2
“!:2″会获得上面tar命令的第2个参数,作为当前的输入. 获取的历史输入,并不只是可以单独使用,也可以作为命令的一部分象这样:
sunfengxi@sunfengxi-laptop:~/公共的$ tar zxvf gtk+-2.16.6.tar.bz2
sunfengxi@sunfengxi-laptop:~/公共的$ tar jxvf !:2 -C /usr/tmo
执行完上面的获取,命令被替换成了 tar jxvf gtk+-2.16.6.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中的这时候另一个更有趣的命令派上用场了,
“^”号(替换)
sunfengxi@sunfengxi-laptop:~/公共的$ ^mo^mp
这会把上一个命令行里的mo替换成mp
一些有用的历史命令
!是bash和shell默认的历史替换符号
!!                重复最后一个命令
!: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)
命令行编程 shell是直接支持命令行编程的.
下面是我参考的文章的网址,然后自己都试了,如果你也感兴趣,也去看看:
http://blog.csdn.net/zqy2000zqy/archive/2006/08/29/1137921.aspx
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/93710/showart_2083441.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP