腳本面試題

腳本面試題
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
examplenode

3)cmp和diff區別
Diff 爲了使兩個文件同樣的應該作的修改
Cmp 將兩個文件通字節對比,並報告一個不匹配項。linux

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.shshell

6)shell腳本成功執行以前,如何中斷腳本的執行
Exit命令。 Exit命令被強制輸出非0值,腳本會報錯並退出。0表示成功執行,所以腳本終止執行前執行一個不帶引號的 exit -1 命令會使腳本終止。
7)移除文件頭
刪除文件 sed ‘1 d’ file
瞭解sed awk命令數組

8)檢查一個文件的某行長度
Sed -n ‘n p ’ file | wc -lbash

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腳本的第一行會指出由那個程序來執行腳本的內容.

!/bin/bash

!爲幻數,在執行腳本的時候,內核會根據它來肯定哪一個程序來解釋腳本中的內容.若是腳本開頭不指定解釋器,那麼就要用對應的解釋器來執行腳本.

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}
do
echo $i
done

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"

瞭解數組的相關知識。

相關文章
相關標籤/搜索