cat 파일: "user:/" 프롬프트 이전에 인쇄

cat 파일: "user:/" 프롬프트 이전에 인쇄

파일에는 단 한 줄만 포함되어 있습니다.

aaa

"cat file"을 실행하면 사용자 이름과 혼합됩니다.

user /dir : cat file
aaauser /dir :

무엇이 문제일까요?

추가 정보:

bashrc에서 이것이 올바르게 설정되지 않았을 수 있습니까? ?

PS1='\u \W : '

고쳐 쓰다:

파일에 줄 바꿈을 포함하는 것 외에 다른 해결책이 없어야 합니까?

명령줄 프롬프트를 왜곡할 수 있는 요소에 신경쓰지 않으시겠습니까? (새 줄 없음)

답변1

파일 끝에 개행 문자가 없습니다. 결과적으로 쉘 프롬프트는 맨 마지막에 배치됩니다. 추가하면 이 문제를 해결할 수 있습니다.

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와 같은 적절한 호출기를 사용할 수 있습니다.

관련 정보