文件和目錄管理相關知識總結:
1、文件的屬性和權限:
1】文件的屬性包括:文件的類型,文件的權限、文件名、文件大小、文件的屬主屬組、文件最近一次被修改的時間等;
2】文件的權限,分爲屬主、屬組和其他用戶的權限,他們對文件可能具有r(read)、w(write)、x(excute)等權限;
“r”:代表可以讀該文件的內容;
“w”:代表可以編輯、修改和刪除該文件的內容;
“x”:代表可以執行該文件,但是否能夠執行成功是不確定的,如果該文件不是一個可執行文件,即使賦予其x權限,也不能被執行。
例如:-rwxr-xr-- 1 root root 0 Mar 25 00:54 lq
“-”:文件的類型,lq爲普通文件;
“rwx”:屬主具有讀、寫、執行的權限;
“r-x”:屬組具有讀和執行的權限;
“r--”:其他用戶對該文件具有讀的權限;
“1”:代表文件lq被硬鏈接的次數;一般來說文件的硬鏈接爲1,目錄的硬鏈接爲2。
“root”:代表文件lq的屬主;
“root”:代表文件lq的屬組;
“0”:代表文件的大小,單位爲字節;當是目錄時,只表示目錄本身的大小,不包含目錄中文件的大小。
“Mar 25 00:54”代表文件最近一次被修改的時間;
“lq”:代表文件名;
3】改變文件屬性和權限的命令:
改變文件的屬組:chgrp 組名 文件名
chown :組名 文件名
改變文件的屬主:chown 屬主 文件名
改變文件的權限:使用chmod命令,具體格式如下:
chmod u+x g-r o+w 1.sh:代表對1.sh文件的屬主增加執行權限,屬組減少讀權限,其他用戶增加寫權限。
<+:代表增加某權限;-:代表去掉某權限;u:代表對屬主的權限做修改;g:代表對屬組的權限做修改;o:代表對其他用戶的權限做修改>
2、目錄的權限:
目錄的權限也分爲三種:r w x;
r:代表可讀,即可以用命令ls 來查看該目錄下的文件及目錄;
w:代表可寫,即可以對該目錄下的文件增加、刪除、重命名等操作;
x:代表可以cd到該目錄下面,把該目錄作爲工作目錄使用。
t:粘滯位,如果路徑設置有粘滯位,則該路徑下的文件只有屬主和root用戶具有重命名和刪除的功能,其他用戶都不能具有這兩項功能。
3、文件名後綴代表的含義:
文件名後綴並不代表着該文件屬於什麼類型的文件,這是linux與windows的不同之處,它只是向我們暗示了該文件可能的用途及信息。
4、linux中不同的文件類型:
“d”:代表目錄文件;
“-”:代表普通文件;
“l”:代表軟鏈接文件(或者符號鏈接文件),是一種特殊文件;
“s”:代表套接字文件;
“b”:代表塊設備文件,它的訪問是按照某種特定大小的數據塊隨機進行的。例如硬盤、軟盤等;它是一種特殊文件。
“c”:代表字符設備文件,字符設備通常指的是線性設備,在數據存取的時候是有先後順序的、串行的設備。例如鍵盤、鼠標等;它是一種特殊文件。
“p”:代表管道文件,它主要用在解決多個程序同時訪問同一個文件所造成的錯誤問題;
5、文件的命名:
1】單一文件名不超過255個字符;含路徑和目錄的文件名的文件名不超過4096個字符;
2】不使用linux中有特殊含義的字符,例如:(、)、{、}、|、!、?、/、.、<、>、&、$、[、]、-、+等。
6、絕對路徑和相對路徑:
絕對路徑:以“/”開頭的路徑都是絕對路徑;
相對路徑:相對於當前路徑的目標路徑表示方式;
7、touch:專門用於改變文件的時間標籤。
Modify:修改文件的內容;Change:改變文件的屬性;
touch -a 文件名:只改變最近一次的訪問時間;
touch -m 文件名:只改變最近一次的修改時間;
touch -a|m -t [[CC]YY]MMDDhhmm[.ss] 文件名:指定文件的某一個時間戳;
touch 文件名:創建一個大小爲零的空白文件;
touch -a|m -c 文件名:當在改變一個文件的某個時間戳時,如果某文件不存在,則不創建空白文件。
8、幾個特殊的目錄:
. 代表此層目錄;
..代表當前目錄的父目錄;
<特別注意:如果我們當前處在根目錄下面,則.與..代表的是相同的意思,都是當前目錄。>
- 代表切換目錄之前的目錄;
~ 代表當前用戶的家目錄;
~acount 代表account用戶的家目錄;
9、文件的特殊權限位:
SUID、SGID和Sticky位:
SUID,屬主的x權限位爲s或者S,s代表屬主原來具有x權限,S代表屬主原來不具有x權限,該權限位僅設置在二進制文件上,該權限可以使二進制文件暫時(在執行過程中)獲得對某個文件具有屬主的權限。
SGID,屬組的x權限位爲s或者S, s代表屬主原來具有x權限,S代表屬主原來不具有x權限。功能類似於SUID,只是該二進制文件暫時獲得對某個文件具有屬組的權限。
Sticky位,其它用戶的x權限位爲t或者T,t代表屬主原來具有x權限,T代表屬主原來不具有x權限。該位只針對目錄有效,如果某個目錄設置了該粘滯位,那麼只有root用戶和該文件的屬主纔有權利刪除該目錄下面的文件,其他的用戶只能刪除屬於自己的文件。
SUID、SGID和Sticky位的設置:
用數字表示法:
4代表SUID,2代表SGID,1代表Sticky位。例如:設置test文件的權限爲:-rwsrwsrwt ,chmod 7777 test。也可以通過如下方式進行設置:chmod ug+s,o+t test 。
10、file:查看文件的類型
格式爲:file 文件名;查看結果可以是ASCII的純文本文件、binary文件、目錄文件或者data文件。
11、which命令:該命令是根據PATH環境變量所規範的路徑去查詢“執行文件”的文件名,不在PATH環境變量裏的命令是不能被查詢出來的。
12、文件名的查找命令:
whereis命令:whereis [options] 文件或者目錄名
whereis -b :只找二進制格式的文件;
-s :只找源文件;
-m :只找在說明文件manual路徑下的文件;
-u :查找不在上述選項中的其他所有文件;
locate命令:locate [options] 與某字符串相關的文件名
locate -i :忽略大小寫的差異;
-r :後面可接正則表達式的顯示方式。
(注意whereis和locate都是從數據庫/var/lib/mlocate中查找的,速度比較快,但是剛剛創建的文件可能不能夠找到。因爲數據庫的創建默認是每天執行一次,所以此時應手動更新數據庫,方法爲:# updatedb,該命令會查找硬盤來更新數據庫的內容。)
find命令:比較慢的文件查找方法,但是其正確性非常高。當執行find命令的時候,它要去查找硬盤中的數據,找到後從硬盤中讀入。
find 目錄名 -mtime NUM :在某個目錄下面查找,在NUM之前的“一天內”文件內容被修改的文件;
+NUM:在NUM天之前的文件,不包含NUM那一天;
-NUM:在NUM天內被修改過的文件;
-newer file:列出比file文件還要新的文件;
例如:設定設定NUM=3,則:
find /etc/ -mtime 3:在目錄/etc/下面查找前3到4天內文件內容被修改的文件;
find /etc/ -mtime +3:在目錄/etc/下面查找前四天之前的文件內容被修改的文件;
find /etc/ -mtime -3:在目錄/etc/下面查找前3天內文件內容被修改的文件;
find 目錄名稱 -uid NUM :在某目錄下面查找uid爲NUM的文件;
-gid NUM :在某目錄下面查找gid爲NUM的文件;
-user Name:在某目錄下面查找用戶名爲Name的文件;
-group Name:在某目錄下面查找組名爲Name的文件;
-nouser :尋找文件的所有者不存在的文件;
-nogroup:查找不屬於任何組的文件;
find -name 文件名:查找指定文件名的文件;
-size [+-]SIZE:如果是+,則表示查找比SIZE大的文件;如果是-,則表示查找比SIZE小的文件。
-type TYPE:查找不同類型的文件;
-perm mode:查找文件權限剛好等於mode的文件。
-perm +mode:查找包含任意mode權限的文件。
-perm -mode:查找必須要包含全部mode權限的文件。
find -exec comend
例如;find / -perm +7000 -exec ls -l {} \;
"/":表示在根目錄下面查找;
+7000:表示SUID,SGID和Sticky位任意一個存在即可;
-exec 和 \;中間表示comend命令;
{}:表示find的查找結果的存放位置;
13、對目錄進行操作的幾個常用命令:
cd 切換目錄(Change Directory);
pwd 顯示當前處於哪個目錄下面;
mkdir 創建新目錄:
mkdir -m 目錄名稱 創建目錄的時候指定目錄的權限;
mkdir -p 目錄名稱 創建目錄的時候連同它的上級目錄一同創建,如果它的上級目錄已經存在,系統也不會顯示錯誤信息;
rmdir 刪除空目錄;(注意:一定是空目錄。)
14、PATH環境變量:
PATH的特點:
1】不同身份用戶默認的PATH不同,默認能夠隨意執行的命令也不相同。
2】PATH是可以修改的。
3】使用絕對路徑或者相對路徑直接指定某個命令的文件名來執行,會比查詢PATH來的正確。
4】命令應該要放置到正確的目錄下,執行纔會比較方便。
5】本目錄最好不要放到PATH當中。
15、ls命令:
ls -a 列出所在目錄所有的文件,連同隱藏文件一起列出來。
-A 列出全部的文件,但不包括.與..這兩個目錄。;
-d 僅列出目錄或者文件本身,而不列出目錄下的文件或子目錄。
-f 直接列出結果而不進行排序。
-F 增加文件的附加信息,例如:*代表可執行;/代表目錄;=代表socket文件;|代表FIFO文件。
-h 將文件大小做單位轉換。
-i 列出inode號碼。
-l 列出文件的詳細信息。
-n 列出UID和GID,而不是屬主和屬組名。
-r 逆序顯示目錄及子目錄。
-R 顯示目錄及子目錄。
-S 以文件容量大小排序,而不是用文件名排序。
-t 依時間排序,而不是用文件名排序。
-Z 顯示文件的安全上下文標籤。
--color=never:不要依據文件特性給予顏色顯示。
--color=always:顯示顏色。
--color=auto:讓系統自行依據設置來判斷是否給予顏色顯示。
--full-time:以完整時間模式輸出。
--time={atime,ctime}輸出最近一次的訪問時間和文件改變的時間。
16、cp命令:
cp -p 連同文件的屬性一起復制過去,而非使用默認屬性。
-d 若文件爲連接文件,則複製連接文件的屬性,而非文件本身的屬性。
-f 若目標文件已經存在且無法開啓,則刪除後再嘗試一次。
-r 遞歸複製,複製目錄的時候務必要帶上。
-a 相當於-pdr。
-i 在目標文件已經存在時,在複製的時候先詢問操作的進行。
-u 若目標文件比源文件舊才執行復制操作。
(注意:當我們在備份的時候,某些需要特別注意的特殊權限文件,例如密碼文件/etc/shadow以及一些配置文件,就不能直接以cp來複制,而必須要加上-a或者是-p等可以完整複製文件權限的參數才行。)
17、rm命令:
rm -f 當刪除一個不存的文件時,不會出現警告信息。
-r 遞歸刪除,要謹慎小心使用。
-i 在刪除前會詢問用戶是否操作。
(注意:一些特殊文件名的刪除方法:例如文件名爲:--aa-,刪除該文件的方法:rm ./--aa- 使用路徑來刪除。)
18、mv命令:
mv -f 如果目標文件已經存在,不會詢問直接覆蓋。
-i 如果目標文件已經存在,詢問是否覆蓋。
-u 如果目標文件已經存在,且原文件比較新,則進行覆蓋更新操作。
19、rename命令:批量修改文件名。
rename from to file
例如:rename te la test ,將test重新命名爲last。
20、基名和目錄名的獲取:
獲取基名:basename 帶路徑的文件名
獲取目錄名:dirname 帶路徑的文件名
21、文件內容查詢命令:
cat命令:
cat -b 列出行號,僅針對非空白行做行號顯示,空白行不標行號。
-E 將結尾的$符號顯示出來。
-n 連同空白行號一起打印出來。
-T 將tab按鍵以^I顯示出來。
-v 列出一些看不出來的特殊字符。
-A 相當於-vET。
more命令:翻頁查看文件內容。
more 文件名
在查看的過程中,可以進行如下操作:
按空格鍵,向下翻一頁。
按Enter鍵,向下滾動一行。
/String,向下查詢String字符串。
:f ,立即顯示所在的行號和文件名。
q,退出查看該文件。
b,往文件頭部翻頁。
less命令:翻頁查看文件內容。
在查看的過程中,可以進行如下操作:
按空格鍵,向下翻一頁。
[pagedown],向下翻動一頁。
[pageup],向上翻動一頁。
/String ,向下查詢字符串。
?String,向上查詢字符串。
q,退出查看該文件。
22、文件與目錄的默認權限:
若用戶創建文件,則默認沒有x權限,只有r和w權限,即文件權限的最大值爲666,-rw-rw-rw-。
若用戶創建目錄,則目錄的最大權限是777,drwxrwxrwx。
而實際用戶創建文件的權限和目錄的權限則取決於文件或目錄的默認權限和umask的值。默認的umask的值爲022,即用戶創建文件的最終權限爲-rw-r--r--,創建目錄的最終權限是drwxr-xr-x。
23、權限與命令間的關係:
1】讓某個目錄成爲某個用戶的工作目錄,則該用戶對該目錄具有x權限;
2】用戶在某個目錄讀取文件的基本權限,則用戶要對該目錄具有x權限,對該文件具有r權限。
3】用戶可以修改一個文件的基本權限,則用戶對該文件所在的目錄具有x權限,對文件具有r和w權限。
4】用戶可以創建一個文件的基本權限,則用戶對該目錄具有w和x權限;
5】用戶可以進入該目錄,並可以執行該目錄下的某個命令,則用戶對該目錄具有x權限,對文件具有x權限。
24、stat命令:查看文件的時間戳:最近一次的訪問時間、最近一次的修改時間、最近一次的改變時間。