一、目錄與路徑
1.相對路徑與絕對路徑
因為我們在Linux系統(tǒng)中,常常要涉及到目錄的切換,所以我們必須要了解 "路徑" 以及 "相對路徑" 與 "絕對路徑" 的概念。
在之前的學習中,就反復的強調了Linux的目錄是 "樹狀目錄" 。假設我們需要在任意一個目錄下切換到另一個目錄下,通常是使用的是 cd 這個命令,此時在寫切換的目錄名時就有兩種書寫方式,也就是我們常說的使用 "相對路徑" 與 "絕對路徑" 來書寫
我們知道,在Linux的系統(tǒng)中完整的文件路徑名的長度可以達到4096個字符,所以一個文件路徑名太長的話,此時寫絕對路徑時就非常的麻煩,而且可能寫錯,所以此時選擇使用相對路徑來寫就會簡單一些。
但是,對于文件的正確性來說,絕對路徑是比較好的。當我們在寫 shell scripts 時,請務必使用絕對路徑。雖然可能寫絕對路徑會稍顯麻煩,但是這種寫法是絕對不會有問題的。
2.cd (切換目錄)
這個命令應該是Linux中用的頻繁的一個命令之一了,因為我們經常需要進行目錄的切換。在詳解這個命令之前,首先得補充一個重要的知識,就是我們常用的一些比較特殊的目錄:
. 代表當前目錄 .. 代表上一層目錄 - 代表前一個工作目錄 ~ 代表【目前用戶身份】所在的自家目錄 ~account 代表 account 這個用戶的自家家目錄
我們通過實例來看一下這些特殊命令的使用方法:
[root@xiaoluo ~]# cd /home # 此時我們進入到了home目錄下 [root@xiaoluo home]# cd . # .表示當前目錄,所以當前還是在home目錄下 [root@xiaoluo home]# cd .. # ..表示上一層目錄,所以此時就進入到了 / 目錄下 [root@xiaoluo /]# cd ~ # ~表示【目前用戶身份】所在的自家目錄,當前用戶就是root,所以就進入到了root這個目錄下 [root@xiaoluo ~]# cd ~xiaoluo # ~account表示 account 這個用戶的自家家目錄 ,我如果想進入 xiaoluo 這個用戶的主目錄,輸入 cd ~xiaoluo即可 [root@xiaoluo xiaoluo]# cd - /root # -表示前一個工作目錄,我們的前一個工作目錄就是在root下,所以此時又會進入到root這個目錄下 [root@xiaoluo ~]# cd ../usr # 如果我們需要進入到usr目錄下,這里可以寫成相對路徑形式也可以寫成絕對路徑形式 [root@xiaoluo usr]#
通過上面的幾個實例我們應該對cd 這個命令有了深入的了解了,而且也知道了那幾個特殊目錄所代表的含義。
3.pwd (顯示當前所在的目錄)
這個命令對于我們來說也是一個很重要的命令,因為在Linux下我們都是通過在命令行輸入命令,如果進入到了一個目錄下,就不會像windows那樣直觀的顯示出當前所在的路徑,此時我們就可以輸入 pwd 這個命令來顯示我們當前所在的目錄。
[root@xiaoluo ~]# pwd [-P] 參數: -P :顯示出確實的路徑,而非使用鏈接 (link) 路徑。(P是大寫) 范例: [root@xiaoluo ~]# pwd /root <== 顯示出當前所在的目錄 [root@xiaoluo ~]# cd /var/mail [root@xiaoluo mail]# pwd /var/mail [root@xiaoluo mail]# pwd -P /var/spool/mail <== 怎么回事?有沒有加 -P 差很多 [root@xiaoluo mail]# ls -l /var/mail lrwxrwxrwx. 1 root root 10 3月 30 10:37 mail -> spool/mail # 看到這里應該知道為啥了吧?因為 /var/mail 是連結文件,連結到 /var/spool/mail # 所以,加上 pwd -P 的參數后,會不以連結文件的數據顯示,而是顯示正確的完整路徑!
4.mkdir (建立新目錄)
[root@xiaoluo ~]# mkdir [-mp] 目錄名稱 參數: -m :配置文件目錄的權限!我們可以自己設定自己想要的權限,而不需要使用umask定義的默認權限 -p :幫助你直接將所需要的目錄遞歸建立起來! 范例: [root@xiaoluo ~]# cd /home [root@xiaoluo home]# mkdir test <== 建立一名為 test 的新目錄 [root@xiaoluo home]# mkdir test1/test2/test3/test4 mkdir: 無法創(chuàng)建目錄"test1/test2/test3/test4": 沒有那個文件或目錄 [root@linux tmp]# mkdir -p test1/test2/test3/test4 # 加了這個 -p 的參數,可以自行幫我們建立多層目錄! [root@xiaoluo home]# mkdir -p test1/test2/test3/test4 [root@xiaoluo home]# mkdir -m 711 test2 [root@xiaoluo home]# ls -l drwxr-xr-x. 2 root root 4096 4月 21 13:08 test drwxr-xr-x. 3 root root 4096 4月 21 13:10 test1 drwx--x--x. 2 root root 4096 4月 21 13:11 test2# 仔細看上面的權限部分,如果沒有加上 -m 來強制設定屬性,系統(tǒng)會使用默認屬性。如果加上了-m 這個參數,我們就可以自己定義權限了
5.rmdir (刪除"空"目錄)
[root@xiaoluo ~]# rmdir [-p] 目錄名稱 參數: -p :連同上層『空的』目錄也一起刪除 范例: [root@xiaoluo home]# ls -l drwxr-xr-x. 2 root root 4096 4月 21 13:08 test drwxr-xr-x. 3 root root 4096 4月 21 13:10 test1 drwx--x--x. 2 root root 4096 4月 21 13:11 test2 [root@xiaoluo home]# rmdir test [root@xiaoluo home]# rmdir test1 rmdir: 刪除 "test1" 失敗: 目錄非空 [root@xiaoluo home]# rmdir -p test1/test2/test3/test4/ [root@xiaoluo home]# ls -l drwx--x--x. 2 root root 4096 4月 21 13:11 test2 # 利用 -p 這個參數,立刻就可以將 test1/test2/test3/test4 一次刪除~ # 不過要注意的是,這個 rmdir 僅能【刪除空的目錄】!