文件仅包含 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。