cat 文件:在“user :/”提示之前打印

cat 文件:在“user :/”提示之前打印

文件仅包含 1 行:

aaa

当我运行“cat file”时,它会混合到用户名

user /dir : cat file
aaauser /dir :

可能是什么问题呢 ?

额外信息:

也许这在 bashrc 中没有正确设置??

PS1='\u \W : '

更新:

除了在文件中包含换行符之外,不应该有其他解决方案吗?

为什么不关心可能扭曲命令行提示的元素? (没有新行)

答案1

您的文件末尾没有换行符。结果,shell 提示符正好放在最后。您可以通过添加它来解决这个问题。

printf '\n' >> file

您可以通过创建一个末尾不带换行符的文件来重现此问题。 (该-n标志告诉 echo 不要在末尾添加换行符。)

[zbrady@server ~]$ printf 'test' > testfile
[zbrady@server ~]$ cat testfile
test[zbrady@server ~]$
[zbrady@server ~]$ printf '\n' >> testfile
[zbrady@server ~]$ cat testfile
test
[zbrady@server ~]$

答案2

正如已经回答的那样,您的文件的最后一行不完整(最后一个字符不是换行符)。

关于您更新的问题“为什么不关心可能扭曲命令行提示符的元素?”,好吧,cat 命令确实不知道或通常不关心终端;它只是将其输入文件复制到标准输出。

如果您想避免此类问题,可以使用适当的寻呼机,例如 less。

相关内容