shell命令,語法

1. 基本命令

?? ??ps -e?

? ? ? ? ?查看當(dāng)前所有進程

? ? ? mv fileName

????????移動 改名

? ? ? cp?

????????拷貝

? ? ? reboot

????????重啟系統(tǒng)

? ? ? shutdown?

????????關(guān)機

? ? ? mkdir directoryName

????????建新目錄

? ? ? touch fileName

????????創(chuàng)建新文件

? ? ? pgrep?

????????查看某進程的id

? ? ? grep

????????查看符合條件的行,例:grep one nihao.txt =====>one time is enough

? ? ? read

?????????存變量,例:read name 提示輸入值,輸入一個Tom

? ? ? echo

????????輸出字符串或者變量 例:輸入$name is saying hello to me按回車:Tom is saying hello to me(使用單引號可以將變量名輸出)

? ? ? ?chmod 777 fileName

????????更改權(quán)限

? ? ? ?tail fileName

????????查看文件的后十行

? ??? ??cat fileName

????????從第一行開始顯示,tac 從最后一行開始顯示,more分布顯示檔案內(nèi)容,less more head od(以二進制方式顯示檔案內(nèi)容)

? ? ? ?vi fileName

????????編輯器

? ? ? ? ? >

? ? ? ? ? ? ?存數(shù)據(jù)?

? ? ? ? ?>>

? ? ? ? ? ? ?添加數(shù)據(jù)

? ??? ??sleep 60?

? ? ? ? ? ? 停止60s后再執(zhí)行下一個命令

? ??? ??env?

? ? ? ? ? ? 查看當(dāng)前用戶的環(huán)境變量

? ??? ??wget

? ? ? ? ? ?下載命令

????????返回上一個目錄 cu -

2. 方法示例:

? ? ? ?checkFileExist ()???#函數(shù)名

? ? ??{

????????if [?-d /esb/logs/backup/${1}?];??#if判斷;${1}后面的空格不可少,注意![]內(nèi)部的內(nèi)容必須與其有空格格開

????????then#-d表示 存在這個目錄,-f表示存在這個文件,-e表示存在

? ? ? ???? ?? echo 1?

? ?? ? ????else

? ? ?? ??? ?? echo 0?

? ?? ?? ???fi #每個if后面需接fi來結(jié)束

?? ?????? }

????checkFileExist#直接寫方法名,就可調(diào)用方法。(定義方法在上方,調(diào)用方法在下方)

3. for語句示例

????for i in *#for循環(huán)

????? do

????????exist=$(checkFileExist $i)?#調(diào)用函數(shù)的輸出賦值給exist

????????if [ $exist -eq 0 ]; then#-eq為比較數(shù)值大小,-eq為等于,-gt為大于,-lt為小于

????????????cp -r ${i} /esb/logs/backup/?#復(fù)制

? ? ? ? ? ? echo backup /esb/tmp/logs/$i succeed!?

????????? ?fi?

????????done#do之后需要done來結(jié)束

4.?算術(shù)比較運算符

????-eq?等于?應(yīng)用于:整型比較

????-ne?不等于?應(yīng)用于:整型比較

????-lt?小于?應(yīng)用于:整型比較

????-gt?大于?應(yīng)用于:整型比較

????-le?小于或等于?應(yīng)用于:整型比較

????-ge?大于或等于?應(yīng)用于:整型比較

5.?邏輯算符

????-a?雙方都成立(and)?邏輯表達式?–a?邏輯表達式

????-o?單方成立(or)?邏輯表達式?–o?邏輯表達式

????注意:

????????a、if?與[?之間必須有空格

????????b、[ ]與判斷條件之間也必須有空格

????????c、]與; 之間不能有空格

6. 腳本中參數(shù)情況

????名稱 ? ? ? ? ? ?說明

????$0 ? ? ? ? ? ? ? 腳本名稱

????$1-9 腳本執(zhí)行時的參數(shù)1到參數(shù)9

????$! ? ? ???Shell最后運行的后臺Process的PID

????$$ ? ? ??Shell本身的PID(ProcessID)

????$? ? ? ??腳本的返回值(上一條命令得返回值,如果調(diào)用腳本后未獲取,那么以后就再也獲取不到了)

????$# ? ? ??腳本執(zhí)行時,輸入的參數(shù)的個數(shù)

????$@ ? ??輸入的參數(shù)的具體內(nèi)容(將輸入的參數(shù)作為一個多個對象,即是所有參數(shù)的一個列表)

????$*??? ?輸入的參數(shù)的具體內(nèi)容(將輸入的參數(shù)作為一個單詞)

????awk '{pattern + action}' {filenames}?

????在awk中,有如下關(guān)系

?????????變量名 屬性

?????????$0 當(dāng)前記錄

?????????$1~$n 當(dāng)前記錄的第n個字段

?????????FS 輸入字段分隔符 默認(rèn)是空格

?????????RS 輸入記錄分割符 默認(rèn)為換行符

?????????NF 當(dāng)前記錄中的字段個數(shù),就是有多少列

?????????NR 已經(jīng)讀出的記錄數(shù),就是行號,從1開始

?????????OFS 輸出字段分隔符 默認(rèn)也是空格

?????????ORS 輸出的記錄分隔符 默認(rèn)為換行符

7. 隱藏輸出結(jié)果

?????>/dev/null 2>&1 &

8. while語句示例

?????i=4

???? while [ $i -le 10 ]?

????????? do?

? ?????????i=$(($i+1))

? ?????????echo "$i"

????????? done

?????注意:do必須有一個done來結(jié)束它。

9. 函數(shù)、if語句示例

????a=4

? fun() {

? ? if [ 1 -eq 2 ]; then

? ????? ?echo 1;

? ? else if [ 2 -eq 1 ]; then

? ? ????echo 2

? ? else if [ "$a" -eq 4 ]; then

? ? ?echo "a is 4"

? ? fi

? ? fi

? ? fi

? }

? fun

????注意:函數(shù)必須先定義,再使用,就是調(diào)用函數(shù)必須在函數(shù)定義之后??!

? ? if或者else if也必須分別有一個fi來結(jié)束。

10. linux windows回車換行區(qū)別

????Unix系統(tǒng)里,每行結(jié)尾只有“<換行>”,即“\n”;Windows系統(tǒng)里面,每行結(jié)尾是“<換行><回車>”,即“\n\r”;Mac系統(tǒng)里,每行結(jié)尾是“<回車>”。

?一個直接后果是,Unix/Mac系統(tǒng)下的文件在Windows里打開的話,所有文字會變成一行;而Windows里的文件在Unix/Mac下打開的話,在每行的結(jié)尾可能會多出一個^M符號。

每次提交的腳本都要改成linux格式的,不然就會報錯?。。?/p>

11.linux下安裝的winscp語法

? ? scp /home/ixp/qfk/victor/* ixp@22.236.180.191:/ixp/esb/cmd/victor

? ? 第一個參數(shù):拷貝的數(shù)據(jù)源

? ? 第二個參數(shù):拷貝至地址

12.

????grep -c option file:顯示文件中包含搜索內(nèi)容行數(shù),比如前面的命令表示顯示 file中包含option內(nèi)容的行數(shù)是幾

????grep -A/B/C n option file:顯示文件中包含搜索內(nèi)容及其后,前,前與后n行數(shù)據(jù)

????tail -f -n 0 file:動態(tài)顯示file文件的新增內(nèi)容,注意和tail -f的區(qū)別。(tail -f默認(rèn)顯示10行)

????eval用法

????val="cat test.txt"

????echo ${val}

????eval ${val}

&:同時執(zhí)行(左右兩邊的命令同時執(zhí)行)

????&&:&&左邊的命令(命令1)返回真(即返回0,成功被執(zhí)行)后,&&右邊的命令(命令2)才能夠被執(zhí)行;換句話說,“如果這個命令執(zhí)行成功&&那么執(zhí)行這個命令”,如 command1 & command2

????grep -q:可用于if邏輯判斷

????-q 參數(shù),本意是 Quiet; do not write anything to standard output. Exit immediately with zero status if any match is found, even if an error was detected. 中文意思為,安靜模式,不打印任何標(biāo)準(zhǔn)輸出。如果有匹配的內(nèi)容則立即返回狀態(tài)值0

????cat a.txt

????a

????b

????hello

? ?if grep -q hello a.txt; then

?????echo yes

? ? else

????? echo no?

?????fi

????輸出結(jié)果:yes

13. 查看文件屬性

????stat fileName

????touch -t 201809211805.15 fileName:修改文件的“最近修改時間”,若沒有此文件則創(chuàng)建一個

? ??touch -r file1 file2: 將file2的修改時間設(shè)置為與file1相同,file1必須存在,不然會報錯;若file2不存在,則會創(chuàng)? ?建一個

14. 普通用戶修改root密碼

????sudo passwd root

15. 查看版本號

????cat /etc/issue

16. 正確輸出和錯誤輸出

????運行一個命令或者腳本時,一般都會有輸出,1代表正確輸出,2代表錯誤輸出,如:

????sh a.sh 1>ok.txt 2>no.txt

????表示運行腳本a.sh,正確輸出寫入到ok.txt文件中,錯誤寫入到no.txt文件中。

17. 定時任務(wù)

????crontab -l: ?查看本機的定時任務(wù)

????crontab -e: 編輯定時任務(wù)。

????在ubuntu中,定時任務(wù)的編輯有三種編輯器可供選擇,select-editor可進行選擇,第三項是vi編輯器項(也是目前我的虛擬機定時任務(wù)編輯器)。

????在ubuntu中,可用命令service cron status查看定時任務(wù)是否在運行(看Active項),用service cron start和service cron stop和service cron restart去開 ? ?啟,關(guān)閉,重啟定時任務(wù)。

18. history n

????n為數(shù)字,命令表示查看n條命令的歷史記錄

19. 判空

????a=$1

? if [ "$a" = "" ]; then

? ? return

? else?

? ? echo not null

? ? echo a: $a

? fi

?注意:

?????ubuntu中判空用"="號

?????AIX中判空用"="號或者"=="號都可以

?????總之,ubuntu和AIX系統(tǒng)語法有諸多差別,寫命令時需要注意區(qū)分。

20. AIX專用命令

? ? ?物理內(nèi)存占用情況

? ? ?svmon | sed -n '2p' | awk '{print "MEMORY used percent is "$3/$2*100"%"}'

? ? ?換頁paging space占用情況

? ? ?svmon | sed -n '3p' | awk '{print "PAGING SPACE used percent is "$4/$3*100"%"}'

21. 雙引號問題

? ? 變量不加雙引號的話就將值內(nèi)多個空格省略為1個空格

? ??如:str="12 43";echo $str結(jié)果為12 43

? ? 再:str="12 43";echo "$str"結(jié)果為12 43

22. 關(guān)閉占用某端口的進程

?? ?A. lsof -i :端口號

? ? B. kill -9 進程號

? ? ? 注意:請注意A中的空格,-i后面有空格,冒號后面無空格,A的執(zhí)行結(jié)果會有一個進程號。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容