<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 閱讀(2159) 評論(0)  編輯  收藏 所屬分類: Linux
    主站蜘蛛池模板: 爽爽日本在线视频免费| 精品无码无人网站免费视频| 在线观看国产情趣免费视频 | 久久WWW色情成人免费观看| 久久久婷婷五月亚洲97号色| 国产色无码精品视频免费| 亚洲女初尝黑人巨高清| 成年女性特黄午夜视频免费看 | 亚洲国产精品18久久久久久| 成人性生交大片免费看无遮挡| 亚洲天堂2017无码中文| 成年女人毛片免费播放视频m| 亚洲精品日韩一区二区小说| 免费**毛片在线播放直播| 亚洲第一区香蕉_国产a| 99re在线视频免费观看| 亚洲午夜一区二区电影院| 99精品国产免费久久久久久下载| 中文字幕亚洲日本岛国片| 精品国产污污免费网站入口| 亚洲综合国产精品| 永久免费的网站在线观看| 亚洲丶国产丶欧美一区二区三区 | 久久夜色精品国产亚洲| 亚洲免费闲人蜜桃| 国产精品亚洲精品久久精品 | 亚洲国产午夜中文字幕精品黄网站 | 在线涩涩免费观看国产精品| 亚洲精品中文字幕乱码影院| 成人毛片视频免费网站观看| 日韩大片免费观看视频播放 | 免费精品国产自产拍观看| 中文字幕无码免费久久9一区9| 久久精品a亚洲国产v高清不卡| 精品国产一区二区三区免费看| 性生大片视频免费观看一级| 亚洲AV无码成人精品区在线观看| 国产在线国偷精品产拍免费| 成人A毛片免费观看网站| 亚洲Av无码一区二区二三区| 国产精品亚洲mnbav网站 |