歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> Unix資訊 >> 正確使用Unix操作系統

正確使用Unix操作系統

日期:2017/3/6 11:42:53   编辑:Unix資訊

我們在文章中,要介紹一些關於使用Unix操作系統中,需要養成的好習慣,這些習慣對我們使用Unix操作系統很有幫助。希望大家能夠好好的掌握。主要是關於匹配輸出中的某些字段,而不只是對行進行匹配,舉出了好習慣和壞習慣,希望給大家一些借鑒。

Unix操作系統中匹配輸出中的某些字段,而不只是對行進行匹配

當您只希望匹配輸出行中特定字段 中的模式時,諸如 awk 等工具要優於 grep。下面經過簡化的示例演示了如何僅列出 12 月修改過的文件。

壞習慣 2 的示例:Unix操作系統使用 grep 來查找特定字段中的模式

~/tmp $ ls -l /tmp/a/b/c | grep Dec
-rw-r--r-- 7 joe joe 12043 Jan 27 20:36 December_Report.pdf
-rw-r--r-- 1 root root 238 Dec 03 08:19 README
-rw-r--r-- 3 joe joe 5096 Dec 14 14:26 archive.tar
~/tmp $

在此示例中,grep 對行進行篩選,並輸出其修改日期和名稱中帶 Dec 的所有文件。因此,諸如 December_Report.pdf 等文件是匹配的,即使它自從一月份以來還未修改過。這可能不是您希望的結果。為了匹配特定字段中的模式,最好使用 awk,其中的一個關系運算符對確切的字段進行匹配,如以下示例所示:

好習慣 1 的示例:使用 awk 來查找特定字段中的模式

  1. ~/tmp $ ls -l | awk '$6 == "Dec"'
  2. -rw-r--r-- 3 joe joe 5096 Dec 14 14:26 archive.tar
  3. -rw-r--r-- 1 root root 238 Dec 03 08:19 README
  4. ~/tmp $

Unix操作系統停止對 cat 使用管道

grep 的一個常見的基本用法錯誤是通過管道將 cat 的輸出發送到 grep 以搜索單個文件的內容。這絕對是不必要的,純粹是浪費時間,因為諸如 grep 這樣的工具接受文件名作為參數。您根本不需要在這種情況下使用 cat,如以下示例所示:

好習慣和壞習慣 1 的示例:Unix操作系統使用帶和不帶 cat 的 grep

  1. ~ $ time cat tmp/a/longfile.txt | grep and
  2. 2811
  3. real 0m0.015s
  4. user 0m0.003s
  5. sys 0m0.013s
  6. ~ $ time grep and tmp/a/longfile.txt
  7. 2811
  8. real 0m0.010s
  9. user 0m0.006s
  10. sys 0m0.004s
  11. ~ $

此錯誤存在於許多工具中。由於大多數工具都接受使用連字符 (-) 的標准輸入作為一個參數,因此即使使用 cat 來分散 stdin 中的多個文件,參數也通常是無效的。僅當您使用帶多個篩選選項之一的 cat 時,才真正有必要在管道前首先執行連接。

在Unix操作系統中我們需要養成很多好的習慣,希望大家能夠養成以上的好習慣,改掉自己的壞習慣。

Copyright © Linux教程網 All Rights Reserved