shell历史机制

!!                          前一个命令
!n                         前面第n个命令
!str                       最后一个以str开始的命令
!?str                     最后一个包含str的命令
^str1^str2           用str2替换前一个命令的str1

!:n                        引用前一个命令的第n个单词, 比如前一个命令是cat a.txt, 则!:0是cat, !:1是a.txt
!:x-y                     引用前一个命令的第x到第y个单词, 比如前一个命令是cat a.txt b.txt, 则!:0-1就是cat a.txt
!^                         引用前一个命令的第1个参数, 比如前一个命令是cat a.txt b.txt, 则!^是a.txt
!$                         引用前一个命令的最后一个参数, 比如前一个命令是cat a.txt b.txt, 则!$是b.txt

!!:p                       打印前一个命令但不执行(同样可用于!str, !?str等)
!!:s/old/new/        替换前一个命令中的第一个old为new并执行(同样可用于!str, !?str等)

历史机制格式为

事件标志符[:单词标志符][:修改符]

一个完整的使用例子是, 你前一个命令是ls abc.txt, 现在想删除abc.txt, 但删除之前想先看看这个命令而不真执行,就可以用
rm !!:$:p

其中!!是事件标志符, $是单词标志符, p是修改符, 它们之间用冒号分隔.上面这个历史机制可简写为rm !$:p

posted on 2007-04-25 12:57  hunter_gio  阅读(265)  评论(0)    收藏  举报

导航