为什么以下行只打印当前目录中的文件一次(而不是三次)?
这是考试中的一个问题。如果你知道一些资料来阅读它,它会很棒
cp /bin/ls blah
cat blah blah blah >bbb
chmod u+x bbb
bbb
答案 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
的其他两个副本。