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

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

日期:2017/2/28 10:04:55   编辑:Linux命令
Linux命令 由弦黃?A href="http://tech.ccidnet.com/pub/article/c1060_a111265_p1.html">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 'Subject|mailto' *

查找文件

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 系統命令的一個類似的說明。

關於作者:

Sheryl Calish [[email protected]] 是 Blue Heron Consulting 的一位專門研究 Linux 的 Oracle 開發人員。她還是 Central Florida Oracle Users Group 的基金主席和 IOUG Linux SIG 的銷售主席。


Copyright © Linux教程網 All Rights Reserved