端末に表示されたときにファイル名が二重引用符で囲まれ、文字が一重引用符で囲まれたのはなぜですか?

端末に表示されたときにファイル名が二重引用符で囲まれ、文字が一重引用符で囲まれたのはなぜですか?

ファイルに表示されるファイルは二重引用符で囲まれているように見えますが、ファイル内の文字が一重引用符で囲まれているように見えるのはなぜですか?

"insight_automation.log'.'2024-03-13"

私はUbuntu Server 22.04.3 LTSを使用しています。サーバー(Atlassian Jira Data Center 9.12.4、該当する場合)にインストールされているサービスデスク管理プログラムは、さまざまなログファイルを記録します。一部のファイルが循環し、更新後に実行すると、一部のログファイルが上記のように表示されます。

~$ ls /var/[application-directory-path]/log

他のログファイルは引用符なしで表示されます。いくつかの例:

atlassian-jira.log
atlassian-jira.log.1
insight_audit.log
insight_audit.log.2024-03-05
insight_automation.log

Unixシステムの一重引用符と二重引用符に関する投稿がたくさんあります。具体的には、GNU開発者はスペースを含むファイルの周りに一重引用符を追加します。私はこれらの文字とUnixのニュアンスにある程度慣れていますが、これは私にとって新しいものであり、オンラインで説明を見つけることができません(おそらく問題を言葉で表現するのは難しいからです)。

ロギング設定ファイルを見てみると、間違った動作とは違いはありません。Insights_automation.log回転設定およびその他のログファイル。私の唯一の推測は、名前のドットがファイル名のスペースと同じようにエスケープされる別のUnicode文字であるということです。シングルポイントリーダー、不連続ポイント、または弾丸がありますか?

この問題は簡単に解決できると確信していますが、なぜこのように見えるのかを知ることは多くの助けになります。

答え1

(ここでは質問に答えるだけなので、リンクされた回答の機能に関するすべての苦情を読む必要はありません。)

最新バージョンのGNU lsは、出力を明確にするために(末尾のスペースを表示するために)デフォルトで端末に印刷するときに特殊文字でファイル名を引用符で囲みます。ほとんどの場合、一重引用符を使用しますが、名前自体に一重引用符が含まれている場合は、二重引用符を使用して完全な名前を囲むことができます。

これらのバージョンのlsのいずれかを使用すると仮定すると(システムが古くない場合はおそらくそうです)、ファイル名はであり、insight_automation.log'.'2024-03-13lsはそれを印刷します"insight_automation.log'.'2024-03-13"

出力はシェル(とにかくBash)への入力として適している必要があります。たとえば、次のことを確認できます。

ls "insight_automation.log'.'2024-03-13"

うまくいけば、ファイルを見つけることができます。

lsまたは、追加情報なしでファイル名を印刷するには、次の手順を実行します。

ls -N

代わりに。または、ls -N *\'*単一引用符を含むファイル名のみを一致させます。

ファイル名に引用符が付いている理由は、システムの残りの部分を見ることなく知る方法がありません。

関連情報