在本文中,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。

为了更容易识别这些特殊文件,它们各自被分配一个文件描述符,这是一个抽象表示,用于访问它们。理解的关键是,这些文件,就像其他文件一样,可以被重定向。这意味着您可以捕获文件或脚本的输出,并将其发送为另一个文件、命令或脚本的输入。这将允许您将命令的输出存储在磁盘上,以供以后处理或分析。
要重定向标准输入(fd 0)、标准输出(fd 1)或标准错误(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:将标准输出和标准错误都重定向到/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/