天天看點

腳本面試題

腳本面試題

1)一個linux程序經曆的個階段

等待:linux程序等待資源;

運作:linux程序目前正在執行中

停止:linux程序在成功執行後或殺死程序信号後停止

停屍:該程序已經結束,但仍然留在程序表中

2)cut指令

截取檔案的指定部分并列印到标準輸出

cut -d 指定切割符

cut -f 組定截取的段數

[root@server3 extmail]# hostname

server3.example.com

[root@server3 extmail]# hostname| cut -d . -f 2

example

3)cmp和diff差別

Diff 為了使兩個檔案一樣的應該做的修改

Cmp 将兩個檔案通位元組對比,并報告一個不比對項。

4)可以用echo指令代替ls指令嗎

可以. Ls 指令可以用echo指令來代替

Ls列出目錄内容,從替換的角度上講,可以使用 echo *,兩個輸出結果一樣

5)聽說過inode嗎

Inode是一個資料結構,在linux上用于目錄和檔案的辨別,每個檔案在linux上有一個獨立的inode和一個唯一的inode号

對于系統來說,檔案名隻是inode号碼便于識别的别稱或者綽号,表面上,使用者通過檔案名,打開檔案,。實際上,系統内部這個過程分成三步;首先,系統找到這個檔案名對應的inode号碼;其次通過inode号碼,擷取inode資訊;最後,根據inode資訊,找到檔案資料所在的block,讀出資料。

Ls -i 指令列出目錄的整個檔案,即檔案号和inode号碼

[root@server3 mnt]# ls -i 2.sh

11907 2.sh

[root@server3 mnt]# ls -i 3.sh

11965 3.sh

6)shell腳本成功執行之前,如何中斷腳本的執行

Exit指令。 Exit指令被強制輸出非0值,腳本會報錯并退出。0表示成功執行,是以腳本終止執行前執行一個不帶引号的 exit -1 指令會使腳本終止。

7)移除檔案頭

删除檔案 sed ‘1 d’ file

了解sed awk指令

8)檢查一個檔案的某行長度

Sed -n ‘n p ’ file | wc -l

9)可以在linux上檢視所有非列印字元

打開vi編輯器,按esc健,然後按:進入指令模式。在指令交界處輸入 set list指令并執行

10)建立一個目錄,該組的人能在該目錄下建立或通路檔案,但除了該檔案建立者其他人不能删除

Chmod g+wx /mnt/

Chmod +t /mnt/

了解o+t g+s指令

11)如何向腳本傳輸

$* 擷取目前腳本的所有參數

$# 擷取目前腳本的參數的總和

$@ 這個程式的所有參數$1 $2 $3 $4 $5.., 這是激昂參數傳送給其他程式的最佳方式,因為他将會保留所有內嵌在每個參數裡的任何空白

$$ 擷取目前shell程序的PID

$! 擷取執行上一條指令的PID

$? 擷取執行上一條指令的傳回值

$* 将所有指令的所有參數視為單個字元串 等同于“$1 $2 $3”

$@ 将指令每個參視為單獨的字元串,等同于“$1” “$2” “$3”,這是将參數傳遞其他程式的最佳方式,因為他會保留所有内嵌在每個參數裡面的任何空白。

12)如何計算傳進來的參數

$#

13)如何檢查之前的指令是否成功執行?

$?

14)如何擷取一個檔案每一行的第三個元素

Awk ‘{print $3}’

15)假如檔案中第一個元素時FIND,如何擷取第二個元素

| awk ‘{if ($$1 == ‘FIND’)} ’ print $2}’

16)如何調試bash腳本

将 -xv 參數加到 #!/bin/bash

如 #! /bin/bash -xv

17)如何寫一個函數

Funnction example {

}

18)如何連接配接兩個字元串

V1= v2= v3=${v1}${v2}

19)寫出shell腳本中所有的循環

For 循環

For i in $(ls)

Do

Echo “ ”

Done

While循環

Until循環

[root@server3 mnt]# cat 6.sh

!/bin/bash

count=20

until [ $count -lt 10 ]

do

count=$(($count - 1))

done

echo "$count"

20)每個腳本的#!/bin/bash什麼意思

腳本開頭的第一行

一個規範的shell腳本的第一行會指出由那個程式來執行腳本的内容.

!為幻數,在執行腳本的時候,核心會根據它來确定哪個程式來解釋腳本中的内容.如果腳本開頭不指定解釋器,那麼就要用對應的解釋器來執行腳本.

Bash test.sh

Python test.py

21)如何擷取第十行

了解sed 用法

22)指令export作用

使變量在子shell中也可以用

23)如何在背景運作腳本

腳本後面添加&

了解背景的運作

24)chmod 500 scripts 作用

使腳本所有者擁有可執行的權限

25)> 做什麼

重定向流到檔案

26)& 和&&差別

& 希望腳本背景運作時使用它

&& 目前一個腳本成功完成以後執行後面的指令

27)什麼時候要在【condition】之前使用if

當條件滿足時需要運作多條指令的時候

28)執行name=jono && echo 'my name is $name'的輸出

[root@server3 mnt]# name=jono && echo 'my name is $name'

my name is $name

29)指令echo ${new:-variable}的輸出

[root@server3 mnt]# echo ${new:-variable}

variable

了解字元串的操作

30)‘ 和 “ 差別

‘ 不希望把變量轉換為值時使用它

“ 會計算所有變量的值并用值代替

單引号;所見及所得.即将單引号裡内容原樣輸出

雙引号:把雙引号裡面内容輸出出來,如果内容中有指令,變量等,會先把指令,變量解釋出來,然後輸出最終内容.

31)如何在腳本中重定向标準輸出和标準錯誤

Exec > log.txt 2>&1

了解重定向

32)如何隻用echo 指令擷取字元串變量的一部分

Echo ${variable ;x:y}

33)如何計算本地使用者的數目

[root@server3 mnt]# wc -l /etc/passwd | cut -d " " -f 1

23

34)列出UID小于100

Awk -F: ‘$3 < 100’ /etc/passwd

35)如何列印變量最後5個字元

| echo ${variable : -5}

36)${variable:-10} 和 ${variable: -10} 前者如果之前沒有給指派則輸出10,如果指派理論則輸出改變,後者輸出varible最後10個字元

37)了解tr 替換指令

38)expore $variable 或 export variable 哪個正确

後者正确

39)如何列出第二個字母是a 或b 檔案

ls -d ?[ab]*

40)寫出0~100中3的倍數

[root@server3 mnt]# cat m7.sh

!bin/bash

for i in {0..100..3}

echo $i

41)【$a = $b】 和 【$a -eq $b】差別

前者用于字元串的比較,後者擁有數字的比較

51)= 和 ==差別

前者用于變量指派,後者用于字元串比較。

52)如何在shell中更改标準的域分隔符為 :

| IFS=“:”

53)如何去除字元串的所有空格

| echo $string | tr -d “ ”

54)重寫這個指令,将輸出變量轉換為複數

55)如何輸出目前shell的PID

[root@server3 mnt]# echo $$

1060

56)如何在bash 中定義數組

[root@server3 mnt]# arrary=("hi" "my" "name")

57)如何列印數組的第一個元素

[root@server3 mnt]# echo ${arrary[0]}

hi

58)如何列印數組的所歐元素

[root@server3 mnt]# echo ${arrary[@]}

hi my name

59)如何輸出數組的索引

[root@server3 mnt]# echo ${!arrary[@]}

0 1 2

60)如何移除數組的索引為2的元素

[root@server3 mnt]# unset arrary[2]

61)如何在數組中添加ID為333的元素

[root@server3 mnt]# arrary[333]="new_pp"

了解數組的相關知識。

上一篇: 利用