1.相對路徑與絕對路徑
在開始目錄的切換之前,你必須要先了解一下所謂的路徑(PATH),有趣的是:什么是相對路
與絕對路徑?
- 絕對路徑:路徑的寫法“一定由根目錄/寫起”,例如:/usr/share/doc 這個目錄。
- 相對路徑:路徑的寫法“不是由/寫起”,例如由/usr/share/doc 要到/usr/share/man下面時,可以寫成:“cd./man”這就是相對路徑的寫法,相對路徑意指相對于目前工作目錄的路徑。
2.目錄的相關操作
Linux下有哪些比較特殊的目錄?
舉例來說,下面這些就是比較特殊的目錄,得要用力地記下來才行:
- .:代表此層目錄。
- ..:代表上一層目錄。
- -:代表前一個工作目錄。
- ~:代表目前使用者身份所在的家目錄.
- ~account: 代表account 這個使用者的家目錄(account是個賬號名稱)。
需要特別注意的是:在所有目錄下面都會存在的兩個目錄,分別是“.”與“..”分別代表此層與
上層目錄的意思。
那么來思考一下下面這個例題:
請問在Linux下面,根目錄下有沒有上層目錄(.)存在?
????????答:若使用“Is一al? /”去查詢,可以看到根目錄下確實存在,與.兩個目錄,再仔細查看,可發現這兩個目錄的屬性與權限完全一致,這代表根目錄的上一層(.)與根目錄自己(.)是同一個目錄。
下面我們就來談一談幾個常見的處理目錄的命令;
- cd:切換目錄
- pwd:顯示當前目錄
- mkdir:建立一個新目錄
- rmdir:刪除一個空目錄
- cd :(change directory,切換目錄)
2.1.cd (change directory,切換目錄)
它的一般用法是:cd [相對路徑或絕對路徑]
?我們知道zs_108?這個用戶的家目錄是/home/zs_108/,而root 家目錄則是/root/,假設我以root
身份在Linux 系統中,那么簡單說明一下這幾個特殊目錄的意義是:
先切換身份成為root看看。
代表進入zs_108?這個使用者的家目錄,亦即/home/zs_108。
表示回到自己的家目錄,亦即是/root這個目錄。
#沒有加上任何路徑,也還是代表回到自己家目錄的意思。
#表示去到目前的上層目錄,亦即是/root的上層目錄的意思。
表示回到剛剛的那個目錄,也就是/root。
這個就是絕對路徑的寫法。直接指定要去的完整路徑名稱。
這個是相對路徑的寫法,我們由/var/spoo1/mai1到/var/spool/postfix就這樣寫。
????????cd 是Change Directory的縮寫,這是用來切換工作目錄的命令,注意目錄名稱與cd命令之間存在一個空格。
????????當登錄Linux系統后,每個賬號都會在自己賬號的家目錄中,那回到上一層目錄可以用“cd ..”。利用相對路徑的寫法必須要確認你目前的路徑才能正確地去到想要去的目錄。
例如上面當中最后一個例子,你必須要確認你是在/var/spool/mail 當中,并且知道在/var/spool 當中有個mqueue的目錄才行,這樣才能使用cd烈/postfix進入正確的目錄,否則就要直接輸入cd/var/spool/postfix。
????????其實,我們的提示字符,亦即那個【root@hcss-ecs-b4c3 ~]#當中,就已經有指出當前目錄了,剛登錄時會到自己的家目錄,而家目錄還有一個符號,那就是“~”。
????????例如上面的例子可以發現,使用“cd~”可以回到自己的家目錄里面。另外,針對cd的使用方法,如果僅輸入cd時,代表的就是“cd~”的意思,亦即回到自己的家目錄。而那個“cd-”比較難以理解,請自行多做幾次練習,就會明白了。
????????還是要一再地提醒,我們的Linux的默認命令行模式(bash shell)具有文件補齊功能,你要常常利用[Tab]按鍵來自動補全目錄路徑。這可是個好習慣,可以避免你按錯鍵盤輸入錯字。
2.2.pwd(顯示目前所在的目錄)
選項與參數:
- -P:顯示出真正的路徑,而非使用鏈接(link)路徑。
范例1:單純顯示出目前的工作目錄。
范例2:顯示出實際的工作目錄,而非鏈接文件本身的目錄名而已,
注意,/var/mail是一個鏈接文件.
怎么回事?有沒有加-P差很多.
看到這里應該知道為啥了吧?
????????因為/var/mail是鏈接文件,鏈接到/var/spool/mail。#所以,加上pwd -P的選項后,不會顯示鏈接文件的路徑,而是顯示正確的完整路徑。
????????pwd是Print Working Directory的縮寫,也就是顯示目前所在目錄的命令,例如在上面最后的目錄是/var/mail,但是提示字符僅顯示mail,如果你想要知道目前所在的目錄,可以輸入pwd即可。
????????此外,由于很多的軟件所使用的目錄名稱都相同,例如/usr/local/etc和/etc,但是通常Linux僅列出最后面那一個目錄而已,這個時候你就可以使用pwd 來知道你的所在目錄,免得搞錯目錄,造成損失。
????????其實有趣的是那個 -P的選項。它可以讓我們取得正確的目錄名稱,而不是以鏈接文件的路徑來顯示的。如果你使用的是CentOS 7.x的話,剛好/var/mail 是/var/spool/mail的鏈接文件,通過到/var/mail 執行pwd-P就能夠知道這個選項的意義。
2.3.mkdir(建立新目錄)
mkdir[-mp]目錄名稱
選項與參數:
- -m:設置文件的權限。直接設置,不使用默認權限(umask).
- -p:幫助你直接將所需要的目錄(包含上層目錄)遞歸創建。
范例:請到/tmp 下面嘗試建立數個新目錄看看:
#話說,系統告訴我們,不可能建立這個目錄,就是沒有目錄才要建立的,見鬼嘛?
原來是要建test4上層沒先建test3的原因,加了這個-p的選項,可以自行幫你建立多層目錄,范例:建立權限為rwx--x--x的目錄。
仔細看上面的權限部分,如果沒有加上-m來強制設置屬性,系統會使用默認屬性,那么你的默認屬性是什么?這要通過umask才能了解.
如果想要建立新的目錄的話,那么就使用mkdir (make directory)吧!
????????不過,在默認的情況下,你所需要的目錄得一層一層地建立才行。
????????例如:假如你要建立一個目錄為/home/bird/testing/test1,那么首先必須要有/home 然后/home/bird,再來/home/bird/testing 都必須要存在,才可以建立/home/bird/testing/test1這個目錄。假如沒有/home/bird/testing時,就沒有辦法建立test1的目錄。
????????不過,現在有個更簡單有效的方法,那就是加上-p 這個選項,你可以直接執行:“mkdir -p/home/bird/testing/test1”則系統會自動幫你將/home、/home/bird、/home/bird/testing 依序地建立起目錄。并且,如果該目錄本來就已經存在時,系統也不會顯示錯誤信息。挺快樂吧!
不過不建議常用-p這個選項,因為擔心如果你打錯字,那么目錄名稱就會變得亂七八糟。
????????另外,有個地方你必須要先有概念,那就是默認權限。我們可以利用-m來強制設置一個新目錄相關的權限,例如上表當中,我們給予-m711來給予新的目錄drwx--x--x的權限。不過,如果沒有使用-m選項時,那么默認的新建目錄權限又是什么?這個跟umask有關、
2.4.rmdir(刪除“空”的目錄)
rmdir [-p]目錄名稱
選項與參數:
- -p:連同上層“空的”目錄也一起刪除.
范例:將于mkdir 范例中建立的目錄(/tmp下面)刪除掉。
可直接刪除掉,沒問題
因為尚有內容,所以無法刪除.
您看看,下面的輸出中test與test1不見了。????????使用-p選項,立刻可將 test1/test2/test3/test4一次刪除,不過要注意,這個rmdir 僅能“刪除空目錄”.這個-p選項是從test4開始,因為test4是空的,就被刪除了,回到test3,因為test4被刪除了,test3就變空了,然后test3被刪除,依次類推
如果想要刪除舊有的目錄時,就使用rmdir。
例如將剛剛建立的test 刪掉,使用【rmdir test】即可。
請注意,目錄需要一層一層的刪除才行,而且被刪除的目錄里面必定不能存在其他的目錄或文件,這也是所謂的空目錄(empty directory)的意思。
那如果要將所有目錄下的東西都刪除?
這個時候就必須使用【rm? -r test 】。不過,還是使用rmdir 比較安全,你也可以嘗試以-p選項來刪除上層空的目錄。
?