在Linux中什麼是一個文件的路徑呢,說白了就是這個文件存在的地方,例如 /root/.ssh/authorized_keys 這就是一個文件的路徑。如果您告訴系統這個文件的路徑,那麼系統就可以找到這個文件。在Linux的世界中,存在著絕對路徑和相對路徑。
絕對路徑:路徑的寫法一定由根目錄 『/』寫起,例如 /usr/local/mysql 這就是絕對路徑。
相對路徑:路徑的寫法不是由根目錄 『/』寫起,例如,首先用戶進入到/, 然後再進入到home ,命令為 cd /home 然後 cd test 此時用戶所在的路徑為 /home/test 第一個cd命令後跟 『/home』 第二個cd命令後跟 『test』, 並沒有斜槓,這個 『test』 是相對於 『/home』 目錄來講的,所以叫做相對路徑。
命令:cd
這個命令是用來變更用戶所在目錄的,後面如果什麼都不跟,就會直接到當前用戶的根目錄下,我們做實驗用的是 『root』 帳戶,所以運行 cd 後,會進入root帳戶的根目錄 『/root』. 後面跟目錄名,則會直接切換到指定目錄下:
[root@localhost ~]# cd /tmp/
[root@localhost tmp]# pwd
/tmp
[root@localhost tmp]# cd
[root@localhost ~]# pwd
/root
pwd 這個命令列印出當前所在目錄,cd 後面只能是目錄名,而不能是文件名,如果跟了文件名會報錯:
[root@localhost ~]# cd /etc/passwd
-bash: cd: /etc/passwd: 不是目錄
./ 表示當前目錄,../ 表示當前目錄的上一級目錄:
[root@localhost ~]# cd /usr/local/lib/
[root@localhost lib]# pwd
/usr/local/lib
[root@localhost lib]# cd ./
[root@localhost lib]# pwd
/usr/local/lib
[root@localhost lib]# cd ../
[root@localhost local]# pwd
/usr/local
上例中,首先進入到 /usr/local/lib/ 目錄下,然後再進入 ./ 其實還是進入到當前目錄下,用 pwd 查看當前目錄,並沒有發生變化,然後再進入 ../ 則是進入到了 /usr/local/ 目錄下,即 /usr/local/lib 目錄的上一級目錄。
命令:mkdir
用來創建目錄的,這個命令在上一章節中用到過。 『mkdir』 其實就是make directory的縮寫。其語法為 mkdir [-mp] [目錄名稱] ,其中-m, -p為其選項, 『-m』 這個選項用來指定要創建目錄的權限,不常用,不做重點解釋。 『-p』 這個選項很管用,先來做個試驗,您會一目了然的:
[root@localhost ~]# mkdir /tmp/test/123
mkdir: 無法創建目錄 '/tmp/test/123': 沒有那個文件或目錄
[root@localhost ~]# mkdir -p /tmp/test/123
[root@localhost ~]# ls /tmp/test
123
當我們想創建 /tmp/test/123 目錄,可是提示不能創建,原因是 /tmp/test 目錄不存在,您會說,這個Linux怎麼這樣傻,/tmp/test 目錄不存在就自動創建不就OK了嘛,的確Linux確實很傻,如果它發現要創建的目錄的上一級目錄不存在就會報錯。然而Linux並不是那麼傻,因為它也為我們想好了解決辦法,即 『-p』 選項,這個選項可以幫我們創建一大串級聯目錄,這個選項還有一個好處,那就是當您創建一個已經存在的目錄時,不會報錯:
[root@localhost ~]# ls -ld /tmp/test/123
drwxr-xr-x. 2 root root 4096 5月 9 19:10 /tmp/test/123
[root@localhost ~]# mkdir /tmp/test/123
mkdir: 無法創建目錄 '/tmp/test/123': 文件已存在
[root@localhost ~]# mkdir -p /tmp/test/123
[root@localhost ~]# ls -ld /tmp/test/123
drwxr-xr-x. 2 root root 4096 5月 9 19:10 /tmp/test/123
在上一章節裡,已經介紹過 ls 命令,但是並沒有向您介紹它的 『-d』 選項,這個選項是針對目錄的,通常都是和 『-l』 同時使用寫成 『-ld』. 它可以查看指定目錄的屬性,比如在本例中,它可以查看 『/tmp/test/123』 目錄的創建時間。 mkdir -p 後面跟一個已經存在的目錄名時,它不會做任何事情,只是不報錯而已。
命令:rmdir
用來刪除空目錄,後面可以是一個也可以是多少,多個的話用空格分隔。該命令很少使用,因為它只能刪除目錄,不能刪除文件,還有一個命令 rm 既可以刪除目錄又可以刪除文件,用的比較多。rmdir 有一個和mkdir一樣的選項 『-p』, 同樣可以級聯刪除一大串目錄,但是級聯的目錄中其中一個目錄裡還有目錄或者文件時就不好用了。
[root@localhost ~]# ls /tmp/test
123
[root@localhost ~]# rmdir /tmp/test/
rmdir: 刪除 '/tmp/test/' 失敗: 目錄非空
[root@localhost ~]# rmdir /tmp/test/123
[root@localhost ~]# ls /tmp/test
[root@localhost ~]#
所以,得出的結論是, 『rmdir』 只能刪除空目錄,即使加上 『-p』 選項也只能刪除一串的空目錄,可見這個命令有很大的局限性,偶爾用下還可以。
命令:rm
這個命令是最常用的, 『rm』 同樣也有很多選項。您可以通過 man rm 來獲得詳細幫助信息。在這裡只介紹最常用的兩個選項。
『-r』 : 刪除目錄用的選項,等同於rmdir.
[root@localhost ~]# mkdir -p /tmp/test/123
[root@localhost ~]# rm -r /tmp/test/123
rm:是否刪除目錄 '/tmp/test/123'? y
但是和rmdir不同的是,使用 rm -r 刪除目錄時,會問一下是否刪除,如果輸入 『y』 則會刪除,輸入 『n』 則不刪除。當然 rm -r 也不會向rmdir不能刪除非空目錄,它是可以刪除非空目錄的。
『-f』 : 表示強制刪除,不再提示是否要刪除,而是直接就刪除了,而後面跟一個不存在的文件或者目錄時,也不會報錯,如果不加 『-f』 選項會報錯。
[root@localhost ~]# rm /tmp/test/123/123
rm: 無法刪除 '/tmp/test/123/123': 沒有那個文件或目錄
[root@localhost ~]# rm -f /tmp/test/123/123
要刪除一個目錄時,即使加上 『-f』 選項也會報錯,所以刪除目錄一定要加 『-r』 選項。
[root@localhost ~]# rm -f /tmp/test/123
rm: 無法刪除 '/tmp/test/123': 是一個目錄
[root@localhost ~]# rm -rf /tmp/test/123
關於rm,使用最多便是 『-rf』 兩個選項合用了。不管刪除文件還是目錄都可以。但是方便的同時也要多注意,萬一您的手太快後邊跟了/那樣就會把您的系統文件全部刪除的,切記切記。