catファイル: "user:/" プロンプトの前に印刷

catファイル: "user:/" プロンプトの前に印刷

ファイルには1行しか含まれていません。

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などの適切なポケットベルを使用できます。

関連情報