Bash

cat 文件:在“使用者:/”提示之前列印

  • February 28, 2017

文件僅包含 1 行:

aaa

當我執行“cat文件”時,它會與使用者名混合

user /dir : cat file
aaauser /dir :

可能是什麼問題呢 ?

額外資訊:

也許這在 bashrc 中沒有正確設置??

PS1='\u \W : '

更新:

除了在文件中包含換行符之外,不應該有其他解決方案嗎?

為什麼不關心會扭曲命令行提示的元素?(沒有新行)

您的文件末尾沒有換行符。因此,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 ~]$

正如已經回答的那樣,您的文件的最後一行不完整(最後一個字元不是換行符)。

關於您更新的問題“為什麼不關心可以扭曲命令行提示的元素?”,好吧, cat 命令確實不知道或通常不關心終端;它只是將其輸入文件複製到其標準輸出。

如果您想避免此類問題,您可以使用適當的尋呼機,例如 less。

引用自:https://unix.stackexchange.com/questions/348134