Bash Linux 重定向运算符Bash Linux 重定向运算符Bash Linux 重定向运算符Bash Linux 重定向运算符
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

Bash Linux 重定向运算符

在 Linux 上,终端就是一切,它是我们传递命令的地方,也是我们传递脚本的地方。因此,最重要的脚本语言之一是bash。 Bash 脚本用于自动化 Linux 中的无聊任务。为了自动执行任务,命令被写入脚本内并给出扩展名 .sh。作为命令的一部分,还使用某些运算符。这些运算符是 bash 所独有的,并且每个运算符都有其特定的含义。在本教程中,我们将回顾 bash 脚本编写过程中遇到的重定向运算符及其具体含义。

重定向运算符:<

符号 < 用于输入重定向。例如,文件可以用作输入。然而,在这种情况下,输入重定向是只读重定向。

例如:

#! /bin/bash
cat < file.txt

在本例中,file.txt 被作为输入,然后 cat 命令将其输出。

重定向运算符:<<

重定向运算符 << 也称为此处文档。此处文档允许将一行输入放入多个命令中。

例如:

#! /bin/bash

cat << EOF
first line
second line
EOF


wc << EOF
first line
second line
EOF

好的,所以在这里,我们有两行输入。在第一部分中,我们将输入发送给猫,猫将其全部输出。在第二部分中,我们使用 wc 命令计算行数、单词数和字符数。无论哪种方式,重点是我们可以发送多行而不是单行作为输入。

重定向运算符:>

该符号称为文件重定向运算符,通常用于通过覆盖将命令/文件的内容重定向到另一个命令/文件。提个醒;它会覆盖它——以粗体和斜体显示!

例如:

#! /bin/bash
echo “hello world’ > file.txt

这里,>符号类似于1>。之所以如此,是因为 1 是标准输出的文件描述符。请注意,文件描述符如下:

0 -- Standard input, stdin
1 -- Standard output, stdout
2 -- Standard error, stderr

在前面的场景中,单个向前箭头相当于 1>。但是,我们也可以编写 2> 来转发标准错误。

例如:

#! /bin/bash
mcat file.txt 2> file2.txt

这里,2>表示生成的错误将转储到file2.txt中。

重定向运算符:>>

符号>>用于追加而不是替换!文件重定向运算符 > 会替换或覆盖所有内容,而 >> 用于追加。后者会将指定的内容添加到文件末尾。

例如:

#! /bin/bash
echo “this is the second line” >> file.txt
echo “this is the third line” >> file.txt

后者会将这两行附加到名为 file.txt 的文件中。 file.txt 的结果将如下所示:

重定向运算符: |

重定向运算符 |用于发送第一个命令的输出作为第二个命令的输入。例如,如果我传递一个初始命令,然后使用 | “管道”该命令生成的输出。运算符输入第二个命令,它将作为输入被接收,然后进行处理。

例如:

#! /bin/bash
ls-la | sed ‘s/bash/redirection_operator/’

这里,sed 和 s 命令用于将一个名称替换为另一个名称。因此,sed ‘s/bash/redirection_operator/’ 用于将 bash 替换为 redirection_operator。

那么我们在这里做什么?好吧,“ls -la”将详细列出所有内容,管道操作员将把它发送到第二个命令。第二个命令(sed‘s/bash/redirection_operator/’)将用单词redirection_operator替换单词bash,并将其打印到屏幕上。

重定向运算符:>&

该符号重定向标准输出和标准错误。

例如;

bash -c ‘ls -la >& file.txt’

在这种情况下,>& 符号将标准输出和标准错误重定向到名为 file.txt 的文件。因此,生成的输出和生成的错误都放置在同一个文件中。

现在假设我们这样写:

bash -c ‘mls -la >& file.txt’

在这种情况下,应该会生成错误,因为没有 mls 命令。这里,错误也会被发送到file.txt文档中。

重定向运算符:>|

有时,由于文件限制,您无法覆盖文件。现在假设您有一个名为 file.txt 的文件,该文件无法被覆盖。

因此以下命令实际上不会覆盖文件:

#! /bin/bash

echo “ehlo” > /tmp/file.txt

我们使用运算符>|在这种情况下强制覆盖文件。

在这里,我们将编写以下内容来强制覆盖文件:

#! /bin/bash

echo “ehlo” >| /tmp/file.txt

重定向运算符:&>>

运算符 &>> 将把标准输出和标准错误附加到指定的文件中。

前任 :

#! /bin/bash

lsl  &>> file.txt

在此示例中,我们有一个名为 file.txt 的文件,其中包含两行。当我们执行名为 bash.sh 的脚本时,其中包含不存在的命令,这应该会抛出错误。该错误被捕获并附加到 file.txt 中。如果该命令不包含任何错误,它也会捕获该错误并将其发送以将其附加到名为 file.txt 的文件中。

重定向运算符:<<-

重定向运算符 <<- 将从多行输入中删除所有制表符。

例如:

#! /bin/bash

more <<- EOF
    first line
    second line
EOF

这里的两行输入(第一行,第二行)之前有制表符。但生成输出时,选项卡将被忽略。

重定向运算符:<>

重定向运算符 <> 打开一个文件以进行读取和写入。

Bash 脚本是一种可用于自动执行任务的关键脚本语言。在 bash 脚本编写过程中,我们会遇到很多代码,但我们也会遇到 bash 特有的重定向运算符。这些操作符在 bash 脚本中都有特定的作用,而且它们并不总是显而易见的。在本教程中,我们回顾了编写 bash 脚本时使用的一些重定向运算符。显然,有很多重定向运算符;然而,有些问题经常遇到,因此在编写 bash 脚本时可能有必要了解它们。因此,继续前进,从这里开始就不用担心重定向操作员了!

快乐编码!

©2015-2025 艾丽卡 support@alaica.com