为什么以下行不打印当前目录中文件的3倍?

时间:2012-07-22 16:52:14

标签: linux

为什么以下行只打印当前目录中的文件一次(而不是三次)?

这是考试中的一个问题。如果你知道一些资料来阅读它,它会很棒

cp /bin/ls blah
cat blah blah blah >bbb
chmod u+x bbb
bbb

2 个答案:

答案 0 :(得分:2)

<击> 您需要以下内容:

cp /bin/ls/blah .
cat blah blah blah >bbb
chmod u+x bbb
./bbb

第一个区别是cp的参数数量。您需要指定目的地和来源。第二个区别是,除非路径中有当前目录,否则需要使用./command而不是command来执行驻留在当前目录中的程序。

除此之外,了解/bin/ls/blah的内容很重要。如果该文件是包含以下内容的bash脚本:

#!/bin/ls
ls

在本答案开头给出的修改后的代码块将按预期工作(打印当前目录内容的3倍)。如果文件是二进制文件,则很可能无法工作,因为您无法连接二进制文件并期望生成的文件表现为原始二进制文件的3个连续执行。

更新:编辑完成后,答案会明显改变。现在,只有最后一部分适用于它。由于/bin/ls是二进制文件,因此无法连接二进制文件,并期望生成的文件表现为原始二进制文件的3个连续执行。如果您使用脚本而不是二进制文件,那么该示例将起作用。

答案 1 :(得分:0)

ELF二进制文件具有明确的大小和结构,因此无法执行ls二进制文件中包含的bbb的其他两个副本。