轉自:http://cloud.csdn.net/a/20120321/313378.html
下面我將和大家分享一些學習Linux命令列的技巧,希望能對大家有所助益。如果在本文中遇到不太熟悉的命令,可以在終端中鍵入以下命令尋求協助。
Man <command>
Where there's a shell, there's a way.
Linux入門必備 瞭解bash:沒有必要鑽研長篇累牘的bash使用手冊,通過man bash學習即可。 瞭解vi:你在工作中也許會使用Emacs或Eclipse,但vi不可替代。 瞭解ssh:學習無密碼驗證的基礎知識。 bash作業管理基礎知識:如使用&、Ctrl-C、fg、bg、Ctrl-Z、jobs和kill等。 檔案管理命令:如永久連結和軟連結,許可權等。 網路管理命令:如ifconfig等。 如何使用Regex,如何使用grep、sed等。 學習使用apt-get和yum管理軟體包。
提升日常工作效率 在bash中,可以使用Ctrl+R命令搜尋命令列記錄。 在bash中,可以使用Ctrl+W刪除最後一個單詞,使用Ctrl+U刪除整行。 使用cd -命令返回之前的工作目錄,使用cd ..命令返回上層目錄。 學習如何使用xargs:
$ find . -name *.py | xargs grep some_function $ cat hosts | xargs -I{} ssh root@{} hostnameX 使用pstree -p命令查看進程樹。 瞭解不同的訊號。例如,使用kill -STOP [PID]終止進程。詳細的訊號列表可以在man 7 signal中查看。 如果你想讓進程永遠在後台運行,可以使用nohup和disown命令。 使用netstat -lntp命令查看偵聽進程,並參考lsof命令。 在bash指令碼中使用subshells對命令進行分組:
#do something in current dir (cd /some/other/dir; other-command) #continue in original dir 字串修剪(Trimming Strings):${var%suffix}和${var#prefix}。例如if var=foo.pdf then echo ${var%.pdf}.txt prints "foo.txt"。 命令的輸出可以當做檔案使用。例如,比較本地和遠端/etc/hosts檔案:
diff /etc/hosts <(ssh somehost cat /etc/hosts) 瞭解bash中的“here documents”。 瞭解標準輸出和標準錯誤重新導向。 瞭解ASCII代碼錶。可以在終端中運行man ascii命令作為參考。 當通過ssh遠程工作時,可以使用screen 或 dtach儲存回話。 對Web開發人員而言,curl、wget等命令非常實用。 將HTML頁面轉化文字檔:
lynx -dump -stdin 如果要掌握XML,xmlstarlet命令是非常好的工具。 瞭解ssh連接埠映射。 使用Alt+shift+3快速鍵可以在行前添加註釋“#”。
資料處理 瞭解sort和uniq命令。 瞭解cut、paste和join命令。 瞭解如何對文字檔做交集、並集和差集:
cat a b | sort | uniq > c # c is a union b cat a b | sort | uniq -d > c # c is a intersect b cat a b b | sort | uniq -u > c # c is set difference a – b 對文字檔的第二列做摘要,下面的代碼要比同樣的Python代碼更精鍊、快速(3倍):
awk '{ x += $2 } END { print x }' 瞭解字串和grep命令。 檔案分割:瞭解split(按大小分割)和csplit(按匹配分割)命令。
系統診斷 使用iostat、netstat、top和dstat命令查看磁碟、處理器和網路的狀態。