歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> Unix資訊 >> 深度解析Unix操作系統文本操作

深度解析Unix操作系統文本操作

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

最初Unix操作系統剛出來的時候,人們不大熟悉這種新的操作系統,但他們很快找到了適當的切入點,大學中的研究人員需要一種像樣的文本處理環境。因為在那個時候,計算機的處理速度和內存容量有限,所以程序必須很小,並且相對比較簡單。

這樣就產生了Unix操作系統中著名的設計思想:“一組工具協同工作,以便完成一項任務”。通過 Unix操作系統管道將幾種很小的、但功能強大的文本處理工具組合在一起,可以對文本進行各種方式的轉換和操作。

對文本進行各種操作

在開始使用Unix操作系統 的各種文本實用程序操作文本之前,需要了解如何獲得文本。並且在進行這項工作之前,需要了解Unix操作系統 的標准輸入/輸出 (I/O) 流。標准 C 庫(因而,每個Unix操作系統 程序)定義了三種標准流:輸入、輸出和錯誤。有時將它們稱為 stdin、stdout 和 stderr,這是在所有 C 程序中用來表示它們的全局變量。

當您在 Shell 中使用 > 操作符將程序輸出重定向到文件時,就可以將它的標准輸出 (stdout) 流發送到這個文件。例如:ls > this-dir 將 ls 的輸出發送到一個名為 this-dir 的文件。

當您在 Shell 中使用 < 操作符將程序輸入重定向到文件時,就可以將該文件中的內容輸入到該程序的標准輸入 (stdin) 流。例如:sort < this-dir 可以從名為 this-dir 的文件中讀取內容,並將其作為 sort 命令的輸入。

通過 Unix操作系統管道將幾種很小的、但功能強大的文本處理工具組合在一起,可以對文本進行各種方式的轉換和操作。另一個常用於重定向標准流的操作符是“|”(管道)操作符,它可以將左側程序的標准輸出流連接到右側程序的標准輸入流。例如:ls | sort 和前面的兩個示例完成相同的任務,並且無需臨時文件,ls 的輸出直接進入 sort 命令。

如果您仔細觀察,那麼可能會發現,前面的這些示例中並沒有出現標准錯誤 (stderr) 流。與標准輸出流一樣,可以對 stderr 進行重定向或使用管道進行傳輸,但是您需要告訴 Shell 您希望處理 stderr 而不是 stdout。

可以使用 2> 操作符將標准錯誤流重定向到文件。在處理生成有用的錯誤輸出的命令時,您經常會看到這個操作符,比如用於編譯Unix操作系統 程序的 make 工具:make 2> build-errors。

這個命令運行了 make,並將任何錯誤信息發送到 build-errors 文件。與之類似,您可以使用 2| 將 stderr 通過管道傳遞到另一個程序。

在熟悉了這些之後,我們就應該理解通過 Unix操作系統管道將幾種很小的、但功能強大的文本處理工具組合在一起,可以對文本進行各種方式的轉換和操作的意思了。

Copyright © Linux教程網 All Rights Reserved