Linux命令行下”!”的神奇用法

1、运行历史记录中的命令

/tmp/test>history 10
  225  ll 
  226  cat jishi 
  227  history 10
  228  ll
  229  mkdir d2
  230  touch abc
  231  ll -R
  232  ls
  233  cat abc 
  234  history 10

!命令号,就可以执行该条命令:

/tmp/test>!232
ls
abc  d1  d2  jishi

 

2、执行指定的之前执行过的命令

你可以运行 !-1、!-2 或者 !-7 等命令来执行你记录序列中的倒数第一条命令、倒数第二条命令已经倒数第七条等等。。。和上面的方式一样,你需要先用 history 命令来列出命令列表。

 

3、向一条新命令传递旧命令的参数避免重复输入

尤其在参数长的时候,这种用法特别好用。

/>ls /tmp/test/abc
/tmp/test/abc
/>cat !$
cat /tmp/test/abc
abc file content

 

4、如何用(!)处理两个以上的参数?

例如拷贝abc到d1目录下

/tmp/test>ls
abc  d1  d2  jishi
/tmp/test>cp abc d1/abc

这样我们就向CP命令传递了两个参数。第一个是 ‘abc’ ,第二个是’d1/abc’,为了区分它们,我们使用 echo 来打印每个参数。

/tmp/test>echo !^
echo abc
abc
/tmp/test>echo !cp:2
echo d1/abc
d1/abc

可以注意到第一个参数可以使用 “!^” 来表示,剩下的参数就可以使用 “命令名:参数序号”这种方式来表示,比如 “!cp:2″。

再举个例子,如果你执行的某个命令为 “xyz”,命令 后面有5个参数而你想调用第四个参数,就可以使用 “!xyz:4″ 来调用它。当然,你可以使用 “!* “ 来表示所有参数。

 

5、通过关键词来执行之前的命令

格式:!命令

例如:

!ls为再次运行上次运行过的ls命令(省得再输入参数);
!echo为再次运行上次运行过的echo命令。

 

6、!! 最后一次运行的命令

这里,用!!代替了最后一次执行的echo abcd。

/tmp/test>echo abcd
abcd
/tmp/test>!!>afile
echo abcd>afile
/tmp/test>cat afile 
abcd

 

7、使用 !(文件名) 的方式来避免命令对某个文件的影响

如删除文件:

/tmp/test>ls
abc  afile  d1  d2  jishi
/tmp/test>shopt -s extglob #注意,需要开启extglob模式
/tmp/test>rm -rf !(jishi|d1|d2)
/tmp/test>ls
d1  d2  jishi

 

8、判断目录是否存在

[ ] 部分是判断表达式,-d 表示判断是否是目录(directory)。

/tmp/test>[ -d /tmp/test ] && echo yes || echo no #如果是目录,打印yes,否则打印no
yes
/tmp/test>[ ! -d /tmp/test ] && echo yes || echo no #如果不是目录,打印yes,否则打印no
no

 

参考:

http://www.linuxidc.com/Linux/2015-05/117774.htm

http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763105e8d3d4f07dd743ca080462482d45f93130a1c187ba0fc7063565f8e99616706ae4256eaf23c76200357eddd97d65e98e6d27e20d66623716c913061c468aadc4755d651e34d99af0e96bbe74295b9d3a3c82253dd24056df1809c2a71&p=8b2a971889d203ff57ee93744e0a94&newp=c467c54ad5c44be50be29634615ebb23161cda386a848d0a3b8fd125926e4f171c0ba7ec67634b598fca786101ad4c5debf53274350125b499ca8e49d8afd4456edf653b2740d00b&user=baidu&fm=sc&query=%21ls%CA%C7%CA%B2%C3%B4%D2%E2%CB%BC&qid=960818a20006c419&p1=4

posted @ 2017-05-26 10:11  夜雨西风  阅读(943)  评论(0)    收藏  举报