如何使用输出重定向来演示 TREE 的作用

如何使用输出重定向来演示 TREE 的作用

这是我在一次测试中发现的一道题:

从您的主目录运行 tree。
解释并演示它的功能。
使用输出重定向来执行此操作。

我不明白输出重定向部分。你能给我解释一下吗?

答案1

tree以树状格式列出目录内容。这是一个非常简洁实用的程序,您可以在命令行中使用它来查看文件系统的结构。

输出重定向意味着将命令输出存储在其他地方,而不是简单地打印在终端上。如果你想将tree命令输出存储在文件中,那么使用命令

tree > test 

这会将输出重定向到此文件。此命令将创建一个文件test,如果该文件已经存在,那么它将用tree命令输出替换其内容。如果你不想替换而只想附加,那么使用命令

tree >> test

这会将tree命令的输出附加到文件test。您可以提供要存储输出的文件的完整路径。

答案2

可能在该上下文中输出重定向=将标准输出 ( stdout) 重定向到常规文件

tree >tree_output.txt

但是,输出重定向通常意味着将默认输出流(标准输出(stdout)和标准错误(stderr),通常都指向终端)之一重定向到可以被视为文件的任何东西(常规文件,stderrifstdout是所讨论的流,stdoutifstderr是所讨论的流,管道,命名管道(FIFO),块设备,字符设备...),并且它不仅限于stdout像示例中那样将标准输出( )重定向到常规文件。

因此有很多可能的输出重定向;

为了简洁起见,假设所讨论的输出是标准输出(stdout),这些是最常见的重定向:

  • echo foo >filestdout重定向到常规文件;
  • echo foo >&2:stdout被重定向到stderr;
  • echo foo | catstdout重定向到管道;
  • mkfifo fifo && echo foo >fifostdout重定向到命名管道(FIFO);
  • echo foo >/dev/sdXstdout重定向到块设备(不要这样做——它只会弄乱相关块设备的分区表(英文):

更深奥的重定向:

  • echo foo >/dev/tty:stdout重定向到一个字符设备,这个设备恰好是当前的伪终端;
  • 点击Ctrl++ 、登录、点击++ 、点击++ 、运行Alt和点击++ ;被重定向到字符设备,而这恰好是第一个伪终端;F1CtrlAltF7CtrlAltTecho foo>/dev/tty1CtrlAltF1stdout

stdout因此,输出重定向通常意味着将默认输出流(标准输出( )和标准错误(stderr),通常都指向终端)之一重定向到可以被视为文件的任何内容;

为了tree使用输出重定向运行(并且实际在终端上显示某些内容),有多种方法:

  • tree >tree_output.txt && cat tree_output.txt:运行tree重定向stdout到常规文件;
  • tree >&2: 运行tree重定向stdoutstderr;
  • tree | cat:运行tree重定向stdout到管道;
  • mkfifo fifo && tree >fifo:运行tree重定向stdout到命名管道;
  • tree >/dev/tty:运行tree重定向stdout到字符设备(当前伪终端);
  • 点击Ctrl++ 、登录、点击++ 、点击++ 、运行和点击Alt++ :运行重定向到字符设备(第一个伪终端);F1CtrlAltF7CtrlAltTecho foo>/dev/tty1CtrlAltF1tree >/dev/tty1treestdout

相关内容