1. 程式人生 > >Shell面試常問指令總結(1)

Shell面試常問指令總結(1)

1.Shell

1.1常用命令

1. ls: 類似於dos下的dir命令

ls最常用的引數有三個: -a -l -F。
ls –a
Linux上的檔案以.開頭的檔案被系統視為隱藏檔案,僅用ls命令是看不到他們的,而用ls -a除了顯示一般檔名外,連隱藏檔案也會顯示出來。
ls –l
該引數顯示更詳細的檔案資訊。
ls –F
使用這個引數表示在檔案的後面多新增表示檔案型別的符號,例如*表示可執行,/表示目錄,@表示連結檔案,這都是因為使用了-F這個引數。但是現在基本上所有的Linux發行版本的ls都已經內建了-F引數,也就是說,不用輸入這個引數,我們也能看到各種分辨符號。

2. cd: 用於切換使用者當前工作目錄

cd aaa 進入aaa目錄
cd 命令後不指定目錄,會切換到當前使用者的home 目錄
cd ~ 作用同cd後不指定目錄,切換到當前使用者的home 目錄
cd - 命令後跟一個減號,則會退回到切換前的目錄
cd .. 返回到當前目錄下的上一級目錄

3. pwd:用於顯示使用者當前工作目錄

4. mkdir 和 rmdir

midir:建立目錄
rmdir:刪除目錄
兩個命令都支援-p引數,對於mkdir命令若指定路徑的父目錄不存在則一併建立,對於rmdir命令則刪除指定路徑的所有層次目錄,如果資料夾裡有內容,則不能用rmdir命令
如下:
mkdir -p 1/2/3
rmdir -p 1/2/3

5. cp:複製命令

複製一個檔案到另一目錄:cp 1.txt ../test2
複製一個檔案到本目錄並改名:cp 1.txt 2.txt
複製一個資料夾a並改名為b:cp -r a b

6. mv:移動命令

將一個檔案移動到另一個目錄:mv 1.txt ../test1
將一個檔案在本目錄改名:mv 1.txt 2.txt
將一個檔案移動到另一個目錄並改名:mv 1.txt ../test1/2.txt

7. rm命令

rm命令用於刪除檔案,與dos下的del/erase命令相似,rm命令常用的引數有三個:-i,-r,-f。
–i :系統在刪除檔案之前會先詢問確認,使用者回車之後,檔案才會真的被刪除。需要注意,linux下刪除的檔案是不能恢復的,刪除之前一定要謹慎確認。
–r:該引數支援目錄刪除,功能和rmdir命令相似。
–f:和-i引數相反,-f表示強制刪除

8. du、df命令

du命令可以顯示目前的目錄所佔用的磁碟空間,df命令可以顯示目前磁碟剩餘空間。
如果du命令不加任何引數,那麼返回的是整個磁碟的使用情況,如果後面加了目錄,就是這個目錄在磁碟上的使用情況。
du -hs 指定目錄 檢視指定目錄的總大小
du -hs ./* 檢視當前目錄下的所有資料夾和檔案的大小
df -T 檢視磁碟分割槽格式
這兩個命令都支援-k,-m和-h引數,-k和-m類似,都表示顯示單位,一個是k位元組一個是兆位元組,-h則表示human-readable,即友好可讀的顯示方式。

9. cat命令

cat命令的功能是顯示或連結一般的ascii文字檔案。cat是concatenate的簡寫,類似於dos下面的type命令。用法如下:
cat file1 顯示file1檔案內容
cat file1 file2 依次顯示file1,file2的內容
cat file1 file2 > file3 把file1, file2的內容結合起來,再“重定向(>)”到file3檔案中。
“>”是右重定向符,表示將左邊命令結果當成右邊命令的輸入,注意:如果右側檔案是一個已存在檔案,其原有內容將會被清空,而變成左側命令輸出內容。如果希望以追加方式寫入,請改用”>>”重定向符。
如果”>”左邊沒有指定檔案,如: cat >file1,將會等使用者輸入,輸入完畢後再按[Ctrl]+[c]或[Ctrl]+[d],就會將使用者的輸入內容寫入file1。

10. echo命令

語法:echo [-ne][字串]
功能:echo會將輸入的字串送往標準輸出,輸出的字串間以空白字元隔開, 並在最後加上換行符。
引數:

    -n 顯示字串時在最後自動換行  
    -e 支援以下格式的轉義字元
    -E 不支援以下格式的轉義字元  

注意事項:
在Linux使用的bash下,單引號’’和雙引號是有區別的,單引號忽略所有的轉義,雙引號不會忽略以下特殊字元:
Dollar signs ($),Back quotes (`),Backslashes (/),Excalmatory mark(!)

引數 功能
/a 發出警告聲
/b 刪除前一個字元

11. more,less命令

這兩個命令用於檢視檔案,如果一個檔案太長,顯示內容超出一個螢幕,用cat命令只能看到最後的內容,用more和less兩個命令可以分頁檢視。more指令可以使超過一頁的檔案內容分頁暫停顯示,使用者按鍵後才繼續顯示下一頁。而less除了有more的功能以外,還可以用方向鍵往上或往下的滾動檔案,更方便瀏覽閱讀。

less的常用動作命令:

按鈕 功能
回車鍵 向下移動一行
y 向上移動一行
空格鍵 向下滾動一屏
b 向上滾動一屏
d 向下滾動半屏
h less的幫助
u 向上移動半屏
w 可以指定顯示哪行開始顯示,是從指定數字的下一行顯示;比如指定的是6,那就從第7行顯示
g 跳到第一行
G 跳到最後一行
v 呼叫vi編輯器
q 退出
!command 呼叫SHELL,可以執行命令

12. clear命令

clear命令是用來清除當前螢幕顯示的,不需任何引數,和dos下的cls命令功能相同。

13.head,tail命令

head顯示檔案的頭n行,tail顯示檔案的尾n行,
預設情況n都為10行。可以通過-n方式指定行數

tail -f命令可以實時檢視檔案新增內容

14.wc命令

該命令用於統計指定檔案中的位元組數、字數、行數。該命令各選項含義如下

-l 統計行數
-w 統計字數
-c 統計位元組數

15.grep 命令

grep是(global search regular expression(RE) and print out the line的縮寫,用於從檔案面搜尋包含指定模式的行並打印出來,它是一種強大的文字搜尋工具,支援使用正則表示式搜尋文字。grep的工作方式是這樣的,它在一個或多個檔案中搜索字串模板。如果模板包括空格,則必須被””引用,模板後的所有字串被看作檔名。搜尋結果送到螢幕,不影響原檔案內容。
grep可用於shell指令碼,因為grep通過返回一個狀態值來說明搜尋的狀態,如果模板搜尋成功,則返回0,如果搜尋不成功,則返回1,如果搜尋的檔案不存在,則返回2。我們利用這些返回值就可進行一些自動化的文字處理工作。

示例:

$ ls -l | grep '^a'
通過管道過濾ls -l輸出的內容,只顯示以a開頭的行。
$ grep 'test' d*
顯示所有以d開頭的檔案中包含test的行。
$ grep 'test' aa bb cc
顯示在aa,bb,cc檔案中匹配test的行。
$ grep '[a-z]/{5/}' aa
顯示所有包含每個字串至少有5個連續小寫字元的字串的行。
$ grep 'w/(es/)t.*/1' aa
如果west被匹配,則es就被儲存到記憶體中,並標記為1,然後搜尋任意個字元(.*),這些字元後面緊跟著另外一個es(/1),找到就顯示該行。如果用egrep或grep -E,就不用"/"號進行轉義,直接寫成'w(es)t.*/1'就可以了。

16. man

man是manual的縮寫,相當於Unix/Linux的聯機Help,每個系統命令和呼叫都有非常詳細的說明,絕大多數都是英文。如:man ls即是檢視ls命令的使用說明,一般還有另一種方法用來檢視幫助,如:ls –help,這種方式絕大多數命令都支援。

17. 管道“|”

利用Linux所提供的管道符“|”將兩個命令隔開,管道符左邊命令的輸出就會作為管道符右邊命令的輸入。連續使用管道意味著第一個命令的輸出會作為第二個命令的輸入,第二個命令的輸出又會作為第三個命令的輸入,依此類推。
注意:管道左邊命令的輸出作為管道右邊命令的輸入(命令的輸入是一定的),不是引數,並不是所有命令都支援管道

18.set

不帶任何引數的set命令將顯示shell的全部變數

19.uname

uname不帶引數時,它僅僅顯示你的作業系統的名字
用-s引數,顯示核心名稱
用-r引數,顯示核心發行版
v引數uname也能獲取更詳細的核心版本資訊(譯註:不是版本號,是指該核心建立的時間和CPU架構等)
引數 -n 會提供給你節點的主機名
-m引數。它將告訴你關於硬體的資訊
-i引數會顯示你的硬體平臺(譯註:硬體名稱i686是屬於硬體平臺i386系列的
-p引數檢視處理器型別
o引數顯示作業系統資訊
-a引數,它會顯示所有資訊