首頁  >  文章  >  系統教程  >  10個有趣的 Linux Shell 腳本 “面試和解答”,老司機也可能 “翻車” ?

10個有趣的 Linux Shell 腳本 “面試和解答”,老司機也可能 “翻車” ?

WBOY
WBOY轉載
2024-02-12 18:24:16584瀏覽

Linux 的廣闊無邊,讓人總能每次都呈現出與眾不同的內容。這些內容不僅對他們的職涯發展很有益,同時也讓他們增加知識。在這裡,我們就試著這麼做,至於能達到多大的效果,就由我們的讀者朋友來評判吧。

在這裡,作為 shell 腳本的補充內容,在本文中我們將從面試的角度來解答與 Linux Shell 相關的問題。

1.在 shell 腳本成功執行前,如何中斷腳本執行?

解答:我們需要使用exit指令來實作以上描述的場景。 exit指令被強制輸出非0值時,腳本會報錯並退出。在 Unix 環境下的 shell 腳本中,0值表示成功執行。因此,在腳本結束前執行一個不帶引號的exit -1命令將使腳本終止。

#!/bin/bash
echo "Hello"
exit -1
echo "bye"

儲存檔案並執行。

#!/bin/bash
echo "Hello"
exit -1
echo "bye"

從上面的腳本可以清楚地看到,在 exit -1 指令前,腳本執行得很好。

2.如何使用 Linux 指令來移除檔案頭?

解答:當我們需要刪除檔案中的指定行時,sed指令可以用來解決這個問題。

這個是用來刪除檔案頭(檔案的首行)的正確命令。

# sed '1 d' 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

要得到文字檔案‘linuxmi.txt’的第五行的長度,執行如下指令:

# sed -n '5 p' linuxmi.txt | wc -c
10个有趣的 Linux Shell 脚本 “面试和解答”,老司机也可能 “翻车” ?

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_linuxmi文件的前10列。

# cut -c1-10 txt_linuxmi

要截取该文件中的第二,第五和第七列。

# cut -d;-f2 -f5 -f7 txt_linuxmi

8. cmpdiff命令的区别是什么?

解答cmpdiff命令用来获取相同的东西,但各有侧重。
diff命令输出为了使两个文件一样而应该做的修改。而‘cmp’命令则将两个文件逐字节对比,并报告第一个不匹配的项。

9. 可以用**echo指令來取代ls指令嗎? **

解答:可以的。 ‘ls’指令可以用‘echo’指令來取代。 ‘ls’指令列出目錄內容,從取代上述指令的角度講,我們可以使用‘echo *’,兩個指令的輸出完全一樣。

10. 你可能聽過 inode 吧。能簡單描述一下 inode 嗎?

解答:inode 是一個資料結構,在 Linux 上用於檔案標識。每個檔案在 Unix 系統上都有一個獨立的 inode 和一個唯一的 inode 號碼。

以上是10個有趣的 Linux Shell 腳本 “面試和解答”,老司機也可能 “翻車” ?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:lxlinux.net。如有侵權,請聯絡admin@php.cn刪除