bash文件中的cat命令

时间:2014-02-27 23:36:01

标签: bash unix

当我尝试命令时

cat text1.txt text2.txt > text3.txt

在bash文件中,unix将文件名更改为text3.txt*,其中*似乎是一个特殊符号。只有在使用bash文件时才会出现此问题。

是什么原因,我该如何避免这种情况?

编辑:在Windows资源管理器中添加了该条目的图片。我希望,现在我的意思更清楚了。

http://i.stack.imgur.com/okfHh.png

2 个答案:

答案 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