飛快的使用命令列

來源:互聯網
上載者:User
 曆史特性

使用history命令可以調出曆史曾經用過的命令列表
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

如果你想重新執行"cd /usr/local/src" 那就可以直接這樣調出曆史:

shell> !995
對簡短容易的命令來說,可能沒什麼用處,但是對於

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

擷取上個命令中的某個參數.
比如你執行了如下的操作

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

shell> ls /bin/sh
shell> file !:$
"!"會提示shell獲得上面的命令的某部分,作為當前的輸入,比如$表示結尾,那就是獲得了ls命令的最後一個參數(其實這裡也是第一個參數.

再來看一個長點的。

shell> tar zxvf httpd-2.0.59.tar.bz2
這顯然是一個錯誤的輸入,大家都知道bz2是使用bzip解壓縮的,對應的tar參數,應當是使用"jxvf". 那我們可以立即這樣修正它:

shell> tar jxvf !:2
"!:2"會獲得上面tar命令的第2個參數,作為當前的輸入. 擷取的曆史輸入,並不只是可以單獨使用,也可以作為命令的一部分象這樣:

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

"^"號(替換)
shell> ^mo^mp
這會把上一個命令列裡的mo替換成mp
神奇吧,你的指法再快,只是在浪費時間,我輕敲6個字元,就搞定了上面的錯誤.

一些有用的曆史命令

!是bash和cshell預設的曆史替換符號
!!                重複最後一個命令
!:s/xy/yx        這個命令會把最後一個命令裡的xy替換成yx
比如etho xy !:s/xy:/yx

!so                重複最近以so開始的命令
!?fn?                重複最近喊有fn的命令,在某個參數中或某個命令的名稱中都可以使用
!32                執行號碼為32的命令
!! &                會在最後一個命令的末尾加上& (可以加上任意內容)
!:0                挑選出命令的名稱,而不是整行
!:3                第參數
!:2-4                第2到4個參數
!:-3                從第0個到第三個參數
!^                第一個參數
!$                最後一個參數
!*                第一個到最後一個參數
!:2*                第2個到最後一個
!:2-                從第2個開始,但不要結尾參數
!?fn?%                給出第一個包含 fn的次(sort fn1 fn2 fn3 ...   =>echo !?fn?%        =>echo fn1)
命令列編程 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個命令.

別急,這不會花費你幾秒鐘的時間;

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

這隻是一個簡單的應用,其實你還可以加上判斷,把gz和bz2,rar什麼的分別用不同的程式解壓縮.

使用sed和shell配合,你甚至可以一次修改一大堆的虛擬機器主機設定檔中的主目錄:

sh > for i in `ls`
sh > do
sh > sed -i  's///home/////disk1///home///g/' $i
sh > done
大搬家!把所有使用者的虛擬機器主機都從/home搬遷到/disk1/home中了.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.