-2

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

这是考试中的一道题。如果您知道一些可以阅读它的来源,那就太好了

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

2 回答 2

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 次顺序执行。但是,如果您使用的是脚本而不是二进制文件,则该示例将起作用。

于 2012-07-22T16:57:48.840 回答
0

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

于 2012-07-22T16:56:07.233 回答