我想理解为什么这两行代码既可以工作又可以产生 通过在BASH中运行此shell脚本创建的文件中的相同内容。
也许那时我可以弄清楚如何获得我想要的输出,这就是 文件名,没有在那里写入[[/ home / inst1 /]]行。
第一行:
TargetDir=$(ls -d /home/inst1/ *.txt *.wmv *.odt >> /home/inst1/EXEofThurs9.txt)
第二行:
TargetDir=$(ls -d *.txt *.wmv *.odt /home/inst1/ >> /home/inst1/EXEofThurs9.txt)
文件内容:
Does the SubConcious Play A Role In Programming.txt
File_Management_At_Last_2wo_YEARS_After_Beginning.odt
/home/inst1/
NEW_CHAT_With_FRANK_append_FILE.txt
NewFile.txt
rocheFlynSail.wmv
What_Does_AYFJHS_Mean.txt
答案 0 :(得分:0)
shell在执行命令之前展开所有通配符。参数顺序与您输入的参数的顺序相同;通配符将按字典顺序由所有匹配文件替换。所以当你这样做时:
ls -d /home/inst1/ *.txt *.wmv *.odt
shell会扩展当前目录中的每个通配符(因为通配符没有目录前缀),结果命令为:
ls -d /home/inst1 file1.txt file2.txt file1.wmf file2.wmv file3.wmv file1.odt file2.odt
如果您尝试展开/home/inst1
目录中的通配符,则可以执行以下操作:
(cd /home/inst1; ls *.txt *.wmv *.odt >> /home/inst1/EXEofThurs9.txt)