在上一篇文章中,我們介紹了Linux操作系統(tǒng)的主目錄,每個人都知道每個目錄的特定用途。 在不同目錄和信息請求之間切換的最常見方法是在Linux操作系統(tǒng)上。 今天,我們將介紹Linux上目錄操作常用的命令。
其實目錄也是一個文件,只不過是一種特殊的文件,它的唯一功能是用來保存文件及其相關(guān)信息。所有的文件,包括普通文件、設(shè)備文件和目錄文件,都會被保存到目錄中。為了更加容易的理解相關(guān)命令,我們先介紹一下目錄相關(guān)的概念。
目錄相關(guān)的概念
主目錄
我們知道Linux是一個多用戶的操作系統(tǒng),當(dāng)我們以某個用戶登錄操作系統(tǒng)時就會自動的處于某個目錄下面,我們稱這個目錄為主目錄。對于普通用戶來說,當(dāng)創(chuàng)建用戶的時候通常會在/home目錄下面創(chuàng)建一個與用戶名同名的子目錄,該目錄就是該用戶的主目錄。
例如我們已itworld123用戶登錄系統(tǒng)時,此時我們會位于/home/itworld123目錄下面。
工作目錄
當(dāng)我們登錄到Linux系統(tǒng)時,我們總是處于某個目錄下面。我們當(dāng)前所處于的目錄就是工作目錄。我們可以通過cd命令實現(xiàn)工作目錄的切換。
目錄的絕對路徑和相對路徑
Linux的目錄有清晰的層次結(jié)構(gòu),‘/’代表根目錄,所有的目錄都位于/下面;在Linux文件系統(tǒng)中目錄中會有子目錄,子目錄中又有子目錄,最終會形成一個目錄樹,如圖所示。
由子目錄名稱和/分隔符構(gòu)成的一個合法的字符串稱為一個路徑,它用于描述文件的位置。也就是我們可以通過路徑找到文件,就好像通過一條路可以到某個地方一樣。下面是路徑的兩個例子:
home/itworld123/home/itworld123
如果我們仔細關(guān)注一下上面兩個例子,其實上面兩個路徑是不同的。其中后面的路徑是以/開頭的,我們稱為絕對路徑,而不已/開頭的稱為相對路徑。
點號(.)
在Linux操作系統(tǒng)中除了常見的字符串目錄外,還有一種特殊的目錄名稱。這種目錄名稱是以點號(.)構(gòu)成的。其中一個點號(.)表示當(dāng)前目錄,兩個點號(..)表示上級目錄(父目錄)。這種目錄主要是為了方便目錄的切換,提高工作效率。
目錄相關(guān)的操作
所有數(shù)據(jù)的操作無外乎增刪改查,目錄也是數(shù)據(jù)。因此,對于目錄的操作也是增刪改查,所謂增就是創(chuàng)建目錄;所謂刪就是刪除目錄;所謂改就是修改目錄,比如重命名;所謂查就是查詢目錄及目錄內(nèi)的內(nèi)容等。
創(chuàng)建目錄
創(chuàng)建目錄的命令為mkdir,它是make directory的簡寫。我們可以通過該命令后面跟一個目錄名稱的方式在當(dāng)前目錄創(chuàng)建一個子目錄,例如:
$mkdir itworld123
這個目錄名稱其實可以是一個路徑,可以是相對路徑或者絕對路徑。下面是一個相對路徑的例子。
$mkdir itworld123/sunnyzhang
當(dāng)然,這個路徑必須是一個合法路徑,這樣文件系統(tǒng)會自動搜索,并且在最后的目錄下面創(chuàng)建子目錄。當(dāng)然,這個路徑也可以是絕對路徑,例如:
$mkdir /tmp/itworld123/sunnyzhang
上述命令會在目錄itworld123中創(chuàng)建一個子目錄sunnyzhang。
前面說了,要求后面的路徑必須是合法路徑。合法路徑是什么意思呢?所謂合法路徑是可訪問的路徑。對于相對路徑和絕對路徑有不同的解釋。相對路徑來說,是指相對工作目錄來說心目錄前面的父目錄在工作目錄是必須存在。而對于絕對目錄來說是指新目錄前面的所有父級目錄是必須存在的。
如果創(chuàng)建子目錄是前面的目錄是不合法的,那么就會創(chuàng)建失敗。但有時候我們希望創(chuàng)建一串父子目錄,那么此時這里就存在非法路徑的問題。創(chuàng)建就會失敗。例如下面,如果itworld123不存在,那么該命令就會失敗。
$mkdir itworld123/sunnyzhang
mkdir給我們提供了一個選項-p,通過該選項就可以自動創(chuàng)建不存在的上級目錄。如下,如果itworld123不存在,那么mkdir會先創(chuàng)建該目錄,然后創(chuàng)建sunnyzhang。
$mkdir -p itworld123/sunnyzhang
刪除目錄
有創(chuàng)建就有刪除,很多情況下都有可能需要刪除目錄。比如創(chuàng)建錯誤的名稱,或者不在使用的目錄。我們可以使用 rmdir命令來刪除目錄,例如:
$rmdir itworld123
使用 rmdir命令可以同時刪除多個目錄:
$rmdir dirname1 dirname2 dirname3
但是需要注意的是,使用rmdir刪除目錄的時候必須保證該目錄是空的,否則會報錯。那么我們?nèi)绾蝿h除一個非空的目錄呢?這就用到了rm命令,它可以刪除該目錄及其內(nèi)的所有內(nèi)容。
改變所在目錄(切換工作目錄)
可以使用 cd命令來改變當(dāng)前所在目錄,進入任何有權(quán)限的目錄,例如下面的例子:
$cd path/name
path/name是一個路徑,可以為相對路徑,也可以為絕對路徑。例如
$cd /usr/local/bin
可以直接進入/usr/local/bin 目錄。
除了使用路徑名稱來實現(xiàn)路徑的切換外,Linux提供了一些快速進行切換的方式。比如使用下面的命令可以隨時進入主目錄:
$cd ~
這里 ~ 就表示主目錄。如果你希望進入其他用戶的主目錄,可以使用下面的命令:
$cd ~username
另外一個快捷方式是實現(xiàn)兩個目錄之間的快速切換,具體如下:
$cd -
改動目錄(重命名和移動)
有的時候我們在給目錄起名的時候沒起好。此時最簡單的方法可能大家會想到刪除后重新創(chuàng)建。但是如果目錄中已經(jīng)有很多內(nèi)容呢?顯然直接刪除是不合適的,Linux為我們提供了修改目錄名稱的命令,就是mv(move) 命令,其語法為:
$mv olddir newdir
該命令不僅僅可以重命名目錄,還可以將一個目錄整體搬到其它地方。例如下面的例子將會把 mydir 目錄重搬到 newdir目錄下面,成為其子目錄:
$mv mydir yourdir/
查詢目錄
最后就是查詢了,在Linux系統(tǒng)當(dāng)中,我們可以通過ls命令查詢目錄中的內(nèi)容,也就是子目錄和文件。ls命令的語法格式為:
$ls path/name
這里path/name可以是絕對目錄或者相對目錄。如果path/name為空,也就是只有l(wèi)s命令,則表示為工作目錄。
ls命令是Linux下最為常用的命令之一,其功能也非常強大。前面我們了解了選項的概念,通過選項可以使得命令有更加強大的功能。ls有很多選項,其中比較常用的選項有如下幾個:
-a :全部的文件,連同隱藏檔( 開頭為 . 的文件) 一起列出來-d :僅列出目錄本身,而不是列出目錄內(nèi)的文件數(shù)據(jù)-l :長數(shù)據(jù)串列出,包含文件的屬性與權(quán)限等等數(shù)據(jù);-i : 顯示文件或者目錄的inode id