файл содержит только одну строку:
aaa
когда я запускаю "cat file", он смешивается с именем пользователя
user /dir : cat file
aaauser /dir :
В чем может быть проблема?
Дополнительная информация:
возможно, это неправильно установлено в bashrc? ?
PS1='\u \W : '
ОБНОВЛЕНИЕ:
разве не должно быть другого решения, кроме включения новой строки в файл?
Почему не нужно заботиться об элементах, которые могут исказить приглашение командной строки? (не имея новой строки)
В вашем файле нет новой строки в конце. В результате приглашение оболочки просто помещается в конец. Вы можете исправить это, добавив его.
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 действительно не знает или вообще не заботится о терминалы; он просто копирует свои входные файлы в стандартный выходной поток.
Если вы хотите избежать такого рода проблем, вы можете вместо этого использовать правильный пейджер, например .