shell 學習筆記(16)
阿新 • • 發佈:2022-04-28
轉載請註明出處: https://cloud.tencent.com/developer/user/1177713/activities
注:以前的1-15連載部分放在百度空間,
目前百度空間已不支援部落格搜尋,
但你可以使用google搜尋關鍵詞:
leejun_2005 shell學習筆記
1501.巧用bash的{}擴充套件備份目錄:
cp file.txt{,.bak}
1502.利用at執行一次性命令:
echo "ls -l" | at midnight #Execute a command at a given time
1503.kill -1 或者 kill -HUP 一般用來重新讀取配置檔案:(一般程式自己實現的)
HUP 其實就是給個訊號,你的程式可以根據這個訊號做一些事情,比如reload程序,或者是rotota日誌。例如 squid、Nginx、xinetd。
kill就是傳送一個訊號,而各種訊號一般都有預設的意義,但是各個軟體不一樣。比如ping在遇到3訊號的時候就會輸出統計。
nohup,就是對應的這個訊號 HUP。
1504.Read-only file system:檔案系統只讀
如果/data在/分割槽上:mount -o remount /data,其實/分割槽也可以remount的,只是不能umount
原因:磁碟io很高、硬碟掛掉、宕機等
mount -o remount,rw /data rw好像是預設值,既然有nodiratimne,加上noatime吧
1505.巧用正則的匹配位置 RSTART 和匹配長度 RLENGTH 尋找子串:
$ echo 'QWADGDABCfooDGJDJLGJWLJABCbarGLDABCwhyJGKABCkkJGJKDJGLABCtnndJDK'|、
awk '{while(match($0,/ABC/)){print substr($0,RSTART);$0=substr($0,RSTART+RLENGTH)}}'
1506.多次呼叫 -k 實現多次排序:
sort -t' ' -k3.3 -k1,1 #sort -k中的.表示按指定域中的第幾個字元來排序
1507.重啟網路用sudo /etc/init.d/networking restart,或者ifdown eth0 ifup eth0,注意要一起執行,否則你網路就斷了。
1508.二進位制檔案編輯不要用vi,你儲存後會在最後加換行,會破壞這個檔案。vi會檢查檔案,如果沒換行,會加上,二進位制檔案最後一般都沒換行的。
你複製個/bin/ls,用vi開啟,什麼都不做,儲存,wc -c看下,多一個字元。
1509.EOF 不是字元,EOF是個訊號,告訴程式沒了。
1510.保留相鄰重複行:
echo "aaa
1111
1111
1111
aaa"|awk 'a[$1]&&NR!=a[$1]+1{next}{a[$1]=NR}1'
1511.man cat出現 ^H 字元:
man cat |col -b > cat-help :^H是高亮顯示用的
echo 'a^Ha'|less,a就高亮了,^H是按ctrl+v,再ctrl+h輸入的
BTW:為何退格出現 ^H :打字機時代,要加亮一個字元,操作方法是敲一次字元,回退,然後再重複敲一遍。(見維基百科)
1512.IFS設為換行符:IFS=$'n'
1513.利用 find -prune 限制查詢多個目錄:
find / ( -path /root/decli -o -path /data/robinechen -o -path /data/yunwei ) -prune -o -type f -name "*vim*" -print
1514.巧用邏輯操作列印 rm 的報錯狀態:
rm a || echo error &
rm a & ; [ $? -ne 0 ] && echo error # 實際上即使 rm a 出錯,也不能打印出 error
1515.巧設RS合併行:
echo "1111
33n
5555" | awk -v RS='\\nn' -v ORS="" 1
awk -v RS='