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