<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Calvin's Tech Space

    成于堅忍,毀于浮躁

       :: 首頁 :: 聯系 :: 聚合  :: 管理

    Linux 歷史特性

    使用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)

    更cool的,請參
    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個命令.

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

    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中了.

    轉自:http://blog.chinaunix.net/u/76/showart_155742.html
    posted on 2010-10-11 15:44 calvin 閱讀(2158) 評論(0)  編輯  收藏 所屬分類: Linux
    主站蜘蛛池模板: 亚洲va久久久噜噜噜久久狠狠| 亚洲成AV人在线观看网址| 亚洲成A人片777777| 皇色在线免费视频| 亚洲精品岛国片在线观看| 亚洲av无码成人精品区一本二本| 日本高清免费aaaaa大片视频| 亚洲www77777| 国产午夜免费福利红片| 黄色网址免费在线| 亚洲精品色婷婷在线影院| 久久免费99精品国产自在现线| 奇米影视亚洲春色| 免费黄网站在线看| 亚洲成人黄色在线观看| 美女视频黄是免费的网址| 亚洲香蕉久久一区二区| 亚洲欧洲自拍拍偷精品 美利坚| 老外毛片免费视频播放| 国内大片在线免费看| 国产精品久久久久久亚洲影视| 国产成人无码免费视频97| 色屁屁www影院免费观看视频| 亚洲午夜AV无码专区在线播放| 今天免费中文字幕视频| 亚洲国产韩国一区二区| 日韩精品视频免费网址| 国产精品免费久久久久电影网| 亚洲欧洲免费视频| 国产免费久久精品99re丫y| 国产亚洲视频在线播放大全| 国产亚洲成人久久| 最近2022中文字幕免费视频 | 亚洲国产精品精华液| 亚洲国产婷婷综合在线精品| 免费无码一区二区三区蜜桃| 亚洲日韩中文字幕| 午夜亚洲av永久无码精品| 久久久久免费精品国产 | 亚洲av日韩专区在线观看| 亚洲性日韩精品一区二区三区 |