參考來源:https://www.guru99.com/shell-scripting-interview-questions.html
1.典型Linux系統上常用的shell有哪些不同類型?
csh,ksh,bash,Bourne。目前最常使用的shell是“Bash”。
2.軟鏈接和硬鏈接有什麼區別?
軟鏈接是文件名的鏈接,也可以駐留在不同的文件名中; 但硬鏈接鏈接到文件的inode,並且必須與文件的文件系統相同。刪除原始文件會使軟鏈接處於非活動狀態(斷開鏈接),但不會影響硬鏈接(硬鏈接仍將訪問該文件的副本)。
3.如何在Linux中傳遞和訪問腳本的參數?
參數可以傳遞為:
scriptName“Arg1”“Arg2”....“Argn”並且可以在腳本內部以$ 1,$ 2 .. $ n的形式訪問。
4.$#的意義是什麼?
$#顯示傳遞給腳本的參數計數。
5.$*和$@有什麼區別?
$@將每個引用的參數視為單獨的參數,但$*將整個位置參數集視為單個字符串。
6.使用 sed command替換文件內容(模擬tac命令)
例:
if cat fille
ABCD
EFGH
那要變成
EFGH
ABCD
則要使用指令:
sed '1! G; h;$!d' file1
這裡G命令附加到模式空間,
h命令複製模式緩衝區以保存緩衝區
d命令刪除當前模式空間。
7.給定一個文件,將所有出現的單詞“ABC”替換為“DEF”,從第 5 行直到僅包含單詞“MNO”的那些行結束
指令:
sed -n'5,$ p'file1 | sed'/ MNO / s / ABC / DEF /'
8.如何僅使用tail和head命令找到文件的第 99 行?
指令:
tail +99 file1 | head -1
9.解釋一個文件中的“s”權限位?
“s”位稱為“設置用戶ID”(SUID)位。
文件中的“s”位使得進程在程序實例期間具有文件所有者的特權。
例如,執行“passwd”命令更改當前密碼會導致用戶將其新密碼寫入影子文件,即使它具有“root”作為其所有者。
10.創建一個目錄,以便組中的任何人都可以創建文件並訪問其中的任何人的文件,但是沒有人能夠刪除除他自己創建的文件之外的文件。
我們可以創建一個目錄,為組中的每個人提供讀取和執行訪問權限,並將其粘滯位設置為“t”,如下所示:
mkdir direc1
chmod g + wx direc1
chmod + t direc1
11.怎麼知道系統運行了多長時間?
使用指令“uptime”
12.如何找到有關特定用戶的所有信息,例如他的shell,現實名稱,目錄,他使用系統的時間和長度?
finger“loginName”...其中loginName是登錄名
13.$$和$之間的區別是什麼?
$$給出了當前正在執行的進程的進程ID,而$!顯示最近進入後台的進程的進程ID。
14.如何將文件從一台機器複製到另一台機器?
我們可以使用“ftp”,“scp”或“rsync”等實用程序將文件從一台機器複製到另一台機器。
例如,使用ftp:
FTP主機名
put file1
bye
上面的副本,文件file1從本機移到指定主機。
15.連接到遠程服務器並執行一些命令,我該如何實現?
我們可以使用ssh來做到這一點:
ssh username @ serverIP -p sshport
例ssh root@122.52.251.171 -p 22
執行上述命令後,系統將要求輸入密碼。
16.如何從Linux連接到數據庫服務器?
我們可以使用開放客戶端驅動程序附帶的isql實用程序,如下所示:
isql -S serverName -U username -P password
17.Linux中的3個標準流是什麼?
0 - 標準輸入1 - 標準輸出2 - 標準錯誤
18.從文件找到包含單詞“ABC”的行數。
grep -c“ABC”file1
19.如何印出系統上所有用戶的登錄名?
/ etc / shadow文件列出了所有用戶。
20.如何找到特定用戶使用的總磁盤空間?
du -s / home / user1 ....其中user1是需要找到總磁盤空間的用戶。
之後看Linux常見問題。