你不知道的shell用法和指令碼,簡單&強大

五柳-先生發表於2015-11-25

5. ctrl-x e

快速啟動你的預設編輯器(由變數$EDITOR設定)。


6. netstat –tlnp

列出本機程式監聽的埠號。


7. tail -f /path/to/file.log | sed '/^Finished: SUCCESS$/ q'

當file.log裡出現Finished: SUCCESS時候就退出tail, 這個命令用於實時監控並過濾log是否出現了某條記錄。


8. ssh user@server bash < /path/to/local/script.sh

在遠端機器上執行一段指令碼。 這條命令最大的好處就是不用把指令碼拷到遠端機器上。


9. screen -d -m -S some_name ping my_router

後臺執行一段不終止的程式, 並可以隨時檢視它的狀態。-d -m引數啟動 “ 分離” 模式, -S指定了一個session的標識。 可以通過-R命令來重新“ 掛載”一個標識的session。 更多細節請參考screen用法 man screen。


10. wget --random-wait -r -p -e robots=off -U mozilla http://www.example.com

下載整個www.example.com網站。


11. curl ifconfig.me

當你的機器在內網的時候, 可以通過這個命令檢視外網的IP。


12. lsof –i

實時檢視本機網路服務的活動狀態。


13. python -m SimpleHTTPServer

一句話實現一個HTTP server, 把當前目錄設為HTTP服務目錄, 可以通過http://localhost:8000訪問 這也許是這個星球上最簡單的HTTP伺服器的實現了。


最後來個複雜的,這行指令碼能輸出你最常用的十條命令, 由此甚至可以洞察你是一個什麼型別的程式設計師。

1
2
3
history awk '{CMD[$2]++;count++;} END { for (a in CMD )print
CMD[a] " " CMD[a]/count*100 "% " a }' | grep -v "./" | column -c3 -s
" " -t | sort -nr | nl head -n10


看不懂行程式碼? 沒關係, 系統的學習一下 *nix shell 指令碼吧,力薦《Linux命令列與Shell指令碼程式設計大全》 。


最後還是那句 Shell 的至理名言:“ Where there is a shell, there is a way!”


本文摘自:碼農增刊 Linus與Linux 

在閱讀以下部分前, 強烈建議讀者開啟一個 shell 實驗,這些都不是 shell 教科書裡的大路貨哦:)


1. sudo !!

以root的身份執行上一條命令 。

場景舉例:比如Ubuntu裡用apt-get安裝軟體包的時候是需要root身份的,我們經常會忘記在apt-get前加sudo。 每次不得不加上sudo再重新鍵入這行命令, 這時可以很方便的用sudo !!完事。


2. cd –

回到上一次的目錄 。

場景舉例: 當前目錄為/home/a, 用cd ../b切換到/home/b。 這時可以通過反覆執行cd –命令在/home/a和/home/b之間來回方便的切換。


3. ^old^new

替換前一條命令裡的部分字串。

場 景: echo "wanderful", 其實是想輸 出echo "wonderful"。 只需要^a^o就行了,對很長的命令的錯誤拼寫有很大的幫助。


4. man ascii

顯示ascii碼錶。

場景: 忘記ascii碼錶的時候還需要google麼?尤其在天朝網路如此“ 順暢”的情況下, 就更麻煩在GWF多應用一次規則了, 直接用本地的man ascii吧。


5. ctrl-x e

快速啟動你的預設編輯器(由變數$EDITOR設定)。


6. netstat –tlnp

列出本機程式監聽的埠號。


7. tail -f /path/to/file.log | sed '/^Finished: SUCCESS$/ q'

當file.log裡出現Finished: SUCCESS時候就退出tail, 這個命令用於實時監控並過濾log是否出現了某條記錄。


8. ssh user@server bash < /path/to/local/script.sh

在遠端機器上執行一段指令碼。 這條命令最大的好處就是不用把指令碼拷到遠端機器上。


9. screen -d -m -S some_name ping my_router

後臺執行一段不終止的程式, 並可以隨時檢視它的狀態。-d -m引數啟動 “ 分離” 模式, -S指定了一個session的標識。 可以通過-R命令來重新“ 掛載”一個標識的session。 更多細節請參考screen用法 man screen。


10. wget --random-wait -r -p -e robots=off -U mozilla http://www.example.com

下載整個www.example.com網站。


11. curl ifconfig.me

當你的機器在內網的時候, 可以通過這個命令檢視外網的IP。


12. lsof –i

實時檢視本機網路服務的活動狀態。


13. python -m SimpleHTTPServer

一句話實現一個HTTP server, 把當前目錄設為HTTP服務目錄, 可以通過http://localhost:8000訪問 這也許是這個星球上最簡單的HTTP伺服器的實現了。


最後來個複雜的,這行指令碼能輸出你最常用的十條命令, 由此甚至可以洞察你是一個什麼型別的程式設計師。

1
2
3
history awk '{CMD[$2]++;count++;} END { for (a in CMD )print
CMD[a] " " CMD[a]/count*100 "% " a }' | grep -v "./" | column -c3 -s
" " -t | sort -nr | nl head -n10


看不懂行程式碼? 沒關係, 系統的學習一下 *nix shell 指令碼吧,力薦《Linux命令列與Shell指令碼程式設計大全》 。


最後還是那句 Shell 的至理名言:“ Where there is a shell, there is a way!”

轉載: http://aiilive.blog.51cto.com/1925756/1686861

相關文章