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

建立、刪除、複製和移動檔案和目錄
檔案和目錄管理是每位系統管理員都應該具備的關鍵能力。這包括從頭開始建立/刪除文本檔案(每個程式配置的核心)和目錄(您將組織檔案和其他目錄的地方),以及查找現有檔案的類型。
touch 命令 不僅可用於建立空白檔案,還可用於更新現有檔案的訪問和修改時間。

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

和 rm [filename]
來刪除它。

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

在刪除目錄時,您需要確保在發出 rmdir [directory]
命令之前它們是空的,或使用更強大的(謹慎使用!) rm -rf [directory]
。這最後一個選項將強制遞歸刪除 [directory]
及其所有內容 – 因此請自行承擔風險。
輸入和輸出重定向和管道化
命令行環境提供了兩個非常有用的功能,允許將命令的輸入和輸出重定向到文件,並將一個命令的輸出發送到另一個命令,分別稱為重定向和管道。
要理解這兩個重要概念,我們必須首先了解三種最重要的I/O(輸入和輸出)字符流(或序列),實際上是特殊文件,在*nix中的意義。
- 標準輸入(又稱stdin)默認附加到鍵盤。換句話說,鍵盤是用於向命令行輸入命令的標準輸入設備。
- 標準輸出(又稱stdout)默認附加到屏幕,該設備“接收”命令的輸出並在屏幕上顯示它們。
- 標準錯誤(又稱stderr),是命令的狀態消息默認發送到的地方,也是屏幕。
在下面的示例中,ls /var
的輸出被發送到stdout(屏幕),以及ls /tecmint的結果。但在後一種情況下,顯示的是stderr。

為了更容易識別這些特殊檔案,每個檔案都被分配一個檔案描述符,這是一個抽象表示,用於訪問它們。理解的關鍵是,這些檔案,就像其他檔案一樣,可以被重新導向。這意味著您可以捕獲來自檔案或腳本的輸出,並將其作為輸入發送到另一個檔案、命令或腳本。這將允許您將命令的輸出存儲在磁盤上,例如,以供以後處理或分析。
要重新導向 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:將命令的輸出重新導向到檔案
有時您需要迭代一組檔案。為此,您可以首先將該列表保存到一個檔案中,然後逐行讀取該檔案。儘管您可以直接迭代 ls 的輸出,但此示例用於說明重新導向。
# ls -1 /var/mail > mail.txt

範例 2:將 stdout 和 stderr 都重新導向到 /dev/null
如果我们想要防止标准输出和错误输出都显示在屏幕上,我们可以将两个文件描述符重定向到/dev/null
。请注意,当为相同命令实施重定向时,输出会发生变化。
# ls /var /tecmint # ls /var/ /tecmint &> /dev/null

示例3:使用文件作为命令的输入
而cat命令的经典语法如下。
# cat [file(s)]
您也可以使用正确的重定向运算符将文件发送为输入。
# cat < mail.txt

示例4:将命令的输出作为另一个命令的输入发送
如果您有一个大型目录或进程列表,并希望能够一目了然地定位某个文件或进程,您将希望将列表传送到grep。
请注意,我们在以下示例中使用了两个管道。第一个管道查找所需的关键字,而第二个将从结果中排除实际的grep命令
。此示例列出了与apache用户关联的所有进程。
# ps -ef | grep apache | grep -v grep

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