事實是上,您可以不懂任何 shell ,就能使用 Linux 。您啟動系統(tǒng)后可以直接進入 X Window ,最后在 X Window 下關(guān)機。 我堅信,用 Linux 而不懂 shell ,就象開車只會用頭檔(first gear)一樣。當然,最初看起來,直接而簡單,在大多數(shù)情況下都管用。但速度慢,而且無法真正體驗駕駛的樂趣。
對,命令行很有趣。就象用一大堆收集到的積木,竟可以完成許多意想不到的創(chuàng)舉,一些極其復(fù)雜的工作,只需幾行命令就可以解決。這是因為,在 Unix 中,shell 可不是簡單的命令解釋器(典型的有 Windows 中的 DOS ),而是一個全功能的編程環(huán)境。 這并不意味著 shell 非常容易學(xué)通,您知道,好事多磨,這還是要花點工夫的。;-) 但請相信我,這絕對值得。您在很短時間內(nèi),就能被一大幫門外漢吹捧為 Unix wizard(奇才) 。*grin*
在八十年代初期,產(chǎn)生了一個 Unix 的圖形子系統(tǒng)-- the X Window System 。九十年代早期,為了更好地實現(xiàn)基于 Intel 的 Unix 類系統(tǒng)上(如FreeBSD、NetBSD、Linux)的應(yīng)用,產(chǎn)生了一個系統(tǒng)分支-- XFree86 。
X Window 中一個很大的好處是可以運行多個虛擬(virtual)終端。甚至在 X Window 下就有這么個應(yīng)用程序--'xterm'。您將發(fā)現(xiàn)'xterm'和'virtual terminal'在很多情況下都是一樣的。有的地方說'打開一個 xterm',其實您不是非要用'xterm'程序,其他的終端模擬器(terminal emulator),如 rxvt、konsole、aterm、eterm、wterm 等等,一樣有效。
l CTRL k>:刪除從光標到行尾的部分 l CTRL u>:刪除從光標到行首的部分 l ALT d>:刪除從光標到當前單詞結(jié)尾的部分 l CTRL w>:刪除從光標到當前單詞開頭的部分 l CTRL a>:將光標移到行首 l CTRL e>:將光標移到行尾 l ALT a>:將光標移到當前單詞頭部 l ALT e>:將光標移到當前單詞尾部 l CTRL y>:插入最近刪除的單詞 l !$>:重復(fù)前一個命令最后的參數(shù)。
例如:您用命令 mkdir peter/pan/documents/tinkerbell 新建了一個目錄,現(xiàn)在您向用命令'cd'進入該目錄,您可以用 cd !$,shell 將把前一個命令'mkdir'的參數(shù)添加到現(xiàn)在的'cd'后面。
這將被讀為:除了以'6.bak'結(jié)尾的文件,刪除其他所有以'.bak'結(jié)尾的文件。您必須將取反號(negation sign)與取反字符(這里是 6)放到括號中,不然的話,shell 會將驚嘆號(exclamation mark)解釋成歷史記錄替換的開始(the beginning of a history substitution)。取反號在本篇介紹的所有匹配模式中都有效。
l .bash_history :記錄了您以前輸入的命令, l .bash_logout :當您退出 shell 時,要執(zhí)行的命令, l .bash_profile :當您登入 shell 時,要執(zhí)行的命令, l .bashrc :每次打開新的 shell 時,要執(zhí)行的命令。
#!/bin/bash # # This file echoes a bunch of color codes to the # terminal to demonstrate what's available. Each # line is the color code of one forground color, # out of 17 (default + 16 escapes), followed by a # test use of that color on all nine background # colors (default + 8 escapes). # T='gYw' # The test text echo -e "\n 40m 41m 42m 43m\ 44m 45m 46m 47m"; for FGs in ' m' ' 1m' ' 30m' '1;30m' ' 31m' '1;31m' ' 32m' \ '1;32m' ' 33m' '1;33m' ' 34m' '1;34m' ' 35m' '1;35m' \ ' 36m' '1;36m' ' 37m' '1;37m'; do FG=${FGs// /} echo -en " $FGs \033[$FG $T " for BG in 40m 41m 42m 43m 44m 45m 46m 47m; do echo -en "$EINS \033[$FG\033[$BG $T \033[0m"; done echo; done echo
您可以用'alias'在命令行快速地創(chuàng)建別名,或?qū)⒚罘诺礁髯缘?~/.bashrc',或放到系統(tǒng)級的'/etc/profile.d/alias.sh'中(而在 Mandrake Linux 8 以前的版本里,用的是'/etc/bashrc')。要刪除一個別名,只要輸入:unalias alias 。運行 alias 將列出您系統(tǒng)中所有定義的別名。
如果看一下'~/.bashrc'和'/etc/profile.d/alias.sh',您會發(fā)現(xiàn)系統(tǒng)已經(jīng)定義了一些別名。您可以為同一個命令定義多個別名。當然,您得先確認別名與其他程序名不同,比如象 alias rm='ls -l' 這樣的就不能工作。您可以在命令行輸入這些快捷方式,測試一下。如果 shell 找不到相同名稱的命令,那您就可以將其用作別名了。
以下別名可能有用(不要忘了引號?。?:
l alias rpmq='rpm -qa | grep' :現(xiàn)在 rpmq string 就將列出所有名稱中含有 string 的已安裝 RPM 包, l alias ls='ls -ho --color | more' :ls 將以彩色分頁方式列出文件,文件大小以 KB為單位, l alias use='du --max-depth=1 | sort -n | more' :use 將子目錄按大小排好,并以分頁方式列出,
function apros() { apropos $1 | egrep -v '(3|\(n\)'; }
定義了一個新命令,稱為'apros'。apros name 將先執(zhí)行'apropos name'(即在 man page 中搜索命令),然后將得到的輸出送到管道(|),接著用'egrep'過濾,排除第'3'和第'n'章節(jié)的 man page ,這個命令可能沒什么大用處,但可以整理'apropos'命令的輸出。