比如,你想查看某個文件,但是忘了輸入more:

$ /opt/user/test.txt #忘記輸入more
$ more !! #這樣是不是快多了?

使用!!是不是方便多了?

使用上個命令第一個或最后一個的參數執行命令

使用上條命令最后一個參數

比如,你在使用ls列出目錄內容時,沒有帶任何參數,但是想再次執行,帶上-al參數,又不想輸入長長的參數,可以使用下面的方式:

$ ls /proc/1/task/1/net/tcp
/proc/1/task/1/net/tc
$ ls -al !$
ls -al /proc/1/task/1/net/tcp
-r--r--r-- 1 root root 0 12月 22 17:30 /proc/1/task/1/net/tcp

這里的!$代表了上一條命令的最后一個參數。

使用上條命令第一個參數

而使用上條命令的第一個參數只需要使用!^,例如:

$ ls -al !^

去掉最后一個參數執行上一個命令

如果想執行上條命令,但不想帶上最后一個參數:

$ ls -al dir #假設dir是一個很長的字符串
$ !:-
ls -al

什么場景下可能會用呢?比如你上一條命令最后一個參數是一個長長的字符串,而你恰好不想不用它,并且退格鍵刪除又慢的時候,可以使用上面的方法。

使用上條命令的所有參數

前面說了使用上條命令的最后一個參數,那如果不是最后一個參數,該如何使用呢?很簡單,使用!*即可。例如我們在輸入find命令輸錯了,想要糾正的時候:

$ fin -name "test.zip" #這里find輸錯了。
$ find !*
find ./ -name "test.zip"
./workspaces/shell/find/test.zip
./workspaces/shell/test.zip

使用上條命令指定的參數

有的讀者可能會問了,如果我只想用其中某個參數呢?按照![命令名]:[參數號]的規則即可。例如:

$ cp -rf dira dirb/ #將dira拷貝到dirb
$ ls -l !cp:2  #查看dira的內容
ls -l dira
total 0
-rw-rw-r-- 1 hyb hyb 0 12月 22 17:45 testfile

當上條命令的參數很長,而你需要取用中間的某個參數時,效果就比較明顯了。

執行history中的命令

我們都知道可以通過history命令可以查看之前執行過的命令,但是如何再次執行history中的命令呢?我們可以通過“UP”鍵可以查看,但是歷史命令很長的時候,并不是很方便,這個時候“!”便派上了用場:

$ history
(這里省略更多內容)
2043 touch ./dira/testfile
 2044 cp -rf dira dirb/
 2045 ls -al dira
 2046 ls -l dira
 2047 ls -al dira
 2048 ls -l dira
 2049 ls -al dira
 2050 ls -l dira
 2051 history

我們可以看到,history命令出來可以看到之前執行過的命令,也會看到它前面帶了一個數值。如果我們想執行前面的cp -rf dira dirb/命令,實際上只要用下面的方式即可:

$ !2044 #2044是執行的第n條命令
cp -rf dira dirb/

即通過![歷史命令數值]的方式執行歷史命令。

當然了,如果我們想執行倒數第二條命令,也是有方法的:

$ !-2 #感嘆號后面跟著一個負數,負幾代表倒數第幾條

按照關鍵字執行歷史命令

!可以根據關鍵字執行命令。

執行上一條以關鍵字開頭的命令

例如,執行上一條find命令:

$ !find #執行上條以find開頭的命令

執行上一條包含關鍵字的命令

再例如,執行上一條包含name的命令:

$ find ./ -name "test"
./test
./find/test
$ !?name?
find ./ -name "test"
./test
./find/test

替換上條命令的參數

例如:

$ find ./ -name "old*" -a -name "*.zip"

如果我們需要將這條命令中的old更換為new:

$ !!:gs/old/new

邏輯非的作用

這個是它最為人所熟悉的作用,例如刪除除了cfg結尾以外的所有文件:

rm !(*.cfg) #刪除需謹慎

這里就不再詳述。

總結

驚嘆號”!”的作用確實有時候讓人驚嘆。前面可能只是提到!結合其他字符代表某個特定的含義的某種使用,實際上,我們可以組合或者擴展發現更多的妙用。這里不再展開。你還有什么好的發現?

贊(4)
聲明:本網站發布的內容(圖片、視頻和文字)以原創、轉載和分享網絡內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。郵箱:3140448839@qq.com。本站原創內容未經允許不得轉載,或轉載時需注明出處:三五互聯知識庫 » Linux中“!”感嘆號用法技巧大全

登錄

找回密碼

注冊

主站蜘蛛池模板: 久久99热精品这里久久精品| 国产av成人精品播放| 99精品国产一区二区三 | 亚洲国产精品综合久久2007| 亚洲国产成人综合自在线| 国产午夜福利视频在线| 激情综合网五月婷婷| 377人体粉嫩噜噜噜| 性高湖久久久久久久久| 丰满少妇内射一区| 中文字幕第一页亚洲精品| 宝贝腿开大点我添添公口述视频| 亚洲成在人线AⅤ中文字幕| 亚洲精品日韩在线观看| 欧美乱大交aaaa片if| 国产乱码一区二区三区免费 | 精品人妻午夜一区二区三区四区| 亚洲色偷偷色噜噜狠狠99| 国产熟女精品一区二区三区 | 国产又色又爽又高潮免费| 香港日本三级亚洲三级| 精品午夜福利在线视在亚洲| 国产精品乱码久久久久久小说 | 亚洲人成网站色7799| 三级三级三级A级全黄| 中文字幕不卡在线播放| 性欧美VIDEOFREE高清大喷水| 日韩丝袜人妻中文字幕| 亚欧洲乱码视频一二三区| 人妻少妇精品视频专区| 亚洲欧洲一区二区综合精品| 国内精品视频一区二区三区八戒 | 狠狠色噜噜狠狠狠狠777米奇| 国产精品国产高清国产av| 被灌满精子的少妇视频| 人妻精品久久无码区| 4hu四虎永久在线观看| 黄色免费在线网址| 国产av丝袜旗袍无码网站| 国产18禁黄网站禁片免费视频| 日韩精品人妻av一区二区三区|