你不知道的shell用法和腳本,簡單&強大

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

在閱讀如下部分前, 強烈建議讀者打開一個 shell 實驗,這些都不是 shell 教科書裏的大路貨哦:)
程序員


1. sudo !!shell

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

場景舉例:好比Ubuntu裏用apt-get安裝軟件包的時候是須要root身份的,咱們常常會忘記在apt-get前加sudo。 每次不得不加上sudo再從新鍵入這行命令, 這時能夠很方便的用sudo !!完事。bash


2. cd –服務器

回到上一次的目錄 。網絡

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


3. ^old^newdom

替換前一條命令裏的部分字符串。ssh

場 景: 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服務器的實現了。


最後來個複雜的,這行腳本能輸出你最經常使用的十條命令, 由此甚至能夠洞察你是一個什麼類型的程序員。

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!」


PS:歡迎追加

相關文章
相關標籤/搜索