1. 程式人生 > 其它 >shell 學習筆記(16)

shell 學習筆記(16)

轉載請註明出處: 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='