Linux檔案操作

2021-09-08 04:10:31 字數 4883 閱讀 2480

linux的基本思想之一是:一切都是檔案。

系統中的所有都被視為乙個檔案,包括命令、硬體和軟體裝置、作業系統、程序等等對於作業系統核心而言,都被視為擁有各自特性或型別的檔案。

為了統一linux各分支(distributions)的目錄結構,引入了檔案目錄配置標準(file hierarchy system,fhs)

linux的目錄是以目錄樹的結構組織的,所有目錄都在根目錄下(/), 其它所有的目錄、檔案、裝置都在/之下.

從根目錄開始的檔案路徑稱為絕對路徑,同一系統下的每個檔案的絕對路徑是唯一的

.表示工作目錄(如./file),..表示上一層目錄,-代表上乙個工作目錄,代表當前使用者的home目錄,~使用者名稱代表相應使用者的home目錄

根目錄下第一層目錄為:

儲存器儲存的資料檔案,由ls -l命令將這類檔案的型別標記為[-].

可以大致分為:

二進位制檔案是否可執行不由字尾名而由是否擁有x許可權來確定.

檔名由主檔名和字尾名兩部分組成,以'.'開始檔案為隱藏檔案.ls命令不顯示隱藏檔案,需要使用ls -a引數顯示隱藏檔案.

linux下的字尾名只提醒檔案型別,不具有檔案關聯. 現在很多linux桌面環境都提供了根據字尾名呼叫相應程式讀取檔案的功能.

目錄,型別顯示為[d].

類似windows下的快捷方式,型別顯示為[l].

系統外設在linux下被認為是乙個檔案, 分為:

-塊裝置檔案

提供隨機訪問的裝置,如硬碟。型別標為[b].

串列埠的介面裝置,只能進行順序讀取。例如鍵盤、滑鼠等等。型別標為 [c].

網路通訊套接字(socket),型別標記為[s]

解決多程序併發讀寫同乙個檔案的特殊型別,型別標記為[p].

ls命令可以顯示檔案的屬性和許可權,

$ls -al

-rwxr-xr-- 1 root root 42304 sep 4 18:26 install.log

第乙個字元代表檔案的型別, [-]代表檔案,[d]代表目錄,[l]代表鏈結檔案, [b]塊裝置檔案,[c]字元裝置檔案

後面的九個字元分為三組,每組字元依次代表檔案所有者(user),使用者組(group),他人(others)的許可權. 超級使用者(root)對檔案的訪問是不受限制的.

每組由r,w,x三個字元組成,[r]代表可讀(read),[w]代表可寫(write),[x]代表可執行(execute)。三個字元的位置不會改變,如果沒有該許可權相應位置將出現[-].

對檔案而言,r代表讀取檔案內容的許可權,w代表修改檔案的許可權但沒有刪除檔案的許可權,x代表執行許可權。

windows系統下的檔案可否執行由字尾名決定,linux作業系統下檔案能否執行取決於有無可執行許可權,當然執行不可執行的檔案系統將報錯。

對目錄而言,r代表讀取目錄內容的許可權,使用者可以用ls命令檢視目錄下的內容; 目錄的可執行許可權代表能否使用cd命令將該目錄變成工作目錄,如果無法轉換成工作目錄那麼使用者也無法執行該目錄下的命令。

對目錄的可寫許可權[w]代表可以對目錄下的檔案和子目錄進行刪除(即使對該檔案/目錄本身沒有任何許可權),重新命名,移動,複製,新建等所有許可權。但是,擁有該許可權不能對目錄本身進行上述操作,那是它父目錄的許可權。

第二列的數字表示有多少檔名鏈結此節點(inode), 檔案系統通過inode記錄檔案的許可權和屬性.

第三列表示檔案所有者,第四列表示所屬使用者組.

第五列表示檔案大小單位為位元組, 第六列表示最後修改日期.

最後一列是檔名, 以"."開頭的檔名表示為隱藏檔案.

linux的檔案包括修改時間(modification time,mtime); 狀態改變時間(status time, ctime);讀取時間(access time, atime).

當檔案被讀取時atime將會更新,當屬性或許可權改變時將會更新ctime但不會更新mtime,後者只會在檔案內容被改變時更新。通常使用ls命令檢視時顯示的是檔案的mtime.

** 改變檔案所有者 **

chown [-r] [user] [file]

r代表遞迴(recursive)即應用到所有子目錄和子資料夾

user引數可以同時修改所有者和使用者組, 中間用":"或"."分隔, 如chmod user.grp file

也可以只修改檔案使用者組,chmod .grp file

** 修改檔案使用者組 **

chgrp [-r] [grp] [file]

用法類似chown, 但只能修改使用者組

** 改變檔案許可權 **

chmod [-r] [expr] [file]

-r選項代表遞迴, expr為許可權表示式有數字式或符號式兩種.

數字式的每一位由1,2,4分別代表x,w,r三種許可權, 0代表無許可權. 三者之和為某一身份使用者的所有許可權如7代表所有許可權, 5代表rx許可權.

數字式由三位數字組成,分別代表owner, group和other的許可權, 如chmod 777 file代表所有人都有rwx許可權,chmod 740代表owner有rwx, group有r許可權,其它人無許可權.

符號式用u,g,o代表所有者, 使用者組和其它使用者, a代表所有使用者. r,w,x代表讀,寫,執行許可權三者可以以任意順序組合.

"="代表指定使用者許可權, 如chmod a=rxw給予所有使用者所有許可權,chmod g=rx,o=r給予使用者組rx許可權無w許可權, 其他人r許可權無wx許可權.

"+"代表新增許可權,若使用者已擁有新增的許可權則不起作用, 'chmod a+r'所有人新增r許可權

"-"代表移除許可權, 若使用者本無此許可權則不起作用,chmod o-x移除other的x許可權.

umask [-s] [expr]

umask用於設定許可權掩碼, 掩碼是預設不給與使用者的檔案許可權.

在沒給出掩碼引數時該命令將顯示當前掩碼.顯示掩碼時,使用-s引數將顯示符號式預設許可權.

$ umask

0002

$ umask -s

u=rwx,g=rwx,o=rx

設定掩碼時只能採用數字式, 後三位的含義與chmod的數字式表達相同, 第一位代表特殊檔案許可權.

umask中的第一位代表特殊檔案許可權suid,sgid,sbit.

suid(set uid)僅對二進位制可執行檔案有效,且使用者必須擁有其執行許可權。suid屬性的檔案在其執行期間(run tiime),執行者擁有和檔案所有者相同的許可權。

sgid(set gid)與suid類似,只是執行者只擁有使用者組許可權.

當檔案被設定了suid或sgid許可權時,使用ls命令查詢許可權時所有者或使用者組的執行許可權位置會顯示s而非x

sbit(sticky bit)僅對目錄有效,當使用者對目錄擁有w、x許可權時,其在其下建立的檔案或目錄只有自己或著root可以刪除。設定了sbit許可權後,others執行許可權位置將顯示t.

這裡只列出指令常用操作, 更詳細的操作請使用man--help等幫助系統和文件.

cd [path]

切換工作目錄

pwd

顯示工作目錄(print working director).

在使用鏈結檔案作為工作目錄時:

ls [dir]

選項:複製檔案或目錄

cp [src] [dest]

選項:--i(--interactive)覆蓋檔案之前先詢問使用者

cp的原始檔可以是單個或多個,當原始檔是多個時目標檔案必須是目錄.

cp產生的目標檔案許可權通常是命令操作者,若要保留原許可權需要使用p引數.

移除檔案或目錄

rm [file/dir]

選項:引數也可以是正規表示式

mv [src] [dest]

移動或重新命名檔案(目錄)

選項:mkdir [dir]

建立空目錄

選項:rmdir [dir]

刪除空目錄

cat [file]

檢視文字檔案

選項:touch [file]

修改檔案時間,當檔案不存在時建立空檔案。

-a 僅修改atime

-c 僅修改ctime

-d 不使用系統日期,而使用給定日期

-m 僅修改mtime

-t 不使用系統時間,而使用給定時間

就是以行為單位反向檢視,與cat正好相反(連名字也是~)

head [file]

顯示檔案開頭或結尾

-c k 顯示開頭(結尾)的k個字元。head中-k 表示除最後k個字元外均顯示,tail中+k表示除開頭k個字元外均顯示。

-n k 顯示開頭(結尾)的k行。head中-k 表示除最後k行外均顯示,tail中+k表示除開頭k行外均顯示。

預設顯示前(末)10行,可以通過選項來調整。

less [file]

可以上下翻頁,操作和man page相同提供翻頁,查詢等操作。

more [file]

可以實現翻頁檢視,只能向下查詢。:f可以顯示檔名和行數

顯示行號的輸出,可以進行更多個性化設定

更多操作參見linux幫助系統

linux 檔案操作

1 cat 開啟檔案 cat name.txt 開啟檔案name.txt cat 1.txt 2.txt 開啟2個檔案 cat n name.txt 開啟檔案後顯示行號 2 vi 輸出,刪除,查詢,替換,塊操作 等文字操作 vi 的三種基本工作模式 命令列模式,文字輸入模式,末行模式 命令列模式 不...

Linux 檔案操作

1,查詢檔案 find name 名稱 ls find atime 10 記著有乙個點號 兩邊都有空格,代表當前目錄,如果希望顯示系統的所有大於10天的檔案 可以將 換成 代表根目錄 find mtime n print n天前那天改過的檔案 find mtime n print n天以前改過的檔案...

linux檔案操作

unix檔案操作 讀寫操作 標c檔案讀寫 file 代表乙個開啟的檔案 unix linux的檔案讀寫函式 linux系統中 幾乎一切都是檔案,記憶體 目錄 硬體裝置都可以看成檔案。比如 記憶體 對應目錄 proc pid 目錄 可以用 vi 檢視,也是檔案 裝置 dev tty 鍵盤 顯示器 de...