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é)果會有一個進程號。