Linux文件管理 | Liunx 常用命令
文件與目錄基本操作
目錄:
-
一、顯示文件內容
-
cat 命令
-
more 命令
-
less 命令
-
head 命令
-
tail 命令
-
-
二、文件內容查詢(grep)
-
三、文件查找命令
-
find 命令
-
locate 命令
-
-
四、文本處理命令
-
sort 命令
-
uniq 命令
-
-
五、文本內容統計命令(wc)
-
六、文件比較命令
-
comm 命令
-
diff 命令
-
-
七、文件的復制、移動和刪除命令
-
cp 命令
-
mv 命令
-
rm 命令
-
-
八、文件鏈接命令(ln)
-
九、目錄的創建與刪除(mkdir、rmdir)
-
十、切換目錄、路徑等相關命令
-
cd 命令
-
pwd 命令
-
ls 命令
-
一、顯示文件內容
用戶查看文件內容時,可以通過以下命令查看。
1、cat 命令:
用于顯示文件,可依次讀取其后所指文件內容并將其輸出到標準輸出設備上。另外,還可以用于連接兩個或多個文件,形成新的文件。
#cat命令 cat [option] filename在a.txt文件中輸入“hello ”,在b.txt中輸入"world"。
除此之外,cat 命令還可以把標準輸入內容復制到標準輸出文件中。在cat 命令后輸入想要放在文件中的文本內容,結束用Ctrl+D結束輸入(組合鍵Ctrl+D告知cat 已經輸入到文件結尾,即 end-of-file,EOF)。Tips:如果cat 命令后省略文件則默認把輸入內容復制到標準輸出(屏幕上)。
用man幫助手冊查看cat的使用cman cat
名稱
cat - 連接文件并在標準輸出上輸出概述
cat [選項]... [文件]...描述
將文件列表中的文件連接到標準輸出。
2、more命令
分頁顯示文件內容,使用空格或回車翻頁,主要用于顯示內容較多的文件。查看過程中可通過q按鍵退出查看
#more命令 more [option] filename用for i in {1..100};do echo "$i " >> test; done;命令向test文件中輸入1~100,使用more命令查看
用man幫助手冊查看more的使用cman more
名稱
more — 在顯示器上閱讀文件的過濾器總覽 (SYNOPSIS)
more [-dlfpcsu] [-num] [+/ pattern] [+ linenum] [file ...]描述 (DESCRIPTION)
More 是 一個 過濾器, 用于 分頁 顯示 (一次一屏) 文本. 這個 版本 非常 基本. 用戶 應該 知道 less(1) 提供了more(1) 的 模擬, 并且 做了 增強.選項 (OPTION)
下面 介紹 命令行選項. 選項 可以 從 環境變量 MORE 中獲取 (要 確保 它們 以 短橫線 開頭 (``-’’)), 但是 命令行
選項 能夠 覆蓋 它們.
3、less命令
和more命令基本相同,也是分頁顯示內容。不過less命令在顯示文件時,允許用戶向前或向后翻閱文件,而more命令只能向后翻閱文件。參數與more命令類似。查看過程中可通過q按鍵退出查看
#less命令 less [option] filename使用less命令查看”test“文件,使用↑或↓上下滑動翻看
4、head命令
只顯示文件或標準輸入(從計算機的標準輸入設備中得到的信息流,通常是指從鍵盤、鼠標等獲得的數據)的頭幾行內容。如果用戶希望查看文件頭部信息便可使用該命令。查看過程中可通過q按鍵退出查看
#head命令 head - number filename #注釋:輸出前n行,如果不指明行數(即number參數)大小,默認為10行,若不指明文件(即filename參數),則默認從標準輸入讀取。分別演示從標準輸入讀取、從”test”文件讀取。(test 文件內容是數字 1~100)
用man幫助手冊查看head的使用cman head
名稱
head - 輸出文件的起始部分概述
head [選項]... [文件]...描述
將文件列表中每個文件的起始10行內容輸出至標準輸出。如果指定多個文件,則會在每個文件的部分之前添加給定文件
名稱。
5、tail命令
與head命令的功能相對應,用于查看文件尾部。同樣的如果沒有指定文件,則默認從標準輸入讀取。查看過程中可通過q按鍵退出查看
#tail命令 tail option filename使用tail +90 test從“test”文件的第90行顯示至末尾,使用tail -5 test顯示“test”文件倒數第五行至末尾。
用man幫助手冊查看tail的使用cman tail
NAME(名稱)
tail - 輸出文件的末尾部分SYNOPSIS(總覽)
../src/tail [OPTION]... [FILE]...DESCRIPTION(描述)
在標準輸出上顯示每個FILE的最后10行. 如果多于一個FILE,會一個接一個地顯示, 并在每個文件顯示的首部給出文件名. 如果沒有FILE,或者FILE是-,那么就從標準輸入上讀取.--retry即使tail開始時就不能訪問 或者在tail運行后不能訪問,也仍然不停地嘗試打開文件.-- 只與-f合用時有用.-c, --bytes=N輸出最后N個字節-f, --follow[={name|descriptor}]當文件增長時,輸出后續添加的數據; -f, --follow以及 --follow=descriptor 都是相同的意思-n, --lines=N輸出最后N行,而非默認的最后10行--max-unchanged-stats=N參看texinfo文檔(默認為5)--max-consecutive-size-changes=N參看texinfo文檔(默認為200)--pid=PID與-f合用,表示在進程ID,PID死掉之后結束.-q, --quiet, --silent從不輸出給出文件名的首部-s, --sleep-interval=S與-f合用,表示在每次反復的間隔休眠S秒-v, --verbose總是輸出給出文件名的首部--help 顯示幫助信息后退出--version輸出版本信息后退出二、文件內容查詢
文件查詢命令主要是指grep、egrep和fgrep命令。這組命令以指定的查找模式搜索文件,通知用戶在什么文件中搜索到與指定的模式匹配的字符串,并且打印出所有包含該字符串的文本行。其中,
grep命令一次只能搜索一個指定的模式;
egrep命令檢索擴展的正則表達式(包括表達式組和可選項);
fgrep命令檢索固定字符串,但并不識別正則表達式,是一種更為快速的搜索命令。
使用ps命令結合管道查詢進程
ps -ef | grep "sleep" 把ps命令產生的進程信息通過管道把信息提取出來,再通過grep檢索到含有 sleep 的文本行
創建一個基礎“Hello World”的C程序,使用grep命令查看源碼中含有“Hello”的那一行。其中,關鍵字是一個字符串 Hello ,如果查詢沒有結果不會顯示任何內容,查詢成功顯示關鍵字所在的文本行
此外還可以用來查找當前目錄下的所有文件中是否含有指定字符串
用man幫助手冊查看grep的使用cman grep
NAME
grep, egrep, fgrep - 打印匹配給定模式的行總覽 SYNOPSIS
grep [options] PATTERN [FILE...]grep [options] [-e PATTERN | -f FILE] [FILE...]描述 DESCRIPTION
-
Grep 搜索以 FILE 命名的文件輸入 (或者是標準輸入,如果沒有指定文件名,或者給出的文件名是 - 的
話),尋找含有與給定的模式 PATTERN 相匹配的內容的行。 默認情況下, grep 將把含有匹配內容的行打印出
來。 -
另外,也可以使用兩個變種程序 egrep 和 fgrep 。 Egrep 與 grep -E 相同。 Fgrep 與 grep -F 相同。
選項 OPTIONS
-A NUM, --after-context=NUM打印出緊隨匹配的行之后的下文 NUM 行。在相鄰的匹配組之間將會打印內容是 -- 的一行。-a, --text將一個二進制文件視為一個文本文件來處理;它與 --binary-files=text 選項等價。-B NUM, --before-context=NUM打印出匹配的行之前的上文 NUM 行。在相鄰的匹配組之間將會打印內容是 -- 的一行。-C NUM, --context=NUM打印出匹配的行的上下文前后各 NUM 行。在相鄰的匹配組之間將會打印內容是 -- 的一行。-b, --byte-offset在輸出的每行前面同時打印出當前行在輸入文件中的字節偏移量。--binary-files=TYPE如果一個文件的起始幾個字節表明文件包含二進制數據,那么假定文件是 TYPE 類型的。默認情況下,TYPE 是 binary ,并且 grep 一般會輸出一個一行的消息說一個二進制文件匹配,或者如果沒有匹配的話就沒有消息輸出。如果類型 TYPE 是 without-match ,那么 grep 假定二進制文件不會匹配;這樣做與 -I 選項等價。如果類型 TYPE 是 text ,那么 grep 將一個二進制文件視為文本文件來處理;它與-a 選項等價。 警告: grep --binary-files=text 可能會輸出二進制的無用內容。如果輸出設備是一個終端,并且終端的驅動將這些輸出中的一些當作命令,可能會帶來惡劣的副作用。--colour[=WHEN], --color[=WHEN]在匹配的行周圍以 GREP_COLOR 環境變量中指定的記號來標記。WHEN 可以是 `never', `always', 或是`auto'。-c, --count禁止通常的輸出;作為替代,為每一個輸入文件打印一個匹配的行的總數。如果使用 -v, --invert-match 選項 (參見下面),將是不匹配的行的總數。-D ACTION, --devices=ACTION如果輸入文件是一個設備,FIFO 或是套接字 (socket) ,使用動作 ACTION 來處理它。默認情況下,動作 ACTION 是 read ,意味著設備將視為普通文件那樣來讀。如果動作 ACTION 是 skip ,將不處理而直接跳過設備。-d ACTION, --directories=ACTION如果輸入文件是一個目錄,使用動作 ACTION 來處理它。默認情況下,動作 ACTION 是 read ,意味著目錄將視為普通文件那樣來讀。如果動作 ACTION 是 skip ,將不處理而直接跳過目錄。如果動作ACTION 是 recurse , grep 將遞歸地讀每一目錄下的所有文件。這樣做和 -r 選項等價。-E, --extended-regexp將模式 PATTERN 作為一個擴展的正則表達式來解釋 (參見下面)。-e PATTERN, --regexp=PATTERN使用模式 PATTERN 作為模式;在保護以 - 為起始的模式時有用。-F, --fixed-strings將模式 PATTERN 視為一個固定的字符串的列表,用新行 (newlines) 分隔,只要匹配其中之一即可。-P, --perl-regexp將模式 PATTERN 作為一個 Perl 正則表達式來解釋。-f FILE, --file=FILE從文件 FILE 中獲取模式,每行一個。空文件含有0個模式,因此不匹配任何東西。-G, --basic-regexp將模式 PATTERN 作為一個基本的正則表達式 (參見下面) 來解釋。這是默認值。-H, --with-filename為每個匹配打印文件名。-h, --no-filename當搜索多個文件時,禁止在輸出的前面加上文件名前綴。--help 輸出一個簡短的幫助信息。-I 處理一個二進制文件,但是認為它不包含匹配的內容。這和 --binary-files=without-match 選項等價。-i, --ignore-case忽略模式 PATTERN 和輸入文件中的大小寫的分別。-L, --files-without-match禁止通常的輸出;作為替代,打印出每個在通常情況下不會產生輸出的輸入文件的名字。對每個文件的掃描在遇到第一個匹配的時候就會停止。-l, --files-with-matches禁止通常的輸出;作為替代,打印出每個在通常情況下會產生輸出的輸入文件的名字。對每個文件的掃描在遇到第一個匹配的時候就會停止。-m NUM, --max-count=NUM在找到 NUM 個匹配的行之后,不再讀這個文件。如果輸入是來自一個普通文件的標準輸入,并且已經輸出了 NUM 個匹配的行, grep 保證標準輸入被定位于退出時的最后一次匹配的行之后,不管是否指定了要輸出緊隨的下文的行。這樣可以使一個調用程序恢復搜索。當 grep 在 NUM 個匹配的行之后停止,它會輸出任何緊隨的下文的行。當使用了 -c 或 --count 選項的時候, grep 不會輸出比 NUM 更多的行。當指定了 -v 或 --invert-match 選項的時候, grep 會在輸出 NUM 個不匹配的行之后停止。--mmap 如果可能的話,使用 mmap(2) 系統調用來讀取輸入,而不是默認的 read(2) 系統調用。在一些情況下, --mmap 提供較好的性能。但是,如果一個輸入文件在 grep 正在操作時大小發生變化,或者如果發生了一個 I/O 錯誤, --mmap 可能導致不可知的行為 (包括core dumps)。-n, --line-number在輸出的每行前面加上它所在的文件中它的行號。-o, --only-matching只顯示匹配的行中與 PATTERN 相匹配的部分。--label=LABEL將實際上來自標準輸入的輸入視為來自輸入文件 LABEL 。這對于 zgrep 這樣的工具非常有用,例如:gzip -cd foo.gz |grep --label=foo something--line-buffering使用行緩沖,it can be a performance penality.-q, --quiet, --silent安靜。不向標準輸出寫任何東西。如果找到任何匹配的內容就立即以狀態值 0 退出,即使檢測到了錯誤。 參見 -s 或 --no-messages 選項。-R, -r, --recursive遞歸地讀每一目錄下的所有文件。這樣做和 -d recurse 選項等價。--include=PATTERN僅僅在搜索匹配 PATTERN 的文件時在目錄中遞歸搜索。--exclude=PATTERN在目錄中遞歸搜索,但是跳過匹配 PATTERN 的文件。三、文件查找命令
1、find命令
該命令用于從指定的目錄開始,遞歸的搜索其各個子目錄,查找滿足條件的文件并對之采取相關的操作。此命令提供了相當多的查找條件,功能非常強大。find 命令的常用格式如下。
#簡單用法 find [option] filename #高級用法 find [-H] [-L] [-P] [-Olevel] [-D debugopts] [path...] [expression] #注:默認路徑為當前目錄;默認表達式為 -print #可以使用 find --help 查看詳細說明,或使用 man幫助手冊 或 info手冊find 命令提供的尋找條件可以是一個用邏輯運算符 not 、and 、 or 組成的復合條件。
- 邏輯與 and :命令中用 -a表示,是系統默認選項。
- 邏輯或 or :命令中用-o表示。
- 邏輯非 not :命令中用!表示。
1、在/usr/include/目錄下存放著許多頭文件,如果我們想要找出stdio.h這個頭文件,就可以使用find 命令實現。
使用命令find 路徑 以文件名方式查找 “文件名”的方式查找stdio.h
2、查找當前目錄下,所有以 .txt 為后綴的文件
用man幫助手冊查看find的使用cman find
NAME
find - 遞歸地在層次目錄中處理文件總覽 SYNOPSIS
find [path...] [expression]描述 DESCRIPTION
-
這個文檔是GNU版本 find 命令的使用手冊。 find 搜索目錄樹上的每一個文件名,它從左至右運算給定的表達式,按照優先規則(見運 算符OPERATORS一節)進行匹配,直到得出結果(左邊運算在 ‘與’ 操作中得出假,在’或’ 操作中得出真),然后 find 移向下一個文件名。
-
第一個以 ‘-’ , ‘(’ , ‘)’ , ‘,’ 或 ‘!’ 這些字符起始的參數是表達式的開始; 在它之前的任何參數是要搜索的路徑,在它之后的任何參數都是表達式的余下部分。 如果沒有路徑參數,缺省用當前目錄。如果沒有表達式,缺省表達式 用 ‘-print’.
-
當所有文件都成功處理時 find 退出并返回狀態值0。如果發生錯誤則返回一個大于0的值。
選項 OPTIONS
所有的選項都總是返回真值,它們總會被執行,除非放在表達式中執行不到的地方。 因此,清楚起見,最好把它們放在表達式的開頭部分。 -help, --help列出 find 的命令行用法的概要,然后退出。數字參數可以這樣給出:+n 是比 n 大,-n 是比 n 小,n 正好是 n 。-name pattern基本的文件名(將路徑去掉了前面的目錄)與shell模式pattern相匹配。元字符(`*', `?', 還有`[]') 不會匹配文件名開頭的`.' 。使用 -prune 來略過一個目錄及其中的文件。查看 -path 的描述中的范例。-path pattern文件名與shell模式pattern相匹配。元字符不會對`/' 或 `.' 做特殊處理。-type c文件是 c 類型的。類型可取值如下:b 特殊塊文件(緩沖的)c 特殊字符文件(不緩沖)d 目錄p 命名管道 (FIFO)f 普通文件l 符號鏈接s 套接字D 門 (Solaris 特有)-uid n 文件的數字形式的用戶ID是 n 。-used n文件最后一次存取是在最后一次修改它的狀態的 n 天之后。-user uname文件的所有者是 uname (也可以使用數字形式的用戶ID).-print 返回true;在標準輸出打印文件全名,然后是一個換行符。運算符 OPERATORS以優先級高低順序排列:( expr )強制為優先! expr 如果 expr 是false則返回true-not expr與 ! expr 相同expr1 expr2與 (隱含的默認運算符);如果 expr1 為false則不會執行 expr2expr1 -a expr2與 expr1 expr2 相同expr1 -and expr2與 expr1 expr2 相同expr1 -o expr2或;如果 expr1 為true 則不會執行 expr2expr1 -or expr2與 expr1 -o expr2 相同expr1 , expr2列表;expr1 和 expr2 都會被執行。expr1 的值被忽略,列表的值是 expr2的值…… …… …… 以上只列出一部分參數,find 命令功能非常強大,提供了和你很多參數可供選擇。 …… ……2、locate 命令
該命令也用于查找文件,比find 命令的搜索速度更快。使用時需要一個數據庫,這個數據庫由每天的例行工作(crontab)程序來建立。建立好數據庫后,就可以方便地用來搜尋所需文件了。
locate [option] filenamelocate與find 不同: find 是去硬盤找,locate 只在/var/lib/slocate資料庫中找。
locate的速度比find快,它并不是真的查找,而是查數據庫,一般文件數據庫在/var/lib/slocate/slocate.db中,所以locate的查找并不是實時的,而是以數據庫的更新為準,一般是系統自己維護,也可以手工升級數據庫,命令為:locate -u 。
#相關命令 /usr/bin/updatedb 主要用來更新數據庫,通過crontab自動完成的 /usr/bin/locate 查詢文件位置 /etc/updatedb.conf updatedb的配置文件 /var/lib/mlocate/mlocate.db 存放文件信息的文件如果查詢時顯示“locate: can not open `/var/lib/mlocate/mlocate.db’: No such file or directory”。此時執行“updatedb”更新下數據庫即可。
如下圖所示,查找 “passwd” 文件,只顯示前四行。
用man幫助手冊查看locate的使用man locate
OPTIONS
-A, --allPrint only entries that match all PATTERNs instead of requiring only one of them to match.-b, --basenameMatch only the base name against the specified patterns. This is the opposite of --whole‐name.-c, --countInstead of writing file names on standard output, write the number of matching entriesonly.-d, --database DBPATHReplace the default database with DBPATH. DBPATH is a :-separated list of database filenames. If more than one --database option is specified, the resulting path is a concatena‐tion of the separate paths.An empty database file name is replaced by the default database. A database file name -refers to the standard input. Note that a database can be read from the standard inputonly once.-e, --existingPrint only entries that refer to files existing at the time locate is run.-L, --followWhen checking whether files exist (if the --existing option is specified), follow trailingsymbolic links. This causes broken symbolic links to be omitted from the output.This is the default behavior. The opposite can be specified using --nofollow.-h, --helpWrite a summary of the available options to standard output and exit successfully.-i, --ignore-caseIgnore case distinctions when matching patterns.-l, --limit, -n LIMITExit successfully after finding LIMIT entries. If the --count option is specified, theresulting count is also limited to LIMIT.-m, --mmapIgnored, for compatibility with BSD and GNU locate.-P, --nofollow, -HWhen checking whether files exist (if the --existing option is specified), do not followtrailing symbolic links. This causes broken symbolic links to be reported like otherfiles.This is the opposite of --follow.-0, --nullSeparate the entries on output using the ASCII NUL character instead of writing each entryon a separate line. This option is designed for interoperability with the --null option ofGNU xargs(1).-S, --statisticsWrite statistics about each read database to standard output instead of searching for filesand exit successfully.-q, --quietWrite no messages about errors encountered while reading and processing databases.-r, --regexp REGEXPSearch for a basic regexp REGEXP. No PATTERNs are allowed if this option is used, but thisoption can be specified multiple times.--regexInterpret all PATTERNs as extended regexps.-s, --stdioIgnored, for compatibility with BSD and GNU locate.-V, --versionWrite information about the version and license of locate on standard output and exit suc‐cessfully.-w, --wholenameMatch only the whole path name against the specified patterns.This is the default behavior. The opposite can be specified using --basename.三、文本處理命令
文本處理命令主要包括 sort 排序和 uniq 去重兩個操作。
1、sort 命令
該命令用于對文件中各行進行排序。它有許多非常實用的選項,最初是用來對數據庫格式的文件內容進行各種排序操作的。該命令逐行地對文件中的內容進行排序,如果兩行的首字符相同,那該命令將繼續比較下一字符。sort 排序是根據從輸入行抽取的一個或多個關鍵字進行比較來完成的,默認情況下以整行為關鍵字按ASCII字符順序進行排序。
sort [option] filename創建一個文件 “ name ” ,使用sort 進行排序
sort 命令也可以對標準輸入進行操作。用cat 命令創建一個臨時的 “tmp.txt” 文件,與之前的 “name” 文件合并,并且通過管道使用 sort 命令排序,最后使用輸出重定向 輸出到新文件 “newname” 文件中。如下圖所示。
用man幫助手冊查看sort的使用cman sort
NAME(名稱)
sort - 對文本文件的行排序SYNOPSIS(總覽)
../src/sort [OPTION]... [FILE]...DESCRIPTION(描述)
將排序好的所有文件串寫到標準輸出上.+POS1 [-POS2]從關鍵字POS1開始,到POS2*之前*結束(快過時了) 字段數和字符偏移量都從零開始計數(與-k選項比較)-b 忽略排序字段或關鍵字中開頭的空格-c 檢查是否指定文件已經排序好了,不排序.-d 在關鍵字中只考慮[a-zA-Z0-9]字符.-f 將關鍵字中的小寫字母折合成大寫字母.-g 按照通常的數字值順序作比較,暗含-b-i 在關鍵字中只考慮[\040-\0176]字符.-k POS1[,POS2]從關鍵字POS1開始,*到*POS2結束. 字段數和字符偏移量都從1開始計數(與基于零的+POS格式作比較)-l 按照當前環境排序.-m 合并已經排序好的文件,不排序.-M 按(未知的)<`JAN'<...<`DEC'的順序比較,暗含-b-n 按照字符串的數值順序比較,暗含-b-o FILE將結果寫入FILE而不是標準輸出.-r 顛倒比較的結果.-s 通過屏蔽最后的再分類比較來穩定排序.-t SEP 使用SEP來替代空格的轉換non-.-T DIRECTORY使用DIRECTORY作為臨時文件,而不是$TMPDIR或者/tmp-u 如果有-c,則按嚴格的順序進行檢查; 如果有-m,則只輸出相等順序的第一個.-z 以0字節結束行,而不是使用換行符,這是為了找到-print0--help 顯示幫助并退出.--version輸出版本信息并退出.POS為F[.C][OPTS],這里的F指的是字段數,而C為字段中的字符位置,這在-k中是從開 始計數的,而在過時的格式中是從零開始的.OPTS可由一個或多個Mbdfinr組成;這有效地屏蔽了 對于那個關鍵字的全局-Mbdfinr設置.如果沒有指定關鍵字,則使用整行作為關鍵字.如 果沒有FILE,或者FILE是-,則從標準輸入讀取.2、uniq 命令
文件經過處理后可能會存在重復行,此命令用于去除重復行,刪除多余的行。正常情況下,第二個及以后更多的重復行將被刪除。行比較是根據所給的字符集的排列序列進行的,該命令加工后的結果被寫入到輸出文件中。輸入文件和輸出文件不能相同。如果文件名用“-”,則表示從標準輸入讀取。
uniq [option] filename在文件 “tmp.txt” 和 “newname” 中存在相同項,合并后就會存在重復項,使用 uniq命令去除重復項。
其中,使用-d 參數只顯示重復項,使用-u參數,只顯示不重復項
用man幫助手冊查看uniq的使用cman uniq
名稱
uniq - 報告或省略重復行概述
uniq [選項]... [輸入 [輸出]]描述
從輸入文件(或標準輸入)篩選一組相鄰的匹配行,寫入到輸出文件(或標準輸出)。
五、文件內容統計命令(wc)
文件內容統計命令主要是指 wc 命令。該命令統計給定文件中的字節數、字行數。如果沒有給出文件名,則從標準輸入讀取。 wc 同時也給出所有指定文件的總統計數。字是由空格字符區分開的最大字符串。
wc [option] filename # 常用參數 -l 行數 -w 統計字數 -c 統計字節數統計下列文件的行數、字數、字節數
用man幫助手冊查看wc 的使用cman wc
名稱
wc - 輸出文件中的行數、單詞數、字節數概述
wc [選項]... [文件列表]...wc [選項]... --files0-from=F描述
對每個文件輸出行、單詞和字節統計數,如果指定的文件多于一個,則同時輸出總行數。單詞指以空白字符分隔的長度非零的字符序列。
六、文件比較命令
1、comm 命令
該命令對兩個已排好序的文件進行比較,其中file1 和 file2 是已排序的文件。common 讀取這兩個文件,然后生成 3 列輸出:僅在 file1 中出現的行;僅在 file2 中出現的行;在兩個文件中都存在的行。如果文件名用“-”,則表示從標準輸入讀取。
comm [option] filename #選項中提供1、2、3選項控制相應的列是否顯示 “-12” 只顯示兩個文件中都存在的 “-13” 只顯示第二個文件中出現而在第一個文件中未出現的 “-23” 只顯示第一個文件中出現而在第二個文件中未出現的 “-123” 什么都不顯示tips:可以把 "3” 看成一種屏蔽某列的操作,如“-13”,屏蔽第一列,只顯示出現在第二列(而未在第二列出現的)在文件 “com1” 中輸入“ 1\2\3\4\5” , 在文件 “com2” 中輸入 “1\3\5\7” ,使用comm命令比較。
使用單個數字,也會有不同的效果:
使用comm -1 com1 com2命令,把 “com2” 文件的信息比較后輸出,第一列為 “com2” 獨有,第二列為兩文件共有;
使用comm -2 com1 com2命令,把 “com1” 文件的信息比較后輸出,第一列為 “com1” 獨有,第二列為兩文件共有;
使用comm -3 com1 com2命令,把兩個文件的信息比較后輸出,第一列為 “com1” 獨有,第二列為 “com2” 獨有;
用man幫助手冊查看comm 的使用cman comm
NAME
comm - 逐行比較兩個已排序的文件總覽 (SYNOPSIS)
../src/comm [OPTION]... LEFT_FILE RIGHT_FILE描述 (DESCRIPTION)
逐行比較 已排序的 文件 LEFT_FILE 和 RIGHT_FILE.
2、diff 命令
該命令用于逐行比較兩文件,列出其中不同之處。它對給出的文件進行系統的檢查,并顯示出兩文件中所有不同的行,不要求事先對文件進行排序。
diff [option] file1 file2 diff [option] dir1 dir2該命令運行后輸出通常由下述形式的行組成
n1 a n3, n4 n1, n2 d n3 n1, n2 c n3, n4以上說明如何將 file1 轉變成 file2 ,并給出了兩文本文件之間的差異,其中,字母(a、d和c)之前的行號 n1、n2 是針對 file1 的,其后面的行號(n3,、n4)是針對 file2 的。字母 a、d 和 c 分別表示附加、刪除和修改操作。
在上述形式的每一行的后面跟隨受到影響的若干行,以 “<” 打頭的行屬于第一個文件,以 “>” 打頭的屬于第二個文件。
Tips:diff 能區別塊和字符設備文件及FIFO(管道文件),不會把它們與普通文件進行比較
如果比較的是目錄,則 diff 會產生很多信息。如果一個目錄中只有一個文件,則產生一條消息,指出該目錄路徑名和其中的文件名。
使用 diff命令比較 “file1” 和 “file2”
上述"1a2"表示把 “file1”的第一行后追加上 ”file2“ 的第二行,即”#include <stdlib.h>“
??"4c5"表示把 “file1”的第四行語句修改成 ”file2“ 的第五行的語句,即”char name[10] = "file1"; ==> char name[10] = "file2";“
若按上述操作,則可把 ”file1“ 轉換成 ”file2“
用man幫助手冊查看diff 的使用cman diff
NAME
diff - 找出兩個文件的不同點總覽
diff [選項] 源文件 目標文件描述
- 在最簡單的情況是, diff 比較兩個文件的內容 (源文件 和 目標文件). 文件名可以是 - 由標準輸入設備讀入的文本.
- 作為特別的情況是, diff - - 比較一份標準輸入的它自己的拷貝
- 如果 源文件 是一個目錄和 目標文件 不是(目錄), diff 會比較在 源文件(目錄) 里的文件中和 目標文件同名的(文件),.
反過來也一樣. 非目錄文件不能是 -. - 如果 源文件 和 目標文件 都是目錄, diff 比較兩個目錄中相應的文件, 依照字母次序排序;這個比較是不會遞歸的,
除非給出 -r 或者 --recursive. diff 不把一個目錄的內容看為它是一個文件來比
用man幫助手冊查看diff 的使用cman diff
較。被指定的文件不 能是標準的輸入, 因為標準的輸入是無名的并且"有一樣的名字的文 件"的觀點不適用。 diff 的選項由 -, 開始 所以正常地 源文件(名) 和 目標文件(名) 不可以用 - 開頭.然而, -- 可以被它視為保留的即使作為文件名的開頭( they begin with -.)選項
下面是 GNU所接受的 diff 的所有選項的概要. 大多數的選項有兩個相同的名字,一個是單個的 跟在 - 后面字母,
另一個是由 – 引出的長名字. 多個單字母選項(除非它們產生歧義)能夠組合為單行的命令行語法 -ac 是等同
于 -a -c. 長命名的選項能被縮短到他們的名字的任何唯一的前綴. 用 ([ 和 ]) 括起來顯示選項產生歧義的選項
七、文件的復制、移動和刪除命令
1、cp 命令
該功能是將給出的文件或目錄復制到另一文件或目錄中,就如同 DOS 下的 copy 命令一樣,功能非常強大。
cp [option] [src_file|src_dir] [dst_file|dst_dir]將目錄下所有以 ”.txt“ 結尾的文件,拷貝至當前目錄下的 dir 目錄下
拷貝 “hello” 文件為 ”newHello“ 文件
用man幫助手冊查看cp 的使用cman cp
名稱
cp - 復制文件和目錄概述
cp [選項]... [-T] 來源 目標cp [選項]... 來源... 目錄cp [選項]... -t 目錄 來源...描述
從指定的來源文件復制到目標處,或者將多個源文件復制到目標目錄中。
2、mv 命令
使用 mv命令可以給目錄或文件改名,此外,mv 命令的主要用途是將一個文件或目錄移動到另一個目錄中,該命令如同 DOS 下的 ren 和 move 的組合。
mv [option] [src_file|src_dir] [dst_file|dst_dir]用mv命令將 ”newHello“ 文件改名為 ”Hello“
將 ”com1、com2、file1、file2“ 移動到 ”dir“目錄下
用man幫助手冊查看mv 的使用cman mv
NAME
mv - 移動 (改名) 文件摘要
mv [選項]... 源文件 目標文件mv [選項]... 源文件... 目錄mv [選項]... --target-directory=DIRECTORY SOURCE...描述
改“源文件”名到“目標文件”名, 或移動“源文件”(可以不只一 個)到一個“目錄”。
3、rm 命令
rm命令是個及其危險的命令,它用于刪除文件,一旦文件被刪除恢復起來相當麻煩。因此,在使用此命令時要格外小心。此外,如果對于鏈接文件,該命令只是刪除了鏈接,原有文件均保持不變。
rm [option] [files|dirs] #常用的參數 -f 忽略不存在的文件,從不給出提示 -r 遞歸的刪除參數中列出的全部目錄和子目錄及其中的文件。此參數常用來輸出非空目錄及其下的文件 -i 進行交互式刪除,及刪除時會讓用戶確認每一個文件是否要刪除,輸入 y 確認,輸入其他內容均認為是取消。使用cp命令及其參數對 ”tmp“ 目錄進行操作
用man幫助手冊查看rm 的使用cman rm
名稱
rm - 移除文件或者目錄概述
rm [選項]... 文件列表...描述
本手冊頁記錄 GNU 版本的 rm。rm 移除每一個指定的文件。默認情況下,它不刪除目錄。
如果指定 -I 或 --interactive=once 選項,且給出了三個以上的文件或指定了 -r, -R 或 --recursive 選項,
則 rm 將提示并詢問用戶是否繼續進行整個操作。如果未得到用戶的確認,則整個命令將被中止。
否則,如果一個文件不可寫、標準輸入是一個終端且未給出 -f 或 --force 選項,或 --interactive=always 選項
被給出, rm 將提示用戶是否刪除該文件。如果未得到用戶的確認,則該文件將被跳過。
選項
刪除 (unlink) 給定文件。-f, --force忽略不存在的文件和參數,從不提示-i 在每次刪除前提示-I 在進行遞歸刪除或刪除多于三個文件之前提示用戶一次;與 -i 相比較更少干擾用戶,但是仍然為大多數操作失誤起到保護作用。--interactive[=WHEN]根據 WHEN 確定提示用戶的頻率: "never"(從不)、"once" (-I)、或者 "always" (-i);如果沒有給定WHEN 參數,則總是提示用戶。--one-file-system在遞歸地刪除一個目錄結構時,跳過與對應命令行參數不在同一個文件系統中的所有目錄--no-preserve-root不對 '/' 做特殊處理--preserve-root不刪除 '/'(默認)-r, -R, --recursive遞歸地移除目錄及它們的內容-d, --dir刪除空目錄-v, --verbose解釋正在發生的情況--help 顯示此幫助信息并退出--version顯示版本信息并退出默認情況下,rm 不移除目錄。可以使用 --recursive(-r 或 -R)選項來同時移除列出的每個目錄及其內容。如果需要刪除一個文件名以連字符 “-”起始的文件,例如 '-foo',請使用下列命令:rm -- -foorm ./-foo請注意,如果你使用 rm 刪除一個文件,在有足夠技術水平和/或時間的情況下,它的部分內容可能仍然能夠被恢復。如果需要更高的保障來使得文件內容不可恢復,請考慮使用 shred.八、文件鏈接命令(ln)
該命令可以在文件之間創建鏈接。這種操作實際上是給系統中已存在的某個文件指定另一個可用于訪問它的名稱。對于這個新的文件名,可以為其指定不同的訪問全向權限,以控制對信息的共享和安全性的問題。
鏈接分為兩種,一種是硬鏈接(Hard Link),另一種是符號鏈接(Sysmbolic Link 也稱為軟鏈接)。
建立硬鏈接時,鏈接文件和被連接文件必須位于同一文件系統中,并且不能建立指向目錄的鏈接。而建立符號鏈接時,則不存在這個問題。默認情況下產生硬鏈接。
ln [option] file link在桌面創建一個目錄的軟鏈接和一個文件的軟連接,注意鏈接文件要用絕對路徑。
用man幫助手冊查看ln 的使用cman ln
NAME
ln -在文件之間建立連接總覽
ln [options] source [dest]ln [options] source...directoryPOSIX 選項:
[-f]GNU 選項(縮寫):[-bdfinsvF] [-S backup-suffix] [-V {numbered, existing, simple}] [--help][--version] [--]描述
在Unix世界里有兩個’link’(連接)概念,一般稱之為硬連接和軟連接。一個硬連 接僅僅是一個文件名。(一個文件可以有好幾個文件名,只有
將最后一個文件名從 磁盤上刪除,才能把這個文件刪掉。文件名的個數是由ls(1)來確定的。所有的文件 名都處于同一個狀態,也就沒有什么“源
名字” 之說。通常文件系統里的一個 文件的所有名字包含著一樣的數據信息,不過這樣也不是必需的。)一個軟連接 (或符號連接)是完全不
同的:它是一個包含了路徑信息的小小的指定文件。因此, 軟連接可以指向不同文件系統里的文件(比如由NFS裝載的不同機器文件系統上的
文件),甚至可以指向一個不一定確實存在的文件。在軟連接文件被訪問(系統調用 open(2) 或stat(2))的時候,操作系統用該文件所包含的路
徑替換該文件的訪問介 入點,從而實現對所指文件的訪問。(用命令rm(1)和unlink(2)可以刪除連接,但 不是刪除該文件所指向的文件。系統指
定調用lstat(2)和readlink(2) 來讀取連接 文件與其所指文件的狀態。到底是對軟連接文件操作,還是對被指向文件操作,由 于不同操作系統件
存在不同的系統調用,而存在著差異。)
ln 在文件間產生連接。缺省時,產生硬連接,有-s選項,則產生符號(軟)連接。
如果僅僅只給出一個文件名,那么ln將在當前目錄里產生這個文件的連接, 也就是說,以該文件(的最后一個)名稱等同的名字在當前目錄里
產生一個連接 (GNU范圍內); 如果最后一個參數是一個已存在的目錄名, ln 將在那個目錄里給每一個源文件用以與源文件相同的文件名產
生連接, (不同情況見以下–no-dereference的描述); 如果只給出兩個文件名,ln將產生源文件的連接; 如果最后一個參數不是一個目錄名或
多于兩個文件名,則報錯。
缺省時,ln不刪除已存在的文件或符號連接。 (因此,它可以被用來鎖定目標文件,即當dest已經不存在時) 但選項-f可以強制執行。
在已存在的實現中,只有超級用戶才能建立目錄的硬連接。 POSIX 禁止系統調用link(2)和ln建立目錄的硬連接 (但是允許在不同的文件系統間
建立硬連接)。
POSIX 選項
-f 刪除已存在的目的文件。GNU 選項-d, -F, --directory允許超級用戶建立目錄硬連接。-f, --force刪除已存在的目的文件。-i, --interactive提示是否刪除已存在的目的文件。-n, --no-dereference當所給出的目的文件名是一個目錄的符號連接時,將其視為一般文件處理。當目的目錄名是一個確實存在的目錄(不是一個符號連接)時, 不進行模糊處理,而在那個目錄里建立連接。 但是當所指定的目的目錄名是一個符號連接時, 有兩種方式來對待用戶的要求。 ln 會視目的為一個普通目錄,并且在里面建立連接。 或者如同符號連接本身一樣地視其為一個非目錄。 這種情況下,ln 將在建立新連接之前刪除或備份這個符號連接。 缺省地,把符號連接視為普通目錄來對待。-s, --symbolic建立符號連接以替代硬連接。 在不支持符號連接的系統上,這個選項僅僅會產生一個錯誤提示而已。-v, --verbose在建立連接前顯示所操作的文件名。九、目錄的創建與刪除
1、mkdir 命令
創建目錄時用mkdir命令。
mkdir [option] [dirname] # 常見參數 # “-m” 對新建目錄設置存取權限,也可以用 chmod 命令設置 # “-p” 可以是一個路徑名稱。此時若路徑中某些目錄尚不存在,加上此項后,系統將自動建立好這些尚不存在的目錄,即一次創建多個目錄該命令要求在當前的工作目錄下具有寫權限,并且所創建的目錄名不能是當前目錄下已有的目錄名。
當前目錄下創建只有屬主有權限,并且創建了多個連續目錄
用man幫助手冊查看mkdir的使用cman mkdir
名稱
mkdir - 創建目錄概述
mkdir [選項]... 目錄列表...描述
如果目錄列表中的目錄不存在,則創建之。
2、rmdir 命令
用于刪除空目錄。
rmdir [option] [diename] # 常見參數 # “-p” 遞歸的刪除,當子目錄刪除后其父目錄為空時,也一同刪除。如果被刪除或由于某種原因保留部分路徑,則系統在標椎輸出上顯示相應的信息此命令用于刪除空目錄,并且要求用戶對當前目錄具有寫權限,如果該目錄非空,可以用rm -r dirname刪除
使用 rmdir 命令刪除之前創建的連續空目錄
用man幫助手冊查看mkdir的使用cman mkdir
名稱
rmdir - 刪除空目錄概述
rmdir [選項]... 目錄列表...描述
刪除目錄列表中的空目錄。
十、切換目錄、路徑及顯示命令
1、cd 命令
cd 命令(change directory),作用是改變當前工作目錄,或者叫切換目錄。
cd [directory] #若沒有指定目錄則回到用戶主目錄,除此之外,還有以下幾種切換方式 # ”cd ~“ 回到主目錄 # ”cd -“ 最近使用過的的兩個工作目錄之間切換 # ”cd ..“ 回到上級目錄(父目錄)cd切換目錄演示
用man幫助手冊查看cd 的使用cman cd
NAME
bash - GNU Bourne-Again SHell (GNU 命令解釋程序 “Bourne二世”)概述(SYNOPSIS)
bash [options] [file]描述(DESCRIPTION)
-
Bash 是一個與 sh 兼容的命令解釋程序,可以執行從標準輸入或者文件中讀取的命令。 Bash 也整合了
Korn 和 C Shell (ksh 和 csh) 中的優秀特性。 -
Bash 的目標是成為遵循 IEEE POSIX Shell and Tools specification (IEEE Working
Group 1003.2,可移植操作系統規約: shell 和工具) 的實現。
選項(OPTIONS)
除了在 set 內建命令的文檔中講述的單字符選項 (option) 之外,bash 在啟動時還解釋下列選項。
2、pwd 命令
pwd 命令(print working directory),作用是顯示當前工作目錄的路徑。該命令無參數和選項。
演示pwd命令
用man幫助手冊查看pwd 的使用cman pwd
名稱
pwd - 顯示出當前/活動目錄的名稱概述
pwd [選項]...描述
輸出當前工作目錄的完整名稱。
ls 命令
ls 命令(list),功能是列出目錄內容,只是用戶最常用的命令之一,該命令類似與 DOS 下的 dir 命令。對于每個目錄,該命令將列出其中所有的子目錄與文件。
ls [option] [dirname] filename # 常用以下參數 # ”-a“ 顯示指定目錄下所有的子目錄與文件,包括隱藏文件 # ”-A“ 顯示指定目錄下所有的子目錄與文件,包括隱藏文件,但不列出 ”.“ 與 ”..“ # ”-l“ 以長格式來顯示文件詳細信息。這個選項組最常用,列出的信息依次是:文件類型與權限、鏈接數、文件屬主、文件數組、文件大小以及建立或修改的時間和名字。ls 命令測試
用man幫助手冊查看ls的使用cman ls
NAME
ls, dir, vdir - 列目錄內容提要
ls [選項] [文件名...]POSIX 標準選項: [-CFRacdilqrtu1]GNU 選項 (短格式):[-1abcdfgiklmnopqrstuxABCDFGLNQRSUX] [-w cols] [-T cols] [-I pattern] [--full-time][--format={long,verbose,commas,across,vertical,single-column}] [--sort={none,time,size,extension}][--time={atime,access,use,ctime,status}] [--color[={none,auto,always}]] [--help] [--version] [--]描述( DESCRIPTION )
程序 ls 先列出非目錄的文件項,然后是每一個目錄中的“可顯示”文件。如果 沒有選項之外的參數【譯注:即文件名部分為空】
出現,缺省為 “.” (當前目錄)。 選項“ -d ”使得目錄與非目錄項同樣對待。除非“ -a ” 選項出現,文件名以“.”開始的文件不屬“可顯示”文件。
注:文中使用 man 幫助手冊是使用的中文版本 cman,詳情Linux下的cman中文幫助手冊配置
總結
以上是生活随笔為你收集整理的Linux文件管理 | Liunx 常用命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机械臂运动学入门(二)
- 下一篇: Linux知识点整理(五)—— Linu