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

为了更容易识别这些特殊文件,它们各自被分配一个文件描述符,这是一个抽象表示,用于访问它们。理解的关键是,这些文件,就像其他文件一样,可以被重定向。这意味着您可以捕获文件或脚本的输出,并将其发送为另一个文件、命令或脚本的输入。这将允许您将命令的输出存储在磁盘上,以供以后处理或分析。

要重定向标准输入(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. 重定向用于将命令的输出发送到文件,或将文件发送为命令的输入。
  2. 管道用于将命令的输出发送到另一个命令作为输入。

重定向和管道的示例

示例 1:将命令的输出重定向到文件

有时您需要迭代一个文件列表。为此,您可以首先将该列表保存到文件中,然后逐行读取该文件。虽然您可以直接迭代ls的输出,但此示例用于说明重定向。

# ls -1 /var/mail > mail.txt
Redirect output of command tot a file
示例 2:将标准输出和标准错误都重定向到/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/