Calvin's Tech Space

          成于堅(jiān)忍,毀于浮躁

             :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理

          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ì)簡(jiǎn)短容易的命令來說,可能沒什么用處,但是對(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
          這樣的長(zhǎng)命令,可能就有點(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è)長(zhǎng)點(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è)簡(jiǎn)單的應(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
          posted on 2010-10-11 15:44 calvin 閱讀(2165) 評(píng)論(0)  編輯  收藏 所屬分類: Linux
          主站蜘蛛池模板: 逊克县| 乌兰察布市| 获嘉县| 渭南市| 灵川县| 大厂| 咸宁市| 聂拉木县| 万荣县| 延寿县| 清涧县| 祁连县| 特克斯县| 宾阳县| 英德市| 攀枝花市| 华宁县| 茌平县| 无为县| 库伦旗| 老河口市| 浦县| 武安市| 石景山区| 平罗县| 绿春县| 乌兰浩特市| 留坝县| 沙洋县| 台中县| 许昌市| 什邡市| 阜宁县| 合川市| 绥宁县| 新安县| 中山市| 昌乐县| 金溪县| 龙门县| 个旧市|