這裡不做詳細說明,只做舉例式的說明,以馬上能用為原則,要詳細請看 man pages、info pages、HOWTO 文件或書籍裡頭的說明。最重要的是,您要親自去操作看看。剛開始學習時由於規則不熟悉,會很不習慣,但可以把一些常用到的 tips 收集起來,就像以前學英文時先由句型著手一般,而且,盡量由指令的完整原文來記憶。如果您是在 GUI 的環境下,請開個終端機(rxvt/xterm...),來試試看。請千萬記得 Un*x 的哲學,工具的組合,所以有許多指令是可以組合在一起來使用的。
uname uname -a請馬上就試試,會有什麼結果出現。
locate locate | more這樣,locate locate 的結果,就會透過管線21,導引給 more 這個過濾器來做進一步的處理。這樣一來每輸出滿一頁,就會暫停,按 Space 鍵又會繼續下一頁,可參考 man more 或本節第 11 項的說明。如果 locate locate 時有錯誤訊息出現的話,請用 updatedb 更新一下系統資料庫。比較複雜的條件式搜尋,請研究一下 find 指令。
locate locate > locate.lst這樣一來,本來是在螢幕顯示的內容,現在被導向進 locate.lst 這個檔案內了,這樣就可以將這個檔案做進一步的處理或備份、保存。那兩個 >> 又是什麼呢?和 > 一樣,但是不會去除原來檔案的內容,而是附加上去。
有一個很特殊的使用方法,那就是把一個檔案的內容清掉:
> locate.lst這樣會把 locate.lst 這個檔案的原來內容清掉,成為一個空檔案,簡單的思考方式就是,你把沒有的東西導入一個檔案內了,而 > 本就會先將原來的內容清掉。
alias which='alias | /usr/bin/which --tty-only \
--read-alias --show-dot --show-tilde'
這樣一來,每次執行 which 就會預設加了這些參數。請別忘了 man which。
畢竟 alias 是非常個人化的東西,除非是系統上的需要,是沒有必要整個系統預設的,以免本尊、分身混淆不清。像我自己的 ~/.bashrc23 就設了一堆,但其他人不一定會和我的用法一樣吧?
# .bashrc alias m='mount' alias rm='rm -i' alias cp='cp -i' alias df='df -h' alias du='du -h' alias v='ls -l -F --color' alias d='ls -F' alias um='umount' alias telnet='telnet -8' alias l='locate' alias zg='zgrep' alias g='grep' alias bz='bzip2' alias gz='gzip -9'
find . -name "*.tmp"
尋找目前目錄及其子目錄,副檔名為 tmp 的檔案
find . -name "*.tmp" -exec rm {} \;
同上,但找到後執行刪除動作
英文句點代表現行目錄,當然也可以改成其他的目錄。其他,也可以找特定大小,或特定時間建立的檔案,就請各位研究一下 man find 了。
grep Linux * 找目前目錄(不含子目錄)所有含有 Linux 字串的檔案 grep -r Linux * 同上,但會連子目錄也去找這個指令常和其他的指令組合起來使用,例如,前面所舉的 locate locate,我們就可以再分析一下,以便縮小搜尋範圍:
locate locate | grep bin 只找含有 bin 字串的 locate,這樣就會縮小至 bin 目錄的範圍(會有例外的情形)。 locate locate | grep doc 同理,要找 locate 的相關說明檔時,就可以這樣使用 locate locate | grep doc | more 這樣也行!
cat bg5.txt 顯示 bg5.txt 的內容。
cat 1.txt 2.txt > 3.txt 將 1.txt 及 2.txt 合併成 3.txt。
tar zcvf test.tar.gz test/ 將 test 目錄的所有檔案打包成 test.tar.gz tar zxvf test.tar.gz 將 test.tar.gz 解開至 test/ 目錄下,會自動建立目錄
wget ftp://xxx.xxx.xxx/target.tar.gz
wget -c ftp://xxx.xxx.xxx/target.tar.gz(續傳)
wget -spider ftp://xxx.xxx.xxx/target.tar.gz
不下載,只是看檔案存不存在
wget http://xxx.xxx.xxx/target.tar.gz
wget -m -np http://xxx.xxx.xxx/target.html
將以 target.html 為中心的整個相關案抓下來,m=mirror,np=no parent 不抓上層目錄的檔案。
man wget 裡頭有相當多的實例供參考,也有 gwget 的 GUI 界面供使用。
chmod +r test 使檔案可讀(read) chmod +w test 使檔案可寫(write) chmod +x test 使檔案可執行(eXecute) 使用 + 號就是加入所指定的權限,使用 - 號,就是去除所指定的權限權限的問題當然沒那麼單純,這個問題往後會另立專章詳細說明,以上只是這篇文章上會用到的。您可以先試試 man chmod 及 info chmod,想瞭解檔案權限的話,可以 info fileutils 詳讀 File permissions 那個章節。如果使用 GUI 的檔案管理程式,那大概這些權限都被包起來了,可以由視窗中很容易就進行更改,當然,大量檔案的權限改變還是要在命令列來執行比較有效率。
mv test.tex test.txt 將檔案 test.tex 改名為 test.txt mv back bak 將目錄 back 改名為 bak mv test.txt /tmp/test.txt 將 test.txt 由目前目錄移至 /tmp 目錄下
好了,我的 /etc/fstab 有一行是記載:
/dev/cdrom /mnt/cdrom iso9660 noauto,owner,kudzu,ro 0 0
因為有 noauto 的設定,所以不會自動掛上來。要掛上來時,只要下:
mount /mnt/cdrom即可。如果沒有事先在 /etc/fstab 設定,那就得自行指定,例如:
mount -t iso9600 /dev/cdrom /mnt/cdrom 或 mount -t auto /dev/cdrom /mnt/cdrom要注意的是,/mnt/cdrom 這個目錄要事先就建立好,而且前面的是 device,後面的才是磁碟上的目錄,千萬不要搞錯了。-t 主要是指定檔案系統 (file system type),不指定或指定 auto 則 mount 會自動去判斷。相對的指令就是 umount 了。
umount /mnt/cdrom
kill PID即可。如果還是殺不掉,那就用最厲害的殺手絕招「九陽神功」:
kill -9 PID那 killall 是幹什麼用的呢?那是比較懶的殺手,不必找 PID,只要知道程式名稱即可,他會把程式名稱轉換成 PID 再傳給系統,例如執行中的 vim,只要下:
killall vim即可,但請小心,這樣一來所有執行中的 vim 都會殺掉。killall 也可以加 -9 參數。
bash 的相關問題可以先參考 FAQ:
ftp://ftp.cwru.edu/pub/bash/FAQ
深入一點的文件:
http://www.tldp.org/LDP/abs/html/
學 bash,這個 abs (Advanced Bash-Scripting) guide 文件很值得研究,有相當多的實例供參考,在作者的網頁有 tarball26 可以下載。
gnome-help-browser man:bash由於 GNOME/KDE 環境並沒有 man/info pages 的說明文件,因此要使用這兩個工具來叫用他們的說明文件,而這兩個工具也是可以解讀 man/info pages 格式,使用上相當方便。
gnome-help-browser info:bash
khelpcenter man:bash
khelpcenter info:bash
另外上下方向鍵則可以叫出所曾下過的指令,history 這個指令,更可以列出所曾下過的指令歷史清單供選擇,只要在清單號碼前加個 ! 即可執行該整串指令內容。
echo '你好' | od -t x1好吧!葫蘆裡到底是在賣什麼碗糕?沒什麼大學問,只是在查「你好」這兩個字的 Big-5 中文內碼,由以上的結果可以知道,「你」的 Big-5 內碼是 0xa741,而「好」的則是 0xa66e。把 x1 改成 a 的話,輸出的結果是所對應的 ascii 字元(請注意,有些是不可見字元,螢幕上不一定看得到)。不相信的話,把 xcin 叫出來,按 Ctrl-Alt-0 轉到內碼輸入法,然後輸入 a741 看看是出來什麼字。
這會產生以下的結果:
0000000 a7 41 a6 6e 0a
0000005
Compiled by Edward G.J. Lee (2004-02-14)