Unix 下要采用的20個好習慣為:
1) 在單個命令中創建目錄樹。
2) 更改路徑;不要移動存檔。
3) 將命令與控制操作符組合使用。
4) 謹慎引用變量。
5) 使用轉義序列來管理較長的輸入。
6) 在列表中對命令分組。
7) 在 find 之外使用 xargs 。
8) 了解何時 grep 應該執行計數——何時應該繞過。
9) 匹配輸出中的某些字段,而不只是對行進行匹配。
10) 停止對 cat 使用管道。
11) 使用文件名自動完成功能 (file name completion)。
12) 使用歷史擴展。
13) 重用以前的參數。
14) 使用 pushd
和 popd
管理目錄導航。
15) 查找大型文件。
16) 不使用編輯器創建臨時文件。
17) 使用 curl
命令行實用工具。
18) 最有效地利用正則表達式。
19) 確定當前用戶。
20) 使用 awk
處理數據。
1. 在單個命令中創建目錄樹
清單 1 演示了最常見的 UNIX 壞習慣之一:一次定義一個目錄樹。
清單 1. 壞習慣 1 的示例:單獨定義每個目錄樹
~ $ mkdir tmp
~ $ cd tmp
~/tmp $ mkdir a
~/tmp $ cd a
20. 使用 awk 處理數據
awk 命令似乎始終處在 Perl 的陰影下,但它對於簡單、基於命令行的數據處理來說是一個快速、實用的工具。清單 15 顯示了如何開始使用 awk 命令。若要獲取文件中每行文本的長度,請使用 length() 函數。若要查看字符串 ing 是否出現在文件文本中,請使用 index() 函數,該函數返回 ing 首次出現的位置,這樣您就可以使用它來進行進一步的字符串處理。若要 tokenize(也就是說,將一行拆分為單詞長度的片段)某個字符串,請使用 split() 函數。
清單 15. 基本 awk 處理
$ cat text
testing the awk command
$ awk '{ i = length($0); print i }' text
23
$ awk '{ i = index($0,”ing”); print i}' text
5
$ awk 'BEGIN { i = 1 } { n = split($0,a," "); while (i <= n) {print a[i]; i++;} }' text
testing
the
awk
command
打印文本文件中的指定字段是一項簡單的 awk 任務。在清單 16 中,sales 文件包含每個銷售人員的姓名,後跟每月銷售數字。您可以使用 awk 命令來快速獲得每個月的銷售總額。缺省情況下,awk 將每個以逗號分隔的值視為不同的字段。您使用 $n 操作符來訪問每個字段。
清單 16. 使用 awk 對數據進行匯總
$cat sales
Gene,12,23,7
Dawn,10,25,15
Renee,15,13,18
David,8,21,17
$ awk -F, '{print $1,$2+$3+$4}' sales
Gene 42
Dawn 50
Renee 46
David 46
成為命令行高手需要進行一些實踐。按照相同的方式處理問題很簡單,因為您已經習慣了。擴展您的命令行資源可以顯著提高您的工作效率,並促使您朝著 UNIX 命令行高手的方向前進!