鳥哥的linux私房菜讀書筆記7

第七章:linux文件與目錄管理

相對路徑與絕對路徑;絕對路徑一定是由根目錄寫起;相對目錄則不是;

cd命令是用來切換目錄的;還有一些比較特殊的目錄:.代表當前目錄;..代表上一層目錄;-代表前一個工作的目錄;~代表目前用戶身份所在的主文件夾;~account代表這個用戶的主文件夾;所有目錄下面都會存在兩個目錄,分別是.和..,分別代表當前目錄和上一層目錄;根目錄的上一層目錄還是根目錄;

常見的處理目錄的命令:cd:切換目錄;pwd:顯示當前的目錄;mkdir:新建一個新的目錄;rmdir:新建一個空的目錄;

默認情況下,mkdir需要一層一層地創建目錄,例如cd home;cd test;…但是可以加上-p這個參數系統自動幫助自動建立目錄,如果已經存在就使用該目錄例如cd –p home/test…;但是不建議這樣,因爲如果打錯字,目錄會變得很糟糕;

rmdir:目錄需要一層一層地刪除,而且被刪除的目錄裏面必定不能存在其他的目錄或者文件;如果連同文件一塊刪除,就得用rm –r test;

執行文件路徑的變量,查看文件屬性的命令ls的完整文件名是:/bin/ls(是絕對路徑),因爲環境變量的緣故,可以在任何地方只輸入ls命令就可以了。用echo $來查看環境變量中的路徑;echo有顯示打印的意思,$表示後面接的是變量;每個目錄用:分開;命令所在目錄沒有被加入到環境變量中,就只能通過絕對路徑來進行執行該命令;

不同身份用戶默認的PATH不同,默認能夠隨意執行的命令也不同;

PATH是可以更改的,所以一般用戶還是可以通過隨意修改PATH來執行某些位於/sbin或/usr/sbin下的命令來查詢;

使用絕對路徑或相對路徑直接指定某個命令的文件名來執行,回比查詢PATH來的正確;

命令應該要放置到正確的目錄下,執行纔會比較方便;

本目錄最好不要放到PATH中去;

目錄放入PATH的方法爲 PATH=”PATH”:/root,以root爲例;

文件與目錄管理

查看文件與目錄:

ls:參數:

ls後可加多個目錄;

-a:全部的文件,聯通隱藏文件一起列出來;

-A:列出全部的文件但不包括.和..這兩個文件夾;

-d僅列出目錄本身,而不是列出目錄在內的文件數據,不列出目錄;

-f直接列出結果,而不進行排序;

-F根據文件、目錄等信息給與附加數據結構;例:*代表可執行文件;/代表目錄;=代表socket文件;l代表FIFO文件;

-h將文件容量以人類較易讀的方式列出來;

-i列出inode號碼;

-l列出長數據串,包含文件的屬性與權限等數據;(常用)

-r將排序結果反序輸出;

-R連同子目錄一起列出來;

-S以文件的大小排序;

-t以時間排序;

--color=never不要一句文件特性給與顏色顯示;

--color=always顯示顏色;

--color=auto讓系統自行依據設置來判斷是否給與顏色;

--full-time以完整的時間模式輸出;

--time=(atime,ctime)輸出訪問時間或改變權限屬性時間而非內容更改時間;

cp命令:複製文件或目錄

cp [options]  source1 source2 …

-a相當於-pdr的意思;-d若源文件爲鏈接文件的屬性;-f爲強制的意思,若目標文件已經存在或無法開啓,則刪除後再進行一次;-i若目標文件已經存在,在覆蓋時會先詢問操作的進行;-l進行硬連接的連接文件創建,而非複製文件本身;-p聯通文件的屬性一塊複製過去;-r遞歸持續複製,用於目錄的複製行爲;-s複製稱爲符號連接文件,即快捷方式文件;-u若比目標文件新的話就複製;

在默認的條件中,cp的源文件與目的文件的權限是不同的,目的文件的所有者通常會是命令操作者本身;

總之,由於cp有種種的文件屬性與權限的特性,所以在複製的時候,必須清楚的認識到:是否需要完整保留來源文件的信息;源文件是否爲軟連接文件;源文件是否爲特殊文件;源文件是否爲目錄;

rm移除文件或目錄

-f忽略不存在的文件,不會出現警告信息;

-i互動模式,再刪除前會詢問用戶是否操作;

-r遞歸刪除。最常用在目錄的刪除。這是非常危險的參數;因爲該目錄或文件肯定會被root刪除掉,因爲系統不會再次詢問及是否要刪除;

刪除-開頭的文件最好加上./或者在前面加上-- ;

mov移動文件與目錄,或更名

-f強制,如果文件已經存在,不會詢問直接覆蓋;

-i若目標文件已經存在時,就會詢問是否覆蓋;

-u若目標文件已經存在,且source比較新,纔會更新;

可將多個文件移動到目標目錄裏面去mv 12 dir;重命名mv 1 2;

取得文件名basename;取得目錄名dirname;

純文本文件類型查看命令:cat:由第一行開始顯示文件內容;tac:從最後一行開始顯示,可以看出tac是tca的倒寫形式;nl顯示的時候,順便輸出行號;more一頁一頁底線是文件;less與more類似,但是比more好的是,它可以往前翻頁;head只看頭幾行;tail只看結尾幾行;od以二進制的方式讀取文件內容;

nl、cat和tac都是一次性將數據一口氣顯示到屏幕上,more和less可以一頁一頁進行翻看;

head默認只顯示前十行,如果想要顯示多行,可用-n選項後加數字,例如head –n 20 filename;數字爲正+100,列出100行後面的所有,數字爲負-100,除了後面100行之外,列出前面所有的行;

非純文本文件查看用od命令;

修改文件時間或創建新文件命令touch;最常用的用途爲:創建一個空的文件;將某個文件日期修改爲目前日期;

文件默認權限,umask值決定,003的話,其他人就減去wx功能;

文件隱藏屬性;設置文件的隱藏屬性的命令chattr;這個命令很重要,尤其是在數據安全上面;用法chattr [+-=] [參數];+增加一個特殊參數,其他不變;-刪除一個特殊參數,其他不變;=僅有後面接的參數;參數有:A、S、a設置後只能增加數據不能刪除數據也不能修改數據只有root可以設置這個屬性、c設置後自動壓縮使用時自動解壓縮、d、i設置後不可以刪除因爲不發寫入或添加數據、s設置後被刪除的話完全從硬盤中被刪除、u與s相反刪除後硬盤中還有可以嘗試找回;

顯示文件隱藏屬性lsattr;

當s這個標誌出現在文件所有者的x權限上面時,例如-rwsr-xr-x,此時就稱爲SetUID,簡稱爲SUID,它的限制和功能爲:SUID權限僅對二進制程序有效;執行者對於該程序需要具有x的可執行權限;本權限僅在執行該程序的過程中有效;執行者將具有該程序所有者的權限;

當s標誌出現在用戶組的x時則稱爲SetGID,SGID,與SUID不同的是,可以對目錄或文件來設置,有以下功能:SGID對二進制程序有用,程序執行者對於該程序來說,須具備x的權限;執行者在執行的過程中將會獲得該程序用戶組的支持;

Sticky Bit目前只對目錄有效;簡寫爲SBIT,作用爲:當用戶對於此目錄具有w,x權限,即具有寫入的權限時;當用戶在該目錄下創建文件或目錄時,僅有自己與root纔有權利刪除該文件;

SUID/SGID/SBIT權限設置:4代表SUID,2爲SGID,1爲SBIT;假設要將-rwxr-xr-x改爲-rwsr-xr-x,就是在原來的基礎上面加上4,就是用chmod4755 filename來設置。

file,查看文件類型;file+filename;

which+命令是根據環境變量PATH所規範的路徑去查詢執行文件的文件名,所以重點是找出執行文件而已!且which後面跟的是完整的文件名,若加上-a參數,就輸出所有可以找到的同名可執行文件,而不是第一個找到的。cd是找不到的,因爲踏實bash內置的命令,而which實在PATH裏面去尋找;

文件名的查找whereis尋找特定的文件。whereis+參數+文件或目錄名;參數有:-b只找二進制;-m只找在說明文件路徑下的文件;-s只找源文件;-u查找不再上述三個選項裏面的其他特殊文件;find也是查找但是在硬盤裏面查找,比較慢,whereis實在一個記錄着系統裏所有文件名的數據庫裏面去查找,所以會比較快;

locate的後面輸入部分名稱後就可以找到結果,當天新建的文件必須要更新數據庫才能找到;

find。。。

權限與命令間的關係:

讓用戶能進入某目錄成爲可工作目錄的基本權限是:

    可使用的命令:例如cd等切換工作目錄的命令;

    目錄所需權限:用戶對這個目錄至少需要x的權限;

    額外需求:如果用戶想要在這個目錄內ls查閱文件名,則用戶對這個目錄還需要有r的權限;

用戶在某個目錄內讀取一個文件的基本權限是什麼:

    可使用的命令:例如本章談到的cat、more、less等;

    目錄所需權限:用戶對這個目錄至少需要x的權限;

    文件所需權限:用戶對這個文件至少需要r的權限;

讓用戶可以修改一個文件的基本權限是什麼:

    可使用的命令:例如nano或未來要介紹到的vi編輯器;

    目錄所需權限:用戶在該文件所在目錄至少需要x的權限;

文件所需權限:用戶對該文件至少要有r,w的權限;

讓一個用戶可以創建一個文件的基本權限是什麼:

    目錄所需權限:用戶在該目錄要具有w,x的權限,重點在於w;

讓用戶進入某目錄並執行該目錄下的某命令的基本權限是什麼:

    目錄所需權限:用戶在該目錄至少要有x的權限;

文件所需權限:用戶在該文件至少需要有x的權限;

重點回顧:

絕對路徑一定由根目錄寫起;相對路徑不是由根目錄寫起;

特殊目錄有:.,..,-,~,~account,需要注意;

與目錄相關的命令有cd,mkdir,rmdir,pwd等命令;

rmdir僅能刪除空目錄,要刪除非空目錄需使用rm –r命令;

用戶能使用的命令是依據PATH變量所規定的目錄去查找的;

不同的什麼(root與一般用戶)系統默認的PATH並不重要。差異較大的地方在於/sbin和/usr/sbin;

ls可以查看文件的屬性,尤其是-d,-a,-l等參數特別重要;

文件的複製、刪除、移動可以分別使用cp,rm,mv等命令來操作;

檢查文件的內容(讀文件)可使用的命令包括:cat,tac,nl,more,less,head,tail,od等;

cat –n與nl均顯示行號,但默認的情況下,空白行不會編號並不相同;

touch的目的在修改文件的時間參數,但也可以用來創建空文件;

一個文件記錄的時間參數有三種,分別是atime,ctime,mtime,ls默認顯示是mtime;

除了傳統的rwx權限之外,在Ext2/Ext3文件系統中,還可以使用charrt與lsattr設置及查看隱藏屬性。常見的包括只能新增數據的+a與完全不能更動文件愛你的+i屬性;

新建文件/目錄時,新文件的默認權限使用umask來規範;

文件具有SUID的特殊權限,代表當用戶執行此二進制程序時,在執行過程中用戶會暫時具有程序所有者的權限;

目錄具有SGID的特殊權限時,代表用戶在這個目錄下面新建的文件用戶組都會與該目錄的用戶名組相同;

目錄具有SBIT的特殊權限時,代表在該目錄下用戶創建的文件只有自己與ROOT能夠刪除;

查看文件的類型可以使用file命令來查看;

查找命令的完整文件名可用which或type,這兩個命令都是通過PATH變量來查找文件名;

要查找文件的完整文件名可以使用whereis或locate到數據庫文件去查找,而不實際查找文件系統;

利用find可以加入許多參數來直接查詢文件系統,已獲得自己想知道的文件名;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章