当我尝试命令时
cat text1.txt text2.txt > text3.txt
在bash文件中,unix将文件名更改为text3.txt*
,其中*
似乎是一个特殊符号。只有在使用bash文件时才会出现此问题。
是什么原因,我该如何避免这种情况?
编辑:在Windows资源管理器中添加了该条目的图片。我希望,现在我的意思更清楚了。
答案 0 :(得分:1)
您可能会使用ls
查看生成的文件以及一些特殊选项;可能这些选项是通过使用别名或shell函数自动添加的,因此您并没有真正看到它们。使用这些选项运行时,ls
会注意到文件已设置执行权限,并附加*
以将其标记为可执行文件。文件的“类型”尚未更改为DLL或其他任何内容;这可能是对着色ls
也有误解的误解。 (这里我采取了可能有误的有根据的猜测,所以如果不是这样的话,请不要起诉我。)但文件名本身不在*
结束。例如,目录将在ls
输出中标记为尾随/
。这只是为了方便阅读ls
的输出。
尝试使用ls
查看文件,不带选项:
/bin/ls /path/to/that/file/
您可能不会看到任何尾随*
。
现在,为什么新生成的文件具有执行权限?这确实很奇特而不是正常情况。如果底层文件系统无法存储完整的Unix权限,则会发生这种情况,然后每个文件都伪造成由文件系统驱动程序拥有这些权限(以防一个文件实际需要它们)。 / p>
更准确地说,我需要了解更多信息。在这个答案中,很多只是猜测你告诉我们的一点点。
答案 1 :(得分:-1)
您是否尝试将text1的内容复制到text3中,然后将text2追加到text3 ??
尝试:
cat text1.txt > text3.txt //replaces whatever there is in text3.txt with content of text1.txt
cat text2.txt >> text3.txt //appends content of text.txt at the end of text3.txt