新手應該掌握的Linux命令(轉)

BSDLite發表於2007-08-15
新手應該掌握的Linux命令(轉)[@more@]  檔案和目錄的處理

  檔案和目錄的處理是任何作業系統命令中最基本的內容,也是使用電腦最常用到的功能。為了簡單起見,我只介紹其可以實現的基本功能,讀者可以在掌握這些基本用法之後再對其它用法進行深入研究。

◆ mkdir 建立一個目錄。這個命令的基本格式是“mkdir 目錄名稱”。比如,可以使用命令“mkdir mydir”在當前目錄下建立一個名為mydir的目錄。在進行目錄建立時,可以設定目錄的許可權。此時使用的引數是“-m”,假設要讓建立的mydir讓所有人都有rwx(即讀、寫、執行的許可權),那麼可以使用以下命令:

$ mkdir -m 777 mydir

  這時如果使用帶引數-l的ls命令顯示(稍後我將介紹),就會發現mydir目錄的許可權情況。如下所示:

$ ls -l
total 209
......
drwxrwxrwx 2 root root 4096 2月 16 21:37 mydir
......


◆ ls 列出目錄內容。如果不帶任何引數,ls會顯示出當前目錄下的所有檔案(除了隱藏檔案)、符號連結和子目錄。不同的檔案型別、目錄和連結會使用不同的顏色來表示。比如,一般檔案是紅色的,可執行檔案是紅色的,壓縮檔案是暗紅色的,影像檔案是粉紅色的,目錄是藍色的,符號連結是加粗的黑色。

這個命令有很多引數,比如:“l”、“a”、“F”,命令格式可以是ls -l、ls -a和ls -F,也可以將它們結合成ls -laF。ls -l會使用詳細的格式列表將許可權標示、硬連結數目、所有者與組名稱、檔案或目錄大小及改動時間一併列出。如下所示是在我的機器的根目錄下使用ls -alF的顯示情況:


$ ls -laF
total 233
drwxr-xr-x 22 root root 4096 2月 16 21:37 ./
drwxr-xr-x 22 root root 4096 2月 16 21:37 ../
-rw-r--r-- 1 root root 0 2月 16 21:22 .autofsck
drwxr-xr-x 2 root root 4096 1月 4 18:39 bin/
......


◆ cd 可以實現不同目錄之間的切換,但前提是使用該命令的使用者必須有足夠的許可權對相應目錄進行操作。下面的命令將從當前目錄切換至mydir目錄:

$ cd /mydir

如果不給命令加任何引數,那麼就會從當前目錄切換至使用者專屬目錄。比如如果是root使用者,那麼執行完cd命令後,當前目錄就是/root,如下所示:

[root@linuxserver /]# cd
[root@linuxserver root]#

◆ cp 用於複製檔案或目錄。其基本語法是:“cp 原始檔或者目錄 目標檔案或者目錄”。例如同時指定兩個以上的檔案或目錄,且最後的目的地是一個已經存在的目錄,則它會把前面所指定的所有檔案或目錄複製到該目錄中。若同時指定多個檔案或目錄,而最後的目的地並非是一個已存在的目錄,則會出現錯誤資訊。這一命令中最常用的引數是-R,該引數會對指定目錄下的所有檔案及子目錄一起進行復制。

◆ mv 移動或者更改現有的檔案或者目錄。其基本語法是:“mv 原始檔或者 目標檔案或目錄”。這個命令和cp命令類似,不同的是當檔案出現在目標位置時,原始檔就會被刪除。

◆ rm 刪除檔案或者目錄。其基本語法是:“rm 原始檔或者目錄”。該命令和DOS裡的del命令類似,所不同的是在Linux下刪除的檔案不能進行恢復操作(這是基於安全性的考慮)。這也就意味著在Linux中沒有undelete、unrm或者與之類似的命令。因此,在使用該命令時必須要非常小心。該命令有一個和cp命令類似的-R(或者-r)引數,使用它可以對指定目錄的所有檔案和子目錄一起進行處理。否在,在不加任何引數所情況下,rm命令只會刪除檔案。比如命令“#rm -r *”將會刪除當前目錄中所有的檔案和子目錄。

◆ rmdir 用於刪除目錄。其基本語法是:“rmdir 目錄”。需要說明的是,該命令只能刪除空目錄,如果目錄為非空,則會出現錯誤資訊。

◆ ln -s 建立一個符號連結。建立符號連結是一個非常實用的功能。假設你有一些目錄或者檔案需要頻繁使用,但由於Linux的檔案和目錄結構的原因,它們都不在主目錄之下。比如,Apache Web伺服器位於系統的/usr/local/httpd/htdocs。並且,你並不想每次都要從主目錄進入這樣一個長的路徑之中(在實際中,這個路徑也非常不容易記憶)。為了解決這個問題,可以在主目錄中建立一個符號連結(也稱之為軟連結),這樣在需要進入該目錄時,只需進入這個連結即可。比如,為了能夠使主目錄下的webroot訪問Web伺服器(/usr/local/httpd/htdocs)的文件,在主目錄下可以使用以下命令:

$ln -s /usr/local/httpd/htdocs webroot

這時如果瀏覽主目錄,就會發現一個類似以下內容的欄目:

lrwxrwxrwx 1 User Gruppe 35 Jul 16 14:48 webroot →/usr/local/httpd/htdocs/

這時如果使用命令cd webroot進入目錄,就會發現你的位置在/usr/local/httpd/htdocs/。

需要指出的是,如果不加任何引數,ln表示的是產生硬連結,這時就要求原始檔或源目錄必須已經存在。不過這一功能並不常用。

工作站和伺服器或伺服器之間進行複製

◆ scp 安全複製。在Linux下有一些命令可以實現安全複製,主要用於不同的計算機之間複製重要的資料。這在伺服器領域尤為有用,特別是當所訪問的伺服器是連線在Internet之上,並且可能遭受來自多方攻擊的情況下。一般情況下,在訪問這些伺服器時,人們通常採用某一FTP協議。因為SCP具有相當的安全性,因此在更新自己的主頁時,可以使用SCP來代替FTP。現在假設名字為Bob,要訪問一個名為的伺服器,想把本地機上/home/webpages/pictures目錄下的所有檔案複製至Web伺服器上的/htdocs/bobby/images之下。為了做到這一點,先在本地機上切換目錄:

$ cd ~/webpages/pictures

然後輸入:

$ scp ./* Bob@www.bobman.de:/htdocs/bobby/images

上面的./*指的是當前目錄下的所有檔案,*是Linux下的萬用字元,相當於DOS下的*.*。此外,SCP還可以在同一臺計算機的不同使用者間進行檔案複製。

所有者和許可權

◆ chown 變更檔案、目錄的所有者或所屬組。在Unix系統家族中,檔案或目錄許可權的控制以所有者及所屬組來管理。你可以使用chown指令去變更檔案與目錄的所有者或所屬組。需要注意的是,要執行該命令,必須要以root身份登入。該命令的語法非常簡單,並且,當要對某一目錄下的所有檔案和子目錄進行處理時,使用的仍然是-R引數。假設在/usr/local/目錄下建立了一個資料檔案,並且想以普通使用者的身份使用它而不是root身份。然而,由於是以root身份建立的檔案,所以以普通使用者的身份對該檔案只有讀的許可權,因為該檔案屬於root和root組成員。如果要把該檔案的所有者更改為屬於user組的zhang,那麼可以使用以下的命令:

$chown zhang.user /usr/local/myfile

如果要更改tmp目錄下所有檔案和子目錄的所有者及所屬組,可以使用以下命令:

$chown -R zhang.user tmp

◆ chmod 可以變更檔案或目錄的許可權。在Linux中,檔案或目錄許可權的控制分別以讀取、寫入、執行三種一般許可權來區分,另有三種特殊許可權可供運用,再搭配所有者與所屬組來管理每個檔案及目錄的許可權範圍。該命令的設定方式有文字和數字兩種。需要注意的是,符號連結的許可權無法變更,如果對符號連結修改許可權,其改變會作用在被連結的原始檔案。

和上述介紹的命令相比,這個命令要複雜得多。但是,對於Linux來說它卻非常重要。由於該命令涉及內容較多,限於篇幅此處就不詳細介紹,僅舉數例讓初學者有一直觀的瞭解,詳情請查閱相關資料。

把檔案myfile讀取和寫入的許可權向所有使用者開放(使用字元方式):

$chmod ugo=rw myfile

取消組成員執行myfile的許可權:

$chmod g-x myfile

增加所屬組執行myfile檔案的許可權:

$chmod g+x myfile

中止任務

在使用Windows的時候,大家一定遇到過類似於這樣的問題:一個程式崩潰並且處於死鎖的狀態。在Linux中,這種情況也會發生。不過和Windows不同的是,在Linux中遇到這種情況時一般不用重新啟動計算機,只需要中止(或者說是關閉)這個有問題的程式即可。有兩個命令可以處理這種情況,它們是killall和kill。

◆ killall 當處於X-Window介面時,所有的程式(除了崩潰的程式之外)一般都已經正常啟動了。這就是說,可以開啟一個控制檯視窗,在那裡中止有問題的程式。比如,如果Netscape程式出現了鎖死的情況,可以使用以下命令來中止所有包含有Netscape的程式:

$killall netscape

◆ kill 與和killall所實現的功能相同,不同之處是該命令使用的是程式的編號,即PID(程式識別符號)。這個編號可以透過ps命令來檢視,比如要想檢視Netscape程式的編號可以顯示出所有程式,然後逐個查詢,當然最好的辦法是使用grep進行過濾,完整的命令如下:

$ps wuxwww | grep netscape

這時得到的結果可能如下所示:

hansi 11779 0.0 5.1 22284 13120 ? S 11:58 0:01 /opt/netscape/netscape
hansi 11968 0.0 0.2 1676 708 pts/0 S 12:53 0:00 grep netscape

上面得到的結果第一列顯示的是啟動該程式的人,第二列即是PID。上面的命令顯示了兩個程式,這是因為grep查詢字串“netscape”,而grep命令本身也被分配給了一個PID。這時要中止這個程式,可以使用以下命令:

$kill 11779

在有些時候,如果使用上述命令沒法終止程式的話,可使用以下命令強制終止:

$kill -s 9 11779

“歷史”和自動的功能

最後還要介紹兩個可以讓命令列工作模式變得更加輕鬆的功能,其中的“歷史”功能在DOS環境中大家可能已經非常熟悉了。在DOS中,必須要啟用doskey函式來獲取輸入的命令,並且透過上下箭頭鍵來選擇輸入過的命令。Linux中也有這個功能,只需按方向鍵就可以選擇剛剛使用過的命令。大多數Linux發行版中,儲存的命令數可達500個之多。

此外,命令和路徑的自動填充也是一個非常有用的功能。具體方法是輸入第一個字母后按下Tab鍵,然後讓Shell自動查詢命令或者目錄。這個功能對於處理很長的路徑時尤為有用,因為只需要輸入前幾個字母,Shell就會幫助找到後面的內容。該功能對於那些難於記憶的程式也非常有用。下面是使用該功能的一些情況:

[root@linuxserver harddisk]# mou
mount mount.smb mount.smbfs mouseconfig
[root@linuxserver harddisk]# c
Display all 113 possibilities? (y or n)
c2ph checkXML column
......
cdda2wav civserver-wrapper csh
—More—

上面命令中,輸入幾個字母后按Tab鍵就會顯示上述的內容,這樣就可以找到一些不熟悉的命令或者目錄。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-960029/,如需轉載,請註明出處,否則將追究法律責任。

相關文章