Linux命令-文件管理(一)git
1.命令:catshell
cat命令用於把檔案串鏈接後傳到基本輸出(螢幕或加 > fileName 到另外一個檔案)ui
使用權限:全部使用者spa
語法格式:cat [-AbeEnstTuv] [--help] [--version] fileName操作系統
參數說明:日誌
-n 或 --number 由 1 開始對全部輸出的行數編號code
-b 或 --number-nonblank 和 -n 類似,只不過對於空白行不編號遞歸
-s 或 --squeeze-blank 當遇到有連續兩行以上的空白行,就代換爲一行的空白行utf-8
-v 或 --show-nonprinting字符串
實例:
1.把 textfile1 的檔案內容加上行號後輸入 textfile2 這個檔案裏
cat -n textfile1 > textfile2
2.把 textfile1 和 textfile2 的檔案內容加上行號(空白行不加)以後將內容附加到 textfile3 裏。
cat -b textfile1 textfile2 > textfile3
3.清空/etc/test.txt檔案內容
cat /dev/null > /etc/test.txt
cat 也能夠用來製做鏡像文件。例如要製做軟碟的像文件,將軟碟放好後打
cat /dev/fd0 > OUTFILE
相反的,若是想把 image file 寫到軟碟,請打
cat IMG_FILE > /dev/fd0
注:
1. OUTFILE 指輸出的鏡像文件名。
2. IMG_FILE 指鏡像文件。
3. 若從鏡像文件寫回 device 時,device 容量需與至關。
4. 一般用在製做開機磁片。
----------------------------------------------------------------------------------------------
2. chattr命令
Linux chattr命令用於改變文件屬性。
這項指令可改變存放在ext2文件系統上的文件或目錄屬性,這些屬性共有如下8種模式:
a:讓文件或目錄僅供附加用途。
b:不更新文件或目錄的最後存取時間。
c:將文件或目錄壓縮後存放。
d:將文件或目錄排除在傾倒操做以外。
i:不得任意更動文件或目錄。
s:保密性刪除文件或目錄。
S:即時更新文件或目錄。
u:預防之外刪除。
語法: chattr [-RV][-v<版本編號>][+/-/=<屬性>][文件或目錄...]
參數
-R 遞歸處理,將指定目錄下的全部文件及子目錄一併處理。
-v<版本編號> 設置文件或目錄版本。
-V 顯示指令執行過程。
+<屬性> 開啓文件或目錄的該項屬性。
-<屬性> 關閉文件或目錄的該項屬性。
=<屬性> 指定文件或目錄的該項屬性。
實例
用chattr命令防止系統中某個關鍵文件被修改:
chattr +i /etc/resolv.conf
lsattr /etc/resolv.conf
會顯示以下屬性
----i-------- /etc/resolv.conf
讓某個文件只能往裏面追加數據,但不能刪除,適用於各類日誌文件:
chattr +a /var/log/messages
----------------------------------------------------------------------------------------------
chgrp命令
Linux chgrp命令用於變動文件或目錄的所屬羣組。
在UNIX系統家族裏,文件或目錄權限的掌控以擁有者及所屬羣組來管理。您可使用chgrp指令去變動文件與目錄的所屬羣組,設置方式採用羣組名稱或羣組識別碼皆可。
語法
chgrp [-cfhRv][--help][--version][所屬羣組][文件或目錄...] 或 chgrp [-cfhRv][--help][--reference=<參考文件或目錄>][--version][文件或目錄...]
參數說明
-c或--changes 效果相似"-v"參數,但僅回報更改的部分。
-f或--quiet或--silent 不顯示錯誤信息。
-h或--no-dereference 只對符號鏈接的文件做修改,而不更動其餘任何相關文件。
-R或--recursive 遞歸處理,將指定目錄下的全部文件及子目錄一併處理。
-v或--verbose 顯示指令執行過程。
--help 在線幫助。
--reference=<參考文件或目錄> 把指定文件或目錄的所屬羣組所有設成和參考文件或目錄的所屬羣組相同。
--version 顯示版本信息。
實例
實例1:改變文件的羣組屬性:
chgrp -v bin log2012.log
輸出:
[root@localhost test]# ll
---xrw-r-- 1 root root 302108 11-13 06:03 log2012.log
[root@localhost test]# chgrp -v bin log2012.log
"log2012.log" 的所屬組已更改成 bin
[root@localhost test]# ll
---xrw-r-- 1 root bin 302108 11-13 06:03 log2012.log
實例2:根據指定文件改變文件的羣組屬性
chgrp --reference=log2012.log log2013.log
輸出:
[root@localhost test]# ll
---xrw-r-- 1 root bin 302108 11-13 06:03 log2012.log
-rw-r--r-- 1 root root 61 11-13 06:03 log2013.log
[root@localhost test]# chgrp --reference=log2012.log log2013.log
[root@localhost test]# ll
---xrw-r-- 1 root bin 302108 11-13 06:03 log2012.log
-rw-r--r-- 1 root bin 61 11-13 06:03 log2013.log
說明: 改變文件log2013.log 的羣組屬性,使得文件log2013.log的羣組屬性和參考文件log2012.log的羣組屬性相同
----------------------------------------------------------------------------------------------
chmod命令
Linux/Unix 的文件調用權限分爲三級 : 文件擁有者、羣組、其餘。利用 chmod 能夠藉以控制文件如何被他人所調用。
使用權限 : 全部使用者
語法
chmod [-cfvR] [--help] [--version] mode file...
參數說明
mode : 權限設定字串,格式以下 :
[ugoa...][[+-=][rwxX]...][,...]
其中:
u 表示該文件的擁有者,g 表示與該文件的擁有者屬於同一個羣體(group)者,o 表示其餘之外的人,a 表示這三者皆是。
+ 表示增長權限、- 表示取消權限、= 表示惟一設定權限。
r 表示可讀取,w 表示可寫入,x 表示可執行,X 表示只有當該文件是個子目錄或者該文件已經被設定過爲可執行。
-c : 若該文件權限確實已經更改,才顯示其更改動做
-f : 若該文件權限沒法被更改也不要顯示錯誤訊息
-v : 顯示權限變動的詳細資料
-R : 對目前目錄下的全部文件與子目錄進行相同的權限變動(即以遞迴的方式逐個變動)
--help : 顯示輔助說明
--version : 顯示版本
實例
將文件 file1.txt 設爲全部人皆可讀取 :
chmod ugo+r file1.txt
將文件 file1.txt 設爲全部人皆可讀取 :
chmod a+r file1.txt
將文件 file1.txt 與 file2.txt 設爲該文件擁有者,與其所屬同一個羣體者可寫入,但其餘之外的人則不可寫入 :
chmod ug+w,o-w file1.txt file2.txt
將 ex1.py 設定爲只有該文件擁有者能夠執行 :
chmod u+x ex1.py
將目前目錄下的全部文件與子目錄皆設爲任何人可讀取 :
chmod -R a+r *
此外chmod也能夠用數字來表示權限如 :
chmod 777 file
語法爲:
chmod abc file
其中a,b,c各爲一個數字,分別表示User、Group、及Other的權限。
r=4,w=2,x=1
若要rwx屬性則4+2+1=7;
若要rw-屬性則4+2=6;
若要r-x屬性則4+1=5。
chmod a=rwx file
和
chmod 777 file
效果相同
chmod ug=rwx,o=x file
和
chmod 771 file
效果相同
若用chmod 4755 filename可以使此程序具備root的權限
----------------------------------------------------------------------------------------------
Linux chown命令
Linux/Unix 是多人多工操做系統,全部的文件皆有擁有者。利用 chown 將指定文件的擁有者改成指定的用戶或組,用戶能夠是用戶名或者用戶ID;
組能夠是組名或者組ID;文件是以空格分開的要改變權限的文件列表,支持通配符。
通常來講,這個指令只有是由系統管理者(root)所使用,通常使用者沒有權限能夠改變別人的文件擁有者,也沒有權限能夠本身的文件擁有者改設爲別人。
只有系統管理者(root)纔有這樣的權限。
使用權限 : root
語法 : chmod [-cfhvR] [--help] [--version] user[:group] file...
參數 :
user : 新的文件擁有者的使用者 ID
group : 新的文件擁有者的使用者羣體(group)
-c : 若該文件擁有者確實已經更改,才顯示其更改動做
-f : 若該文件擁有者沒法被更改也不要顯示錯誤訊息
-h : 只對於連結(link)進行變動,而非該 link 真正指向的文件
-v : 顯示擁有者變動的詳細資料
-R : 對目前目錄下的全部文件與子目錄進行相同的擁有者變動(即以遞迴的方式逐個變動)
--help : 顯示輔助說明
--version : 顯示版本
實例
將文件 file1.txt 的擁有者設爲 weizhong, 羣體設爲 hulab:
chown weizhong:hulab file1.txt
將目前目錄下的全部文件與子目錄的擁有者設爲 tu, 羣體設爲 hulab:
chown -R tu:hulab *
----------------------------------------------------------------------------------------------
Linux cksum命令
Linux cksum命令用於檢查文件的CRC是否正確。確保文件從一個系統傳輸到另外一個系統的過程當中不被損壞。
CRC是一種排錯檢查方式,該校驗法的標準由CCITT所指定,至少可檢測到99.998%的已知錯誤。
指定文件交由指令"cksum"進行校驗後,該指令會返回校驗結果供用戶覈對文件是否正確無誤。
若不指定任何文件名稱或是所給予的文件名爲"-",則指令"cksum"會從標準輸入設備中讀取數據。
語法: cksum [--help][--version][文件...]
參數:
--help:在線幫助。
--version:顯示版本信息。
文件…:須要進行檢查的文件路徑
實例
使用指令"cksum"計算文件"testfile1"的完整性,輸入以下命令:
$ cksum testfile1
以上命令執行後,將輸出校驗碼等相關的信息,具體輸出信息以下所示:
1263453430 78 testfile1 //輸出信息
上面的輸出信息中,"1263453430"表示校驗碼,"78"表示字節數。
注意:若是文件中有任何字符被修改,都將改變計算後CRC校驗碼的值。
----------------------------------------------------------------------------------------------
Linux cmp命令
Linux cmp命令用於比較兩個文件是否有差別。
當相互比較的兩個文件徹底同樣時,則該指令不會顯示任何信息。若發現有所差別,預設會標示出第一個不一樣之處的字符和列數編號。
若不指定任何文件名稱或是所給予的文件名爲"-",則cmp指令會從標準輸入設備讀取數據。
語法
cmp [-clsv][-i <字符數目>][--help][第一個文件][第二個文件]
參數:
-c或--print-chars 除了標明差別處的十進制字碼以外,一併顯示該字符所對應字符。
-i<字符數目>或--ignore-initial=<字符數目> 指定一個數目。
-l或--verbose 標示出全部不同的地方。
-s或--quiet或--silent 不顯示錯誤信息。
-v或--version 顯示版本信息。
--help 在線幫助。
實例
要肯定兩個文件是否相同,請輸入:
cmp prog.o.bak prog.o
這比較 prog.o.bak 和 prog.o。若是文件相同,則不顯示消息。若是文件不一樣,則顯示第一個不一樣的位置;例如:
prog.o.bak prog.o differ: char 4, line 1
若是顯示消息 cmp: EOF on prog.o.bak,則 prog.o 的第一部分與 prog.o.bak 相同,但在 prog.o 中還有其餘數據。
----------------------------------------------------------------------------------------------
Linux diff命令
Linux diff命令用於比較文件的差別。
diff以逐行的方式,比較文本文件的異同處。所是指定要比較目錄,則diff會比較目錄中相同文件名的文件,但不會比較其中子目錄。
語法
diff [-abBcdefHilnNpPqrstTuvwy][-<行數>][-C <行數>][-D <巨集名稱>][-I <字符或字符串>][-S <文件>][-W <寬度>][-x <文件或目錄>][-X <文件>][--help][--left-column][--suppress-common-line][文件或目錄1][文件或目錄2]
參數:
略
實例1:比較兩個文件
[root@localhost test3]# diff log2014.log log2013.log
3c3
< 2014-03
---
> 2013-03
8c8
< 2013-07
---
> 2013-08
11,12d10
< 2013-11
< 2013-12
上面的"3c3"和"8c8"表示log2014.log和log20143log文件在3行和第8行內容有所不一樣;"11,12d10"表示第一個文件比第二個文件多了第11和12行。
實例2:並排格式輸出
[root@localhost test3]# diff log2014.log log2013.log -y -W 50
2013-01 2013-01
2013-02 2013-02
2014-03 | 2013-03
2013-04 2013-04
2013-05 2013-05
2013-06 2013-06
2013-07 2013-07
2013-07 | 2013-08
2013-09 2013-09
2013-10 2013-10
2013-11 <
2013-12 <
[root@localhost test3]# diff log2013.log log2014.log -y -W 50
2013-01 2013-01
2013-02 2013-02
2013-03 | 2014-03
2013-04 2013-04
2013-05 2013-05
2013-06 2013-06
2013-07 2013-07
2013-08 | 2013-07
2013-09 2013-09
2013-10 2013-10
> 2013-11
> 2013-12
說明:
"|"表示先後2個文件內容有不一樣
"<"表示後面文件比前面文件少了1行內容
">"表示後面文件比前面文件多了1行內容
----------------------------------------------------------------------------------------------
Linux diffstat命令
Linux diffstat命令根據diff的比較結果,顯示統計數字。
diffstat讀取diff的輸出結果,而後統計各文件的插入,刪除,修改等差別計量。
語法
diff [-wV][-n <文件名長度>][-p <文件名長度>]
將目錄"test1"和"test2"下的同名文件"testf.txt"使用diff指令進行比較。而後使用diffstat指令對結果進行統計顯示,輸入以下命令:
$ diff test1 test2 | diffstat #進行比較結果的統計顯示
----------------------------------------------------------------------------------------------
Linux file命令
Linux file命令用於辨識文件類型。
經過file指令,咱們得以辨識該文件的類型。
語法 : file [-beLvz][-f <名稱文件>][-m <魔法數字文件>...][文件或目錄...]
參數:
-b 列出辨識結果時,不顯示文件名稱。
-c 詳細顯示指令執行過程,便於排錯或分析程序執行的情形。
-f <名稱文件> 指定名稱文件,其內容有一個或多個文件名稱呢感,讓file依序辨識這些文件,格式爲每列一個文件名稱。
-L 直接顯示符號鏈接所指向的文件的類別。
-m <魔法數字文件> 指定魔法數字文件。
-v 顯示版本信息。
-z 嘗試去解讀壓縮文件的內容。
[文件或目錄...] 要肯定類型的文件列表,多個文件之間使用空格分開,可使用shell通配符匹配多個文件。
[root@localhost ~]# file install.log
install.log: UTF-8 Unicode text
[root@localhost ~]# file -b install.log <== 不顯示文件名稱
UTF-8 Unicode text
[root@localhost ~]# file -i install.log <== 顯示MIME類別。
install.log: text/plain; charset=utf-8
[root@localhost ~]# file -b -i install.log
text/plain; charset=utf-8
----------------------------------------------------------------------------------------------
Linux find命令
Linux find命令用來在指定目錄下查找文件。任何位於參數以前的字符串都將被視爲欲查找的目錄名。
若是使用該命令時,不設置任何參數,則find命令將在當前目錄下查找子目錄與文件。而且將查找到的子目錄和文件所有進行顯示。
語法
find path -option [ -print ] [-exec -ok command] {} \;
參數說明 : 略
將目前目錄及其子目錄下全部延伸檔名是 c 的文件列出來。
find . -name "*.c"
刪除 workspace 中全部的 .pyc 文件
find workspace -name "*.pyc" -exec rm {} \;
將目前目錄其其下子目錄中全部通常文件列出
find . -type f
將目前目錄及其子目錄下全部最近 20 分鐘內更新過的文件列出
find . -ctime -20
查找/var/logs目錄中更改時間在7日之前的普通文件,並在刪除以前詢問它們:
find /var/logs -type f -mtime +7 -ok rm {} \;
----------------------------------------------------------------------------------------------
Linux git命令
Linux git命令是文字模式下的文件管理員。
git是用來管理文件的程序,它十分相似DOS下的Norton Commander,具備互動式操做界面。它的操做方法和Norton Commander幾乎同樣。
語法
git