liujie
liujie
Published on 2024-01-10 / 32 Visits
0
0

Shell 中的 : > , >> , < , <<,<<< ,1>,2>,&>,|

Unix和Unix-like系统的Shell 中的 : > , >> , < , <<,<<< ,1>,2>,&>,|

在Unix和Unix-like系统的Shell中,常用的输出重定向操作包括:

  1. >1> - 标准输出重定向:

    • 用于将命令的标准输出(STDOUT)重定向到一个文件中,而不是显示在终端上。

    • 例如:ls > files.txt 会将ls命令的输出保存到files.txt文件中。

  2. 2> - 标准错误重定向:

    • 用于将命令的标准错误(STDERR)重定向到一个文件中。

    • 例如:ls non_existent_directory 2> error.txt 会将错误消息保存到error.txt文件中。

  3. &> - 标准输出和标准错误同时重定向:

    • 用于将命令的标准输出和标准错误都重定向到同一个文件中。

    • 例如:ls > all_output.txt 2>&1ls &> all_output.txt 会将所有输出都保存到all_output.txt文件中。

  4. >> - 追加到文件:

    • 用于将输出追加到现有文件的末尾,而不是覆盖它。

    • 例如:echo "new line" >> existing_file.txt 会将new line添加到existing_file.txt文件的末尾。

  5. < - 标准输入重定向:

    • 用于将文件的内容作为命令的输入。

    • 例如:sort < unsorted.txt 会将unsorted.txt文件的内容作为sort命令的输入。

  6. << - Here文档(Here Document):

    • 用于将接下来的输入直到一个定界符作为命令的标准输入。

    • 例如:

      cat <<EOF 
      line 1 
      line 2 
      EOF

      这将输出line 1line 2

  7. <<< - Here字符串(Here String):

    • 用于将一个字符串作为命令的标准输入。

    • 例如:grep "word" <<< "search for word" 会在给定的字符串中搜索"word"。

  8. | - 管道:

    • 用于将一个命令的输出作为另一个命令的输入。

    • 例如:ls | grep "txt" 会列出所有文件,然后只显示包含"txt"的行。

这些重定向和管道的使用非常灵活,可以根据需要组合使用来实现复杂的数据流控制。

为了避免权限问题,您可以尝试只在您的用户目录下或其他非系统目录中运行搜索命令。例如:

find ~ -name "*yunshu*"

这将只在您的用户目录(由~表示)和其子目录中搜索文件名包含"yunshu"的文件。

如果您想避免这些权限错误,可以将错误消息重定向到/dev/null,这样就只会看到成功的搜索结果:

find / -name "*yunshu*" 2>/dev/null

这里2>/dev/null是将标准错误(所有的错误消息)重定向到/dev/null,这是一个特殊的文件,会丢弃所有写入它的数据。这样您的输出中就只包含成功找到的文件路径了。


Comment