本文講了一些文件和目錄本身的基礎知識和操作,如新建、複製、移動等,並不涉及文件內容的查看、編輯、搜索等操作。 文件歸屬 文件的歸屬只有三種關係: 所有者u:即文件的擁有者,並且一個文件同時只能有一個所有者,一般是誰創建的文件,這個文件的所有者就是誰。 所屬組g:文件歸屬的組,並且一個文件同時只能歸屬 ...
本文講了一些文件和目錄本身的基礎知識和操作,如新建、複製、移動等,並不涉及文件內容的查看、編輯、搜索等操作。
文件歸屬
文件的歸屬只有三種關係:
- 所有者u:即文件的擁有者,並且一個文件同時只能有一個所有者,一般是誰創建的文件,這個文件的所有者就是誰。
- 所屬組g:文件歸屬的組,並且一個文件同時只能歸屬於一個組,只有組中的成員才能操作此文件。
- 其他人o:非前兩者關係的用戶就是其他人。
文件許可權
Linux中許可權的表示由四部分組成,如-rw-r--r--,第一部分為第一個字元,表示文件類型,常用文件類型有-(二進位文件)、d(目錄)和l(軟連接文件,相當於Windows中的快捷方式)。接下來每三個字元為一組的三個部分,分別代表該文件所有者u、所屬組g和其他人o所擁有的許可權,而每個部分的許可權由三個字元表示其擁有的r讀、w寫和x執行許可權,如果有該許可權則用對應的字母表示,如果沒有該許可權則用-表示。
目錄的rwx許可權如下(文件的rwx許可權很好理解,但是目錄的rwx許可權是有些差別的):
- r:可以列出目錄中的內容。
- w:可以在目錄中創建和刪除文件。
- x:可以進入目錄。
ls命令
ls [選項] [目錄]:列出目錄下的所有文件及子目錄。
選項:
- -a:顯示目錄下的所有內容,包括隱藏文件(Linux中以點“.”開頭的文件或目錄為隱藏文件)。
- -l:顯示目錄下內容的詳細信息,分別為許可權、引用繫數(相當於引用計數)、文件所有者、文件所屬組、文件大小(單位Byte)、文件最後一次修改時間(Linux中沒有創建時間的概念)、文件名。
- -h:人性化顯示,將文件等內容的大小以較為人性化的方式顯示,如M、G等,而不是預設的單位位元組。
- -d:顯示當前所在目錄或指定目錄本身。
- -i:顯示文件或目錄的id號(也稱為i節點號)。
mkdir命令
mkdir [-p] 目錄 [目錄1 目錄2 ...]:用於創建一個或多個空白目錄。-p選項是用於遞歸創建目錄。
cd命令
cd [目錄]:切換到指定目錄,目錄還以使用一個點“.”表示當前目錄,兩個點“..”表示上一級目錄。
pwd命令
顯示當前目錄的絕對路徑。
rmdir命令
rmdir 目錄:刪除一個空目錄。
rm命令
rm [-rf] 文件或目錄:刪除文件或目錄,不加選項則預設刪除文件。
- -r:刪除目錄。
- -f:強制執行。
cp命令
cp [-rp] 一個或多個原文件或目錄 目標文件或目錄:複製文件或目錄,如果不加選項,則預設複製文件。當目標文件或目錄不存在時,相當於複製並重命名。
- -r:複製目錄。
- -p:保留文件屬性,如最後一次修改時間等。
mv命令
mv 原文件或目錄 目標文件或目錄:移動(剪切)文件或目錄。當目標文件或目錄不存在時,則相當於剪切並重命名。
文件或目錄重命名:Linux中沒有直接的重命名命令,但是一般使用mv來實現文件或目錄的重命名,即將文件或目錄移動到“原位置”,但是名稱卻變了,如“mv /tmp/test.txt /tmp/linux_test.txt”就可以將test.txt重命名為linux_test.txt。
touch命令
touch 一個或多個文件或目錄:如果文件不存在,則會創建一個或多個空白文件(多個空白文件使用空格隔開,如果文件名中含有空格,文件名需要使用雙引號括起來,但建議不要使用空格來命名文件)。如果文件或目錄已經存在,則會根據指定的選項修改文件的時間屬性,如最後一次修改時間(這裡沒有列出相應的選項,需要時可自行查看)。
註意:新建的文件是沒有執行許可權的,所以如果新建的文件是腳本,則需要先賦予它執行許可權才能執行這個腳本。
ln命令
ln [-s] 原文件 目標文件:生成鏈接文件(即目標文件,它指向原文件),預設生成硬鏈接文件。-s選項指定生成軟鏈接文件。
軟鏈接:類似Windows中的快捷方式,只是一個指向另一個文件的鏈接而已,並且Linux中的軟鏈接文件的許可權永遠都是lrwxrwxrwx,以及大小都是固定的很小的位元組數。
硬鏈接:硬鏈接的信息與原文件的信息都是一樣的,並且其中一個文件更新後,硬鏈接文件也會同步更新,相當於cp -p命令再加上同步跟新的功能。之所以它能同步更新,是因為硬鏈接的i節點和原文件的i節點是相同的(而Linux就是通過i節點來識別不同的文件)。
軟鏈接與硬鏈接的差別(或者說硬鏈接的特點):
- 硬鏈接是不能跨分區的。
- 硬鏈接是不能指向目錄的。
locate命令
locate -i 文件名:在文件資料庫中查找文件。(預設區分大小寫,-i選項表示不區分大小寫)
這個命令搜索速度非常快,幾乎秒搜,find命令是去硬碟上搜索,而find是在自己維護的一個文件資料庫中查找,這個文件資料庫會定期自動更新。但是文件資料庫是不會收錄/tmp目錄下的文件的。
updatedb:手動更新文件資料庫。
find命令
find 搜索範圍 匹配條件:搜索文件。
find是直接在硬碟上搜索,所以它的消耗是非常大的,所以使用的時候應該儘量縮小搜索範圍,匹配條件也越精確越好。而且最好不要在系統負載較高時使用這個命令。
常用選項:
- -name:根據文件名搜索。如“find / -name init”表示在根目錄的範圍內搜索文件名為init的文件(精確匹配)。如果想要模糊匹配,可以使用通配符,如find / -name *init*(星號*匹配任意字元,問號?匹配單個字元)。
- -iname:不區分大小寫進行文件查找。
- -size:根據文件大小進行搜索,+表示大於,-表示小於,=表示等於。查找大小的單位為一個數據塊,Linux中一個數據塊的大小為512位元組,即0.5KB,所以搜索的時候需要自己轉換以下。如“find / -size +204800”表示在根目錄下查找大於100MB的文件(100MB=102400KB=204800個數據塊)。
- -user:根據所有者來進行搜索。
- -group:根據所屬組來進行搜索。
- -amin:根據文件訪問時間查找,時間單位為分鐘。
- -cmin:根據文件屬性(屬性即ls -l能查看到的內容)的改變時間查找,時間單位為分鐘。如“find /etc -cmin -5”表示在/etc目錄下查找5分鐘內文件屬性被修改過的文件。
- -mmin:根據文件內容的改變時間查找,時間單位為分鐘。
- -a:連接選項,邏輯與,表示需要兩個條件同時滿足。如find /etc -size +1638840 -a -size -204800。
- -o:連接選項,邏輯或,表示兩個條件滿足其中任意一個即可。
- -type:根據文件類型查找,f表示文件,d表示目錄,l表示軟鏈接。
- -exec/-ok 命令 {}\;:使用-exec(直接執行,不會詢問)或-ok(執行命令時會進行詢問)對查找結果執行某個命令,{}\;是固定的寫法,{}表示查找結果,\只是對後面分號;的轉義而已。如“find /etc -name init -exec ls -l {}\;”。
- -inum:根據i節點查找。