寫在前面:
1,《你一定要知道的關於Linux文件目錄操作的12個常用命令》是樓主收集的關於Linux文件目錄操作最常用的命令,包括文件或目錄的新建、拷貝、移動、刪除、查看等,是開發人員操作Linux系統的常用命令,所以你一定要知道。
2,《你一定要知道的關於Linux文件目錄操作的12個常用命令》適合初學者,對於Linux大神的請繞過,不過歡迎一起討論學習!
3,此次收集,多謝來自http://www.cnblogs.com/peida/archive/2012/10/23/2734829.html的分享,若需要更詳細的資料請關注。
下面開始一起學習吧:
1, mkdir命令
mkdir用來創建指定名稱的目錄,要求創建目錄的用戶在當前目錄中具有寫權限,並且指定的目錄名不能是當前目錄中已有的目錄。
(1) 命令格式:mkdir [選項] 目錄
(2) 命令功能:在指定位置創建指定文件名命名的文件夾或目錄,要創建文件夾或目錄的用戶必須對所創建的文件夾的父文件夾具有寫權限,且同一個目錄下不能有重名的。
(3) 命令參數:
-m,--mode模式 設定權限<模式>(類似chmod),而不是rwxrwxrwx
-p,--parents可以是一個路徑的名稱,此時若路徑中的某些目錄不存在,加上此選項后系統將自動建立好那些尚不存在的目錄,即一次可以建立多個目錄
-v,--verbose創建當前新目錄或文件時顯示信息,如“已創建目錄test6”
(4) 命令實例:
①創建一個空目錄
mkdir lijl_bj1
②遞歸創建多個目錄
mkdir –p ./lijl_bj1/test(./表示當前目錄,../表示上級目錄,/表示根目錄)
③創建權限為777的目錄
mkdir –m 777 test777
④創建新目錄顯示信息
mkdir –v test
⑤創建項目的目錄結構
mkdir –vp
src/{com/sitech/{admin/{entity/,dao/,service,controller},common/util/},config/}
(5) 注意事項:
最后一個實例⑤對順序是有要求的,即在-vp時才表示-v –p操作,而若是-pv則在上述語句中會默認為創建-vp目錄。
2, ls命令
缺省下用來打印當前目錄的清單,如果ls指定其他目錄,那么就會顯示指定目錄的文件及文件夾清單。通過ls命令不僅可以查看linux文件夾包含的文件,而且可以查看文件權限(包括目錄、文件夾、文件)、查看目錄信息等。
(1) 命令格式:ls [選項] [目錄名]
(2) 命令功能:列出目標目錄中所有的子目錄和文件
(3) 命令參數:
-a,列出目錄下的所有文件,包括以.開頭的隱含文件
-c 配合-lt根據ctime排序及根據ctime(文件狀態最后更改的時間)
配合-l 顯示ctime但根據名稱排序
-l 除了文件名之外,還將文件的權限、所有者、文件大小等信息詳細列出來
-t 以文件的修改順序排序
-u 配合-lt顯示訪問時間,而且依據訪問時間排序
配合-l 顯示訪問時間,但根據名稱排序
-v 依據版本進行排序
-x 逐行列出項目,而不是逐欄列出
-X 根據擴展名進行排序
-1 每行只列出一個文件
-F 可以在顯示子目錄的時候在它的文件名之后加一個“/”,而文件后面的“*”表示這是一個可執行程序
(4) 常用實例:
①列出 /lijl_bj1/com/src文件夾下的所有文件和目錄的詳細情況
進入lijl_bj1目錄,ls –l –R(或-lR) src
②列出當前目錄中所有以“s”開頭的所有文件目錄的信息,
ls –l s*
③只列出文件下的子目錄:
ls -F ./src |grep /$ 列出src目錄下面的子目錄
結果:com/,config/
④列出目前工作目錄下所有檔案及目錄;目錄於名稱后加"/", 可執行檔案名稱后加"*"
ls –AF
3, cd命令
cd命令是Linux里面最基本的命令,很多其他命令都是建立在它的基礎之上的
(1) 命令格式:cd [目錄名]
(2) 命令功能:切換當前目錄至dirName
(3) 常用范例:
①進入系統根目錄
cd /
②進入當前目錄的上一級目錄:cd ..或者cd ..//
③進入當前用戶的主目錄
cd 或者 cd~
④跳轉到指定目錄
cd /echncms/lijl_bj1(根目錄下進入)
跳轉到指定目錄,從根目錄開始,目錄名稱前加“/”,當前目錄的子目錄寫名稱即可。
⑤返回進入此目錄之前所在的目錄
cd –
⑥把上個命令的參數作為cd參數使用
cd !$
(4) 注意事項:
跳轉到指定目錄,從根目錄開始,目錄名稱前加“/”,當前目錄的子目錄寫名稱
4, pwd命令
使用“pwd”命令來查看“當前工作目錄”的完整路徑,每當你在終端進行操作時,都會有一個當前工作目錄,在不太確定當前位置時,可以使用pwd命令來查看當前目錄再文件系統里的確切位置。
(1) 命令格式:pwd [選項]
(2) 命令功能:查看“當前工作目錄”的完整路徑
常用參數:一般情況下不使用任何參數,如果目錄是鏈接時,pwd –P 顯示出實際路徑,而非使用鏈接路徑。若當前路徑被刪除了,pwd顯示的仍是原路徑。
5, rm命令
該命令的功能是刪除一個目錄中的一個或多個文件或目錄,它也可以將某個目錄及其以下的所有文件及目錄均刪除,對於鏈接文件,只是刪除了鏈接,原有文件保持不變。
(1) 命令格式:rm [選項] 文件
(2) 命令功能:刪除指定目錄中的一個或多個文件或目錄,如果沒有使用-r選項,則rm不會刪除目錄,如果使用rm來刪除文件,通常仍可以將文件恢復原狀。
(3) 命令參數:
-f,--force忽略不存在的文件,從不給出提示
-i,--interactive 進行交互式地刪除
-r,-R,--recursive 指示rm將參數中列出的全部目錄和子目錄均遞歸地刪除
-v,--verbose 詳細顯示進行的步驟
(4) 命令實例:
①刪除文件file,系統會先詢問是否刪除,rm –i log.log,輸入y之后就會刪除
②強行刪除file,系統不再提示 rm –f log1.log
③刪除任何.log文件,刪除前逐一詢問 rm –i *.log
④將test1子目錄及子目錄中所有檔案都刪除 rm –r test
⑤將test2子目錄及子目錄中所有檔案都刪除,並且不用一一詢問
rm –rf test2(常用)
⑥刪除以-f開頭的文件
rm -- -f
⑦自定義回收站功能:
myrm(){ D=/tmp/$(date +%Y%m%d%H%M%S); mkdir –p $D; mv “$@” $D && echo “moved to $D ok”; }
6, rmdir命令
rmdir是常用的命令,該命令的功能是刪除空目錄,一個目錄被刪除之前必須是空的。注意(rm –r dir命令可代替rmdir,但是有很大危險性),刪除某目錄時也必須對父目錄有寫權限。
(1) 命令格式:rmdir [選項]…目錄…
(2) 命令功能:該命令從一個目錄中刪除一個或多個子目錄項,刪除某目錄時也必須對父目錄有寫權限。
(3) 命令參數:
-p 遞歸刪除目錄dirname,當子目錄刪除后其父目錄為空時,也一同被刪除,如果整個路徑被刪除或者由於某種原因保留部分路徑,則系統在標准輸出上顯示相應的信息。
-v,--verbose顯示指令執行過程
(4) 命令實例:
①rmdir不能刪除非空目錄 rmdir lijl_bj1,該命令不能直接刪除非目錄
②rmdir –p 當子目錄被刪除后使它也一並成為空目錄的話,則順便一起刪除
7, mv命令
mv命令是move的縮寫,可以用來移動文件或者將文件改名(move (rename) files),是Linux系統下常用的命令,經常用來備份文件或者目錄。
(1) 命令格式:mv [選項] 源文件或目錄 目標文件或目錄
(2) 命令功能:視mv命令中第二個參數類型的不同(是目標文件還是目標目錄),mv命令將文件重命名或將其移至一個新的目錄中。當第二個參數類型是文件時,mv命令完成文件重命名,此時,源 文件只能有一個(也可以是源目錄名),它將所給的源文件或目錄重命名為給定的目標文件名。當第二個參數是已存在的目錄名時,源文件或目錄參數可以有多個,mv命令將各參數指 定的源文件均移至目標目錄中。在跨文件系統移動文件時,mv先拷貝,再將原有文件刪除,而鏈接該文件的鏈接也將丟失。
(3) 命令參數:
-b :若需要覆蓋文件,則覆蓋前先行備份
-f : force強制的意思,如果目標文件已存在,不會詢問而直接覆蓋
-i : 若目標文件已經存在時,就會詢問是否覆蓋。
-t : --target –directory,即指定mv的目標目錄,該選項適用於移動多個源文件到一個目錄的情況,此時目標目錄在前,源文件在后。
(4) 命令實例:
①文件改名:將文件test.log 改名為test1.txt
mv test.log test1.txt
②移動文件:將test1.log文件移至test3
mv test1.log test3
③將文件log1.txt,log2.txt,log3.txt移至目錄test中
mv log1.txt log2.txt log3.txt test
mv –t /opt/soft/test/ log1.txt log2.txt log3.txt
④將文件file1改名為file2,如果file2已經存在,則詢問是否覆蓋
mv –i log1.txt log2.txt
⑤將文件file1改名為file2,即時file2存在,也是直接覆蓋掉
mv –f log3.txt log2.txt
log3.txt的內容直接覆蓋了log2.txt內容,-f這是個危險的選項,使用時候一定要保持頭腦清醒,一般情況下最好不用加上它。
⑥目錄的移動
mv dir1 dir2
如果目錄dir2不存在,將目錄dir1改名為dir2,否則將dir1移動到dir2中
⑦移動當前文件夾下的所有文件到上一級目錄
mv * ../
⑧把當前目錄的一個子目錄里的文件移動到另一個子目錄里
mv test3/*.txt test5
⑨文件被覆蓋前做簡單備份,前面加參數-b
mv log1.txt –b log2.txt
說明:-b不接受參數,mv會去讀取環境變量VERSION_CONTROL來作為備份策略。--backup該選項指定如果目標文件存在時的動作,共有四種備份策略:
1.CONTROL=none或off : 不備份。
2.CONTROL=numbered或t:數字編號的備份
3.CONTROL=existing或nil:如果存在以數字編號的備份,則繼續編號備份m+1...n:
執行mv操作前已存在以數字編號的文件log2.txt.~1~,那么再次執行將產生log2.txt~2~,以次類推。如果之前沒有以數字編號的文件,則使用下面講到的簡單備份。
4.CONTROL=simple或never:使用簡單備份:在被覆蓋前進行了簡單備份,簡單備份只能有一份,再次被覆蓋時,簡單備份也會被覆蓋。
mv不會創建新目錄,只能將源目錄或源文件移入已創建好的目錄,若目標文件或文件夾不存在時,將只會是改名,而不是移動文件或目錄
8, cp命令
cp命令用來復制文件或者目錄,是Linux系統中最常用的命令之一。一般情況下,shell會設置一個別名,在命令行復制文件時,如果目標文件已存在,就會詢問是否覆蓋,不管你是否使用參數-i,但如果是在shell腳本中執行cp時,沒有參數-i時不會詢問是否覆蓋,這說明命令行和shell腳本的執行方式有些不同。
(1) 命令格式: cp [選項]… [-T] 源 目的
或 cp [選項]… 源… 目錄
或 cp [選項]… -t 目錄 源…
(2) 命令功能:將源文件復制至目標文件,或將多個源文件復制至目標文件
(3) 命令參數:
-i ,--interactive 覆蓋前詢問(使前面的-n選項失效)
-n ,--no-clobber 不要覆蓋已存在的文件(使前面的-i選項失效)
-R,-r,--recursive 復制目錄及目錄內的所有項目
(4) 命令實例:
①復制單個文件到目標目錄,文件在目標文件中不存在
cp log.log test5
在沒有帶-a參數時,兩個文件的時間是不一樣的,在帶來-a參數時,兩個文件的時間是一致的。
②目標文件存在時,會詢問是否覆蓋。
cp log.log test5
目標文件存在時,會詢問是否覆蓋,這是因為cp 是cp –i 的別名,目標文件存在時,即時加了-f標志,也還會詢問是否覆蓋。
③復制整個目錄
cp –a test3 test5
注意目標目錄存在與否結果是不一樣的,目標目錄存在時,整個源目錄被復制到目標目錄里面。
④復制的log.log建立一個鏈接檔案log_link.log
cp –s log.log log_link.log
⑤那個log_link.log是由-s的參數造成的,建立的是一個【快捷方式】,所以會看到在文件的最右邊,會顯示這個文件是鏈接到哪里去的。
9, touch命令
Linux的touch命令不常用,一般在使用make的時候可能會用到,用來修改文件時間戳,或者新建一個不存在的文件。
(1) 命令格式: touch [選項]…文件…
(2) 命令功能:touch命令參數可更改文檔或目錄的日期時間,包括存取時間和更改時間。
(3) 命令參數:
-a 或--time = atime--time =access或--time=use 只更改存取時間
-c 或--no-create 不建立任何文檔
-d 使用指定的日期時間,而非現在的時間
-m 或--time=mtime或--time=modify 只更改變動時間
-r 把指定文檔或目錄的日期時間,統統設成和參考文檔和目錄的日期時間相同
-t 使用指定的日期,而非現在的時間
(4) 常用實例:
①創建不存在的文件:
touch log2015.log log2016.log
如果log2014.log不存在,則不創建文件
②更新log.log的時間和log2015.log時間戳相同
touch –r log2015.log log.log
③設定文件的時間戳
touch –t 201505191357.50 log.log
-t time 使用指定的時間值 time 作為指定文件相應時間戳記的新值.此處的 time規定為如下形式的十進制數:
[[CC]YY]MMDDhhmm[.SS]
這里,CC為年數中的前兩位,即”世紀數”;YY為年數的后兩位,即某世紀中的年數.如果不給出CC的值,則touch 將把年數CCYY限定在1969--2068之內.MM為月數,DD為天將把年數CCYY限定在1969--2068之內.MM為月數,DD為天數,hh 為小時數(幾點),mm為分鍾數,SS為秒數.此處秒的設定范圍是0--61,這樣可以處理閏秒.這些數字組成的時間是環境變量TZ指定的時區中的一個時 間.由於系統的限制,早於1970年1月1日的時間是錯誤的。
10, cat命令
cat命令的用途是連接文件或標准輸入並打印,這個命令常用來顯示文件內容,或者將幾個文件連接起來顯示,或者從標准輸入讀取內容並顯示,它常與重定向符號配合使用。
(1) 命令格式:cat [選項] [文件]…
(2) 命令功能:cat主要有三大功能:
①一次顯示整個文件:cat filename
②從鍵盤創建一個文件:cat>filename只能創建新文件,不能編輯已有文件
③將幾個文件合並為一個文件:cat file1 file2>file
(3) 命令參數:
-A,--show-all 等價於-vET
-b,--number-nonblank 對非空輸出行編號
-e 等價於 –vE
-E,--show-ends 在每行結束處顯示$
-n,--number 對輸出的所有行編號,由1開始對所有輸出的行數編號
-s,--squeeze-blank 有連續兩行以上的空白行,就代換為一行的空白行
-t 與-vT等價
-T,--show-tabs 將跳格字符顯示為^I
(4) 使用實例:
①把log2012.log的文件內容加上行號后輸入log2013.log這個文件
cat –n log2012.log log2013.log
②把log2012.log和log2013.log的文件內容加上行號(空白行不加)之后將內容附加到log.log里。
cat –b log2012.log log2013.log log.log
③把log2012.log的文件內容加上行號后輸入log.log這個文件里
cat –n log2012.log>log.log
④注意tac是反向列示,tac是將cat反過來,所以它的功能就跟cat相反,cat是由第一行到最后一行連續顯示在熒幕上,而tac則是由最后一行到第一行反向在銀幕上顯示。
11, more命令
more命令功能類似cat,cat命令是整個文件的內容從上到下顯示在屏幕上,more會一起一頁一頁的顯示方便使用者逐頁閱讀,而最基本的指令就是按空白鍵(space)就往下一頁顯示,按b鍵就會往回(back)一頁顯示,而且還有搜尋字串的功能,more命令從前向后讀取文件,因此在啟動時就加載整個文件。
(1) 命令格式:
more [-dlfpcsu][-num][+/pattern][+linenum][file…]
(2) 命令功能:more命令和cat的功能一樣都是查看文件里的內容,但有所不同的是more可以按頁來查看文件的內容,還支持直接跳轉行等功能。
(3) 命令參數:
+n 從第n行開始顯示
-n 定義屏幕大小為n行
+/pattern 在每個檔案顯示前搜尋該字串(pattern),然后從該字串前兩行之后開始顯示
-c 從頂部清屏,然后顯示
-p 通過清除窗口而不是滾屏來對文件進行換頁,與-c選項相似
(4) 常用操作命令:
Enter 向下n行,需要定義,默認為1行
Ctrl+F、空格鍵 向下滾動一屏
Ctrl+B 返回上一屏
= 輸出當前行的行號
:f 輸出文件名和當前行的行號
V 調用vi編輯器
q 退出more
(5) 常用實例:
①顯示文件中從第3行起的內容
more +3 log2012.log
②從文件中查找第一個出現”day3”字符串的行,並從該處前兩行開始顯示輸出
more +/day3 log2012.log
③設定每屏顯示行數
more -5 log2012.log
最下面顯示了該屏展示的內容占文件總行數的比例,按Ctrl+F或者空格鍵將會顯示下一屏5條內容,百分比也會跟着變化。
④列一個目錄下的文件,由於內容太多,我們應該學會用more來分頁,這得和管道|結合起來
ls –l | more -5
每頁顯示5個文件信息,按Ctrl+F或者空格鍵將會顯示下5條文件信息
12, tail命令
tail命令從指定點開始將文件寫到標准輸出流,使用tail命令的-f選項可以方便的查閱正在改變的日志文件,tail –f filename會把filename里最尾部的內容顯示在屏幕上,並且不但刷新,使你看到最新的文件內容。(經常用來在查看服務器上的日志文件)
(1) 命令格式: tail [必要參數][選擇參數][文件]
(2) 命令功能:
用於顯示指定文件末尾內容,不指定文件時,作為輸入信息進行處理,常用查看日志文件。
(3) 命令參數:
-f 循環讀取
-q 不顯示處理信息
-v 系那是詳細的處理信息
-c<數目> 顯示的字節數
-n<行數> 顯示行數
(4) 命令實例:
①顯示文件末尾內容
tail –n 5 log2014.log 顯示文件最后5行的內容
②循環查看文件內容
tail -f test.log
③從第5行開始顯示文件
tail –n +5 log2014.log
好了,朋友們,到了這里,我們的12個常用命令就介紹完了,有興趣地可以仔細看看,一定會學到不少東西的!