歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> Linux文件命令精通指南(三)

Linux文件命令精通指南(三)

日期:2017/2/27 9:48:18   编辑:更多Linux
  查看和查找文件   文件過濾器   用來讀取文件內容和在文件內容上執行操作的命令有時被稱為 1y濾器。sed 和 awk 命令是兩個濾波器的例子,因為在以前的 OTN 文章中有它們詳細的討論,在這裡將略過。     諸如 cat、 more 和 less 之類的命令讓您能夠從命令行查看一個文本文件的內容,而無需調用編輯器。Cat 是 "concatenate" 的縮寫,它將默認地在標准輸出(顯示屏)上顯示文件內容。和 cat 一起提供的最有趣的選項之一是 -n 選項,它用編號的輸出行來顯示文件內容。     $ cat -n test.out  1 This is a test.     因為 cat 一次性輸出文件中的所有行,所以您可能更喜歡用 more 和 less,因為它們都一次輸出一屏的文件內容。Less 是 more 的一個增強的版本,它允許用來自 vi 文本編輯器的關鍵命令來增強文件查看。例如,d 向前翻滾、b 向後翻滾 N 行(如果 N 是在 d 或 b 之前指定的)。為 N 輸入的值成為隨後的 d 命令的默認值。man 頁面實用工具使用 less 來顯示使用說明的內容。     重定向和管道   重定向允許將命令輸出重定向到文件中,而不是標准輸出,或者類似地,也可重定向輸入。重定向的標准符號 > 創建一個新的文件。>> 符號將輸出添加到一個現有的文件中:     $ more test2.out  Another test.   $ cat test.out >> test2.out  $ cat test2.out     Another test.  This is a test.     到文件的標准輸入可以用 < 符號來重定向:     $ cat < test2.out     錯誤消息用 2> 和 2>> 來重定向和添加,格式如下:     $ command 2> name_of_error_file     要避免無意地覆蓋一個現有的文件,使用 BASH 內置的命令集:     $ set -o noclobber     可以在命令和輸出文件之間用 >! 符號來重載這個特性。要關閉這個特性,用 +o 代替 -o。     重定向在一個命令和文件之間、或文件和文件之間工作。重定向語句的一項必須是一個文件。     管道使用 符號,並且在命令之間工作。例如,您可以用以下方式將一個命令的輸出直接發送到打印機上:     $ ls -l * lpr     可以用以下方式快速地找到歷史列表中的一個命令:     $ history grep cat     更多的濾波器   Grep、fgrep 和 egrep 都顯示匹配一種模式的行。所有這三個命令都在文件中搜索指定的模式,如果您想不起來一個所需文件的名稱,這將非常有用。基本格式是:     grep [options] PATTERN [FILE...]     $ grep -r 'Subject' nsmail     CTRL-Z 將終止上述或其它任何命令。     grep 的最有用的選項可能是 -s。如果您以除根用戶之外的任何身份搜索系統文件,那麼對於每一個您沒有訪問權限的文件,都將產生錯誤消息。這個命令禁止那些消息。     Fgrep(也以 grep -F 調用)只查找固定的字符串,而不是 grep 接收的正則表達式。而 egrep 接收包含更大范圍的特殊字符(如 “”,它指示條件 OR 運算符)的模式。     $ egrep 'Subjectmailto' *     查找文件  find 命令的 GNU 版本非常強大、靈活並且比 UNIX 系統上存在的經典版本更具包容性。它對於涉及到目錄結構的任務非常有用,包括在文件上查找和執行命令。find 命令的基本格式是:     $ find startDirectory options matchcriteria [actionoptions]     如果您知道文件的名稱、或者甚至名稱的一部分,但不知道它所處的目錄,您可以這麼做:     $ find .-name 'test*'  ./test  ./jdevhome/mywork/EmpWS/EmpBC4J/test     與經典的 UNIX 系統不同,在 Linux 中不需要在末尾添加 -print 操作,因為如果沒有指定其它的操作選項,就將假定執行這個操作。在目錄起始位置上的一個點 ( . ) 將使 find 在您的工作目錄中開始搜索。兩個點, ..,在父目錄中開始搜索。您可以在任意目錄下開始搜索。     注意,您可以使用通配符作為搜索准則的一部分(只要用單引號將整個項目括起來)。     $ find .-name 'test*' -print  ./test.out  ./test2.out     顯示擁有 .out 擴展名的一系列文件:     $ find /home -name '*.out'     不過記住,除非您是作為超級用戶運行這個命令,否則您將可能得到許多的 "Permission denied" 錯誤消息。     最強大的搜索工具之一是和 grep 一起使用的 -exec 操作:     $ find .-name '*.Html' -exec grep 'mailto:[email protected]' {} \;     這裡,我們讓 find 命令在當前目錄中開始執行, .,查找一個 html 文件,*.html,並在當前文件上執行 (-exec) grep 命令,{}。當使用 -exec 操作時,需要一個分號 ;,這是用來在使用 find 命令時執行其它一些操作。需要反斜線 \ 和引號來確保這些項目通過 BASH,以使它們由命令而不是 shell 來進行解釋。     立即掌握 Linux 文件命令   在 Linux 中提供了許多有用的命令和利用它們的強大的方法,在此無法一一說明。此外,完成許多任務通常都存在多種方法。     我們已經看到了一些最常用和最有啟發意義的 Linux 文件命令。掌握這些基礎但卻關鍵的工具將使您的 Linux 學習走上快車道。利用您手頭上的 man 頁面,和試驗的積極性,您現在擁有了足夠的信息來開始探索 Linux 文件操作的力量。     在我的下一篇文章中,我將提供 Linux 系統命令的一個類似的說明。




Copyright © Linux教程網 All Rights Reserved