linux系統上通常有幾種shell可以使用,所有linux發行版默認的shell都是base shell,本專欄以bash shell為例,學習其內部命令,
<一些小知識>
1. /etc/passwd 檔案指定了登錄用戶使用的shell程式,我們可以輸入以下命令按回車,來查看檔案的內容,(cat命令可以列印檔案的內容),
cat /etc/passwd
可以看到,我們登錄的work用戶,默認是bash shell.
![]()
2. 在登錄后,我們可以看到shell的提示符($),表明shell在等待輸入,

可以使用man命令,查找存盤在linux系統上的手冊,
![]()
回車得到結果,可以看到命令的解釋說明,

<檔案系統>
windowx會將硬碟磁區,在邏輯上分為幾個盤符(也就是我們平時所說的C盤、D盤),這些C、D盤在物理結構上相互獨立,都是從硬碟中劃分的某塊區域,這些物理結構獨立的C、D盤在邏輯結構上也相互獨立,是一種并行的結構,因為每個盤有自己的目錄結構,
而linux只有一個根目錄("/"),所有檔案都存盤在以根目錄為基礎的目錄結構中,
linux機子上安裝的第一塊硬碟稱為根驅動器,根目錄等都在這塊硬碟上,此外,linux會設定一些“掛載點”,掛載點是一個特殊的目錄,該目錄仍處在根目錄下,但是該目錄下的所有資料都"掛載(存盤)"在另一個硬碟中,各硬碟承擔了不同目錄的存盤,因此在邏輯結構上并不是并行的,
① pwd : 查看當前目錄
linux登錄后,會位于主目錄("~" 代表主目錄)中,輸入pwd,回車,查看當前所處位置的絕對路徑,
![]()
② cd : 將shell回話切換到另一個目錄
cd destination
destination為將要切換到的目錄,可以使用絕對路徑或相對路徑,
絕對路徑指目錄的全名,即從根目錄 "/" 開始的目錄名,

相對路徑指用戶基于當前位置的路徑,如果一直使用絕對路徑太過冗長(尤其是處于多級目錄下的時候),使用相對目錄就會簡單很多(實際的作業開發中確實也是這樣),

注:
單點符(.),表示當前目錄;
雙點符(..),表示當前目錄的上級目錄,
tips:在輸入時,使用制表鍵(tab)進行補全是一項神級方便的操作,比如在/home路徑下,輸入w按制表鍵,會查詢該路徑下所有w開頭的檔案/目錄,如果只有一個work,則按一下就能把work補充完整;如果有多個,則按兩下會展示所有的符合項,然后我們可以繼續輸入知道可以唯一識別補全為止,對于絕對/相對路徑,或者對一些命令如python等,都可以進行補全,
使用pwd和cd命令,我們已經可以在各目錄間"游蕩"并對自己進行定位了,ls命令則是可以讓我們看到當前目錄下都有什么,
③ ls : 顯示當前目錄下的檔案和目錄

ls的輸出按列對字母排序(部分檔案由于隱私原因打了碼,大家湊合看...),其中藍色代表目錄,白色代表檔案,這個可以在LS_COLORS中設定(如果你使用的終端支持彩色功能),
ls命令加上一些引數,能得到更詳細的顯示,如上述功能,可使用-F引數(區分大小寫),則會在目錄后加上 "/",在可執行檔案后加上 "*",

ls命令默認只顯示未隱藏檔案,而linux常用隱藏檔案來保存配置資訊,隱藏檔案的檔案名通常以點號開頭,使用 -a 引數,可以將隱藏檔案也顯示出來,
注:在主目錄(~)下,ls -a 會顯示出三個檔案 .bash_history .bash_logout .bashrc,這三個檔案是該登錄用戶bash shell環境是用的隱藏檔案,
ls -R 可以遞回顯示目錄下包含子目錄中的所有檔案,
ls -l 可以顯示更詳細的資訊,

各列含義為:
- 檔案型別:目錄(d),檔案(-),字符型檔案(c),塊設備(b);
- 檔案權限:r(可讀)w(可寫)x(可執行),有三組rwx,從左往右分別是所屬主、組、其他用戶的權限;
- 硬鏈接總數;
- 檔案屬主用戶名;
- 檔案屬組組名;
- 檔案大小(單位位元組);
- 檔案最新一次修改時間;
- 檔案/目錄名,
注:可以使用多個引數,可以分開也可以連寫,如 ls -a -l 或 ls -al 都可以;
ls命令支持使用文本匹配的方式,過濾顯示的字樣,如

④touch: 創建檔案 & mkdir: 創建目錄

mkdir -p 可以一起創建目錄和子目錄
⑤cp : 復制檔案/目錄
cp source destination
當souce和destination同是檔案名時,會產生一個新的檔案,當destination是目錄時,會在該目錄產生復制一個同名的檔案,

cp -R source_dir destination_dir
加上-R引數可以讓你遞回復制整個目錄及目錄下的檔案到新目錄下,如果沒有則會創建該目錄,
注:cp命令產生的檔案會直接覆寫重名檔案,使用cp命令最好加上 -i 引數,詢問是否覆寫,
⑥mv : 重命名檔案
mv命令可以將檔案或目錄移動到某位置,之所以叫重命名,是因為mv操作只改變了檔案/目錄的位置和名字,并不會改變檔案/目錄的inode和修改時間,
注:最好加上 -i 引數,
⑦rm / rmdir : 洗掉檔案/目錄
rm 檔案名
rm -r 目錄名
rm -rf 目錄名
rmdir 空目錄名
rm命令可以洗掉檔案;rmdir命令可以洗掉空目錄,非空目錄無法洗掉,
如果要洗掉非空目錄,可以加上 -r 引數,使命令可以向下進入目錄中遞回洗掉;如果要忽略檔案洗掉程序中的詢問,可以使用 -f 引數,進行洗掉前,建議使用tree命令,查看下目錄下都有那些檔案,確定無誤后在進行操作:

作業中最省事也最危險的就是rm -rf ,大家一定要慎用;還有一些惡搞的圖片(如下圖),千萬別嘗試,試試就逝世!

⑧ file : 識別檔案型別
file命令可以識別目錄、檔案型別、編碼、甚至鏈接和可執行程式的編譯所面向的平臺等,在處理資料時十分有用,也可以避免很多錯誤發生(如打開某二進制檔案,導致終端卡死),

⑨ cat & head & tail : 查看檔案
cat file
head -5 file
tail -10 file
cat命令可以輸出整個檔案,cat -n 引數可以帶行號顯示,
cat命令若要輸出一個大檔案,造成的結果就是被檔案的內容瘋狂刷屏,解決這個問題可以使用more 或 less:
cat file | more
cat file | less
"|"代表管道,它將前一個命令的輸出(standard output)傳輸到下一個命令(standard input),管道詳細的介紹之后的章節會講到,這里我們只需知道它將cat命令的輸出作為more命令的輸入進行傳遞,
more或less在顯示整頁后停止,若要看后面的內容可以回車或者空格往下翻,或者按q退出,其中less命令與more命令作用相同,只是多了一些比如往上翻的功能,

本篇簡單介紹了linux檔案系統,對檔案/目錄的基本操作,其中有一些自己的理解,如果有問題歡迎留言一起探討!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/413423.html
標籤:其他
上一篇:LeetCode 熱題 HOT 100_NO.4中位數
下一篇:c語言實作二分查找法
