cat`bash`命令的意外输出



有人可以解释一下吗?我运行了命令,如下所示

$ cat `bash`
$ ls
$ ctrl+D

这给了我一些意外的终端输出。

注意: bash在回音中。

好问题!"意外的输出"是CAT打印CWD中LS发现的所有文件。详细说明如下:

在您的第一行:

$ cat `bash`

bash零件实际上从您的原始外壳中产生了一个新的外壳,因为bash被backquotes封闭(后quotes意味着在此上下文中运行封闭的程序)

然后当您这样做时:

$ ls

这实际上是在新产卵的bash壳中完成的。它列出了新生成的bash shell所在的目录(应该与原件相同)。从本质上讲,这在第一步中将CAT命令更改为

$ cat file_1 file_2 ... file_x

(基本上是由LS返回的该目录中的所有文件。但是,您还没有看到这些结果您的新bash壳。)

最后,当您这样做时:

$ ctrl+D

它将从原始外壳产生的新bash壳退出,然后猫输出所有印刷到新外壳中的stdout(ls搜索结果)中的所有东西。

您可以验证我刚才说的话:

$ cd ~/
$ mkdir temp_test_dir
$ cd temp_test_dir
$ echo "some text for file1" > file1
$ echo "other text for file2" > file2

现在运行您的问题中的内容:

$ cat `bash`
$ ls
$ ctrl+D

这就是您应该看到的:

some text for file1
other text for file2

在某些顺序上,这只是猫输出LS。

发现的所有文件

相关内容

  • 没有找到相关文章