日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux Shell History (快速使用Linux命令)

發(fā)布時(shí)間:2025/3/21 linux 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux Shell History (快速使用Linux命令) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
============================================================================================================================ 這里提到了history,那么不得不說在linux下還是ctr+r(用途:反向搜索執(zhí)行過的命令(reverse-i-search))更為常用和易用。 當(dāng)然,!^、!$、!:num-num的方式獲取上一命令的參數(shù)是基本操作技巧。 ^mo^mp這會(huì)把上一個(gè)命令行里的mo替換成mp,這就少見了,非常有用。類似sqlplus下的c/mo/mp替換功能。
============================================================================================================================

Linux 歷史特性

使用history命令可以調(diào)出歷史曾經(jīng)用過的命令列表
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

如果你想重新執(zhí)行"cd /usr/local/src" 那就可以直接這樣調(diào)出歷史:
shell> !995
對(duì)簡短容易的命令來說,可能沒什么用處,但是對(duì)于

cd /usr/local/src/ZendOptimizer-3.0.0-linux-glibc21-i386
./configure --prefix=/usr/local/gd --without-x --without-freetype --without-fontconfig --without-png
這樣的長命令,可能就有點(diǎn)幫助了,

獲取上個(gè)命令中的某個(gè)參數(shù).
比如你執(zhí)行了如下的操作

shell> ls /bin/sh
shell> file /bin/sh
比較一下,兩個(gè)命令的參數(shù)是一樣的,這時(shí)候,你就可以使用"!"來獲得上一個(gè)命令的參數(shù)了.如下:

shell> ls /bin/sh
shell> file !:$
"!"會(huì)提示shell獲得上面的命令的某部分,作為當(dāng)前的輸入,比如$表示結(jié)尾,那就是獲得了ls命令的最后一個(gè)參數(shù)(其實(shí)這里也是第一個(gè)參數(shù).

再來看一個(gè)長點(diǎn)的。

shell> tar zxvf httpd-2.0.59.tar.bz2
這顯然是一個(gè)錯(cuò)誤的輸入,大家都知道bz2是使用bzip解壓縮的,對(duì)應(yīng)的tar參數(shù),應(yīng)當(dāng)是使用"jxvf". 那我們可以立即這樣修正它:

shell> tar jxvf !:2
"!:2"會(huì)獲得上面tar命令的第2個(gè)參數(shù),作為當(dāng)前的輸入. 獲取的歷史輸入,并不只是可以單獨(dú)使用,也可以作為命令的一部分象這樣:

shell> tar zxvf httpd-2.0.59.tar.bz2
shell> tar jxvf !:2 -C /usr/tmo
執(zhí)行完上面的獲取,命令被替換成了tar jxvf httpd-2.0.59.tar.bz2 -C /usr/tmo
那就會(huì)按照-C指定的路徑把包解壓縮到/usr/tmo中.
命令執(zhí)行后的結(jié)果:
tar: /usr/tmo: Cannot chdir: No such file or directory
tar: Error is not recoverable: exiting now
sorry,我一不小心又敲錯(cuò)了.我本來是想解壓縮到/usr/tmp中的這時(shí)候另一個(gè)更有趣的命令派上用場(chǎng)了,

"^"號(hào)(替換)
shell> ^mo^mp
這會(huì)把上一個(gè)命令行里的mo替換成mp
神奇吧,你的指法再快,只是在浪費(fèi)時(shí)間,我輕敲6個(gè)字符,就搞定了上面的錯(cuò)誤.

一些有用的歷史命令

!是bash和cshell默認(rèn)的歷史替換符號(hào)
!!? ? ? ? ? ? ? ? 重復(fù)最后一個(gè)命令
!:s/xy/yx? ? ? ? 這個(gè)命令會(huì)把最后一個(gè)命令里的xy替換成yx
比如etho xy !:s/xy:/yx

!so? ? ? ? ? ? ? ? 重復(fù)最近以so開始的命令
!?fn?? ? ? ? ? ? ? 重復(fù)最近喊有fn的命令,在某個(gè)參數(shù)中或某個(gè)命令的名稱中都可以使用
!32? ? ? ? ? ? ? ? 執(zhí)行號(hào)碼為32的命令
!! &? ? ? ? ? ? ?? 會(huì)在最后一個(gè)命令的末尾加上& (可以加上任意內(nèi)容)
!:0? ? ? ? ? ? ? ? 挑選出命令的名稱,而不是整行
!:3? ? ? ? ? ? ? ? 第參數(shù)
!:2-4? ? ? ? ? ? ? 第2到4個(gè)參數(shù)
!:-3? ? ? ? ? ? ?? 從第0個(gè)到第三個(gè)參數(shù)
!^? ? ? ? ? ? ? ?? 第一個(gè)參數(shù)
!$? ? ? ? ? ? ? ?? 最后一個(gè)參數(shù)
!*? ? ? ? ? ? ? ?? 第一個(gè)到最后一個(gè)參數(shù)
!:2*? ? ? ? ? ? ?? 第2個(gè)到最后一個(gè)
!:2-? ? ? ? ? ? ?? 從第2個(gè)開始,但不要結(jié)尾參數(shù)
!?fn?%? ? ? ? ? ?? 給出第一個(gè)包含 fn的次(sort fn1 fn2 fn3 ...? ?=>echo !?fn?%? ? ? ? =>echo fn1)

更c(diǎn)ool的,請(qǐng)參
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個(gè)命令.

別急,這不會(huì)花費(fèi)你幾秒鐘的時(shí)間;

sh > for i in `ls *z`
sh > do
sh > tar zxvf $i
sh > done
眼暈了吧,不一會(huì)所有的包都解壓縮了。

這只是一個(gè)簡單的應(yīng)用,其實(shí)你還可以加上判斷,把gz和bz2,rar什么的分別用不同的程序解壓縮.

使用sed和shell配合,你甚至可以一次修改一大堆的虛擬主機(jī)配置文件中的主目錄:

sh > for i in `ls`
sh > do
sh > sed -i??'s/\/home\//\/disk1\\/home\//g\' $i
sh > done
大搬家!把所有用戶的虛擬主機(jī)都從/home搬遷到/disk1/home中了.


轉(zhuǎn)自:http://blog.chinaunix.net/u/76/showart_155742.html
Yorking Alan

總結(jié)

以上是生活随笔為你收集整理的Linux Shell History (快速使用Linux命令)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。