Linux Shell腳本的10個有用的“麵試問題和解答”
Linux Shell腳本的10個有用的“麵試問題和解答”首先致上每日問候。Linux的浩瀚無垠,使人總能每次都提交與眾不同的內容。我們“The-Tecmint-Team”的工作是給我們的讀者提供一些獨特的內容,這些內容不僅對他們的職業生涯很有用,同時也讓他們增長知識。在此,我們就嚐試這麼去做,至於能取得多大的成功,就由我們的讀者朋友們來判斷吧。
Questions on Shell Scripting
我們為各類用戶提供了關於Shell腳本語言和麵試問題的很多教程,可以訪問以下鏈接去閱讀這些文章。
在此,作為shell腳本的附加內容,在本文中我們將從麵試的角度解讀與Linux Shell相關的問題。
1. 在shell腳本成功執行前,如何中斷腳本執行?
解答:我們需要使用‘exit’命令來實現以上描述的情境。‘exit’命令被強製輸出非0值時,腳本會報錯並退出。在Unix環境下的shell腳本中,0值表示成功執行。因此,在腳本終止前執行一個不帶引號的‘exit -1’命令將使腳本中止。
例如,創建以下一個名為“anything.sh”的腳本。
- #!/bin/bash
- echo "Hello"
- exit -1
- echo "bye"
保存文件並執行。
- # sh anything.sh
- Hello
- exit.sh: 3: exit: Illegal number: -1
從上麵的腳本中可以清楚地看到,在exit -1命令前,腳本執行得很好。
2. 如何使用Linux命令來移除文件頭?
解答:當我們需要刪除文件中的指定行時,‘sed’命令可以用來解決該問題。
這個是用來刪除文件頭(文件的首行)的正確命令。
- # sed '1 d' file.txt
上麵命令的問題是,它會在標準輸出設備上輸出不帶首行的文件內容。為了保存輸出到文件,我們需要使用重定向操作符,它將幫助你將輸出重定向到文件。
- # sed '1 d' file.txt > new_file.txt
好吧,其實sed命令內建的‘-i’開關就可以幹這活,就不需要重定向符了吧。
- # sed -i '1 d' file.txt
3. 你怎麼檢查一個文本文件中某一行的長度?
解答:‘sed’命令也可以用來查找文本文件中的某一行或者檢查其長度。
‘sed -n ‘n p’ file.txt’可以解決,這裏‘n’表示行號,‘p’打印出匹配內容(到標準輸出),該命令通常與-n命令行選項連用。那麼,怎樣來獲取長度計數呢?很明顯,我們需要通過管道輸出給‘wc’命令來計算。
- # sed –n 'n p' file.txt | wc –c
要得到文本文件‘tecmint.txt’的第五行的長度,運行如下命令:
- # sed -n '5 p' tecmint.txt | wc -c
4. 可以在Linux係統上查看到所有非打印字符嗎?你是怎麼做到的?
解答:可以。可以在Linux中查看所有的非打印字符。要實現上麵所講的方案,我們需要‘vi’編輯器的幫助。 怎樣在‘vi’編輯器中顯示非打印字符?
- 打開vi編輯器。
- 先按[esc]鍵,然後按‘:’進入到vi編輯器的命令模式。
- 最後,從‘vi’編輯器的命令界麵輸入set list命令並執行。
注: 這種方式可以查看文本文件中的所有非打印字符,包括ctrl+m(^M)。
5. 假如你是一個員工組的團隊領導,為xyz公司工作。公司要求你創建一個‘dir_xyz’目錄,讓該組成員都能在該目錄下創建或訪問文件,但是除了文件創建者之外的其他人不能刪除文件,你會怎麼做?
解答:這真是個有趣的工作方案。好吧,上麵所講的方案,我們需要通過下麵的步驟來實施,這簡直就是小菜一碟。
- # mkdir dir_xyz
- # chmod g+wx dir_xyz
- # chmod +t dir_xyz
第一行命令創建了一個目錄(dir_xyz),上麵的第二行命令讓組(g)具有‘寫’和‘執行’的權限,而上麵的最後一行命令——權限位最後的‘+t’是‘粘滯位’,它用來替換‘x’,表明在這個目錄中,文件隻能被它們的擁有者、目錄的擁有者或者是超級用戶root刪除。
6. 你能告訴我一個Linux進程經曆的各個階段嗎?
解答:一個Linux進程在它的一生中,通常經曆了四個主要階段。
這裏是Linux進程要經曆的四個階段。
- 等待:Linux進程等待資源。
- 運行:Linux進程當前正在執行中。
- 停止:Linux進程在成功執行後或收到殺死進程信號後停止。
- 僵屍:如果該進程已經結束,但仍然留在進程表中,被稱為‘僵屍’。
7. Linux中cut命令怎麼用?
解答:‘cut’是一個很有用的Linux命令,當我們要截取文件的指定部分並打印到標準輸出,當文本區域以及文件本身很大時,這個命令很有用。
例如,截取‘txt_tecmint’文件的前10列。
- # cut -c1-10 txt_tecmint
要截取該文件中的第二,第五和第七列。
- # cut -d;-f2 -f5 -f7 txt_tecmint
8. ‘cmp’和‘diff’命令的區別是什麼?
解答:‘cmp’和‘diff’命令用來獲取相同的東西,但各有側重。
‘diff’命令輸出為了使兩個文件一樣而應該做的修改。而‘cmp’命令則將兩個文件逐字節對比,並報告第一個不匹配的項。
9. 可以用‘echo’命令來替換‘ls’命令嗎?
解答:可以的。‘ls’命令可以用‘echo’命令來替代。‘ls’命令列出目錄內容,從替換上述命令的角度講,我們可以使用‘echo *’,兩個命令的輸出完全一樣。
10. 你可能聽過inode吧。你能簡要描述一下inode嗎?
解答:‘inode’是一個‘數據結構’,在Linux上用於文件標識。每個文件在Unix係統上有一個獨立的‘inode’和一個‘唯一的’inode號。
到此為止吧。在下一篇文章中,我們將討論另外一些有趣味性而又有知識性的麵試問題。到那時,別跑開,請上Tecmint.com,別忘了在下麵的評論部分給我們提供一些有價值的反饋哦。
原文發布時間:2014-05-27
本文來自雲棲合作夥伴“linux中國”
最後更新:2017-05-17 16:33:06