RHCSA 系列:如何執行文件和目錄管理 – 第 2 部分

在這篇文章中,RHCSA Part 2:檔案和目錄管理,我們將回顧一些系統管理員日常任務中所需的基本技能。

RHCSA: Perform File and Directory Management – Part 2

建立、刪除、複製和移動檔案和目錄

檔案和目錄管理是每位系統管理員都應該具備的關鍵能力。這包括從頭開始建立/刪除文本檔案(每個程式配置的核心)和目錄(您將組織檔案和其他目錄的地方),以及查找現有檔案的類型。

touch 命令 不僅可用於建立空白檔案,還可用於更新現有檔案的訪問和修改時間。

touch command example

您可以使用 file [filename] 來確定檔案的類型(在啟動首選文本編輯器進行編輯之前,這將很有用)。

file command example

rm [filename] 來刪除它。

rm command example

至於目錄,您可以使用 mkdir [directory] 在現有路徑中創建目錄,或使用 mkdir -p [/full/path/to/directory] 創建完整路徑。

mkdir command example

在刪除目錄時,您需要確保在發出 rmdir [directory] 命令之前它們是空的,或使用更強大的(謹慎使用!) rm -rf [directory]。這最後一個選項將強制遞歸刪除 [directory] 及其所有內容 – 因此請自行承擔風險。

輸入和輸出重定向和管道化

命令行環境提供了兩個非常有用的功能,允許將命令的輸入輸出重定向到文件,並將一個命令的輸出發送到另一個命令,分別稱為重定向和管道。

要理解這兩個重要概念,我們必須首先了解三種最重要的I/O(輸入和輸出)字符流(或序列),實際上是特殊文件,在*nix中的意義。

  1. 標準輸入(又稱stdin)默認附加到鍵盤。換句話說,鍵盤是用於向命令行輸入命令的標準輸入設備。
  2. 標準輸出(又稱stdout)默認附加到屏幕,該設備“接收”命令的輸出並在屏幕上顯示它們。
  3. 標準錯誤(又稱stderr),是命令的狀態消息默認發送到的地方,也是屏幕。

在下面的示例中,ls /var的輸出被發送到stdout(屏幕),以及ls /tecmint的結果。但在後一種情況下,顯示的是stderr

Input and Output Example

為了更容易識別這些特殊檔案,每個檔案都被分配一個檔案描述符,這是一個抽象表示,用於訪問它們。理解的關鍵是,這些檔案,就像其他檔案一樣,可以被重新導向。這意味著您可以捕獲來自檔案或腳本的輸出,並將其作為輸入發送到另一個檔案、命令或腳本。這將允許您將命令的輸出存儲在磁盤上,例如,以供以後處理或分析。

要重新導向 stdin(fd 0)、stdout(fd 1)或 stderr(fd 2),可以使用以下運算子。

Redirection Operator Effect
> Redirects standard output to a file containing standard output. If the destination file exists, it will be overwritten.
>> Appends standard output to a file.
2> Redirects standard error to a file containing standard output. If the destination file exists, it will be overwritten.
2>> Appends standard error to the existing file.
&> Redirects both standard output and standard error to a file; if the specified file exists, it will be overwritten.
< Uses the specified file as standard input.
<> The specified file is used for both standard input and standard output.

與重新導向相反,通過在命令之後以及另一個命令之前添加一個垂直條 (|) 來執行管道。

記住:

  1. 重新導向 用於將命令的輸出發送到檔案,或將檔案作為命令的輸入發送。
  2. 管道 用於將命令的輸出發送到另一個命令作為輸入。

重新導向和管道的示例

範例 1:將命令的輸出重新導向到檔案

有時您需要迭代一組檔案。為此,您可以首先將該列表保存到一個檔案中,然後逐行讀取該檔案。儘管您可以直接迭代 ls 的輸出,但此示例用於說明重新導向。

# ls -1 /var/mail > mail.txt
Redirect output of command tot a file
範例 2:將 stdout 和 stderr 都重新導向到 /dev/null

如果我们想要防止标准输出和错误输出都显示在屏幕上,我们可以将两个文件描述符重定向到/dev/null。请注意,当为相同命令实施重定向时,输出会发生变化。

# ls /var /tecmint
# ls /var/ /tecmint &> /dev/null
Redirecting stdout and stderr ouput to /dev/null
示例3:使用文件作为命令的输入

cat命令的经典语法如下。

# cat [file(s)]

您也可以使用正确的重定向运算符将文件发送为输入。

# cat < mail.txt
cat command example
示例4:将命令的输出作为另一个命令的输入发送

如果您有一个大型目录或进程列表,并希望能够一目了然地定位某个文件或进程,您将希望将列表传送到grep。

请注意,我们在以下示例中使用了两个管道。第一个管道查找所需的关键字,而第二个将从结果中排除实际的grep命令。此示例列出了与apache用户关联的所有进程。

# ps -ef | grep apache | grep -v grep
Send output of command as input to another

Source:
https://www.tecmint.com/file-and-directory-management-in-linux/