cat файл: выводится до приглашения «user: /».

файл содержит только одну строку:

aaa

когда я запускаю "cat file", он смешивается с именем пользователя

user /dir : cat file
aaauser /dir :

В чем может быть проблема?

Дополнительная информация:

возможно, это неправильно установлено в bashrc? ?

PS1='\u \W : '

ОБНОВЛЕНИЕ:

разве не должно быть другого решения, кроме включения новой строки в файл?

Почему не нужно заботиться об элементах, которые могут исказить приглашение командной строки? (не имея новой строки)

0
28.02.2017, 23:49
2 ответа

В вашем файле нет новой строки в конце. В результате приглашение оболочки просто помещается в конец. Вы можете исправить это, добавив его.

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 ~]$
1
28.01.2020, 02:34

Как уже было сказано, в вашем файле есть неполная последняя строка (последний символ не является новой строкой).

Что касается вашего обновленного вопроса «Почему не нужно заботиться об элементах , которые могут искажать приглашение командной строки?», То команда cat действительно не знает или вообще не заботится о терминалы; он просто копирует свои входные файлы в стандартный выходной поток.

Если вы хотите избежать такого рода проблем, вы можете вместо этого использовать правильный пейджер, например .

1
28.01.2020, 02:34

Теги

Похожие вопросы