腳本面試題
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
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
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"
瞭解數組的相關知識。