18.04へのアップグレード後に「ファイル名」として表示されるスペースのあるファイル名


23

16.04から18.04へのアップグレード後、スペースを含むすべてのファイル名はとして表示され'file name'ます。以前は単純file nameでした。スペースなしのファイル名は正常に表示されます。

$ ls
 bar  'foo bar'

機能に影響を与えることはありませんが、視覚的に混乱します。

私はbashシェルとして使用します。

''スペースを含むファイル名の表示を削除するにはどうすればよいですか?


4
なぜそれらを削除したいのですか、それらはファイル名の一部ではなく、コマンドラインまたはスクリプトでスペースを使用してファイル名を管理するのに役立つかもしれません。
ソレン

2
私はそれらがファイル名の一部ではないことを知っています。しかし、それらは視覚的な混乱であり、私はそれらを必要としません。
vidarlo

4
@SorenA lsスクリプト内のファイルの管理に使用している場合、間違っています。なぜあなたはの出力を解析してはならないlsし、なぜないの解析ls(と何が代わりに行いますか)?
デザート

2
@ WinEunuuchs2Unix貼り付けが容易になりますが、答えが述べているように、端末に出力しない場合の動作は変わりません...
vidarlo

2
@vidarlo ls著者は少なくともいくつかの問題に取り組んでいます。著者がStack Exchange(私の回答のリンク)に積極的に関与していることを知っていると、将来の改善をより簡単に提案できます。次に、他のユーザーからのコメント賛成票は、著者が提案を実施することを奨励します。
WinEunuuchs2Unix

回答:


33

このls動作の変更は2016年からでしたが、ついにUbuntuに移行しました。

古い動作を取り戻すには、を使用しますls -N

オプションで、環境変数を使用できます。

QUOTING_STYLE=literal ls

エイリアスにするか、古い動作を実現するexport QUOTING_STYLE=literalよう~/.bashrcに設定してください。

上記のリンクを読んで、いつ、どこで、なぜ、どのようになったかの履歴など、詳細を確認できます。ls変更作者の下では、新しい動作を正当化するコメントがかなりあります。

変更に関するいくつかのポイント。

  • coreutils v8.25で導入され、v8.26でアライメントが改善されました。
  • 端末に出力するときにのみ発生するため、スクリプトを中断しません
  • 空白を含むファイルのユーザーの出力を明確にします
  • 出力をサニタイズするので、コピーして貼り付けても安全です
  • コピーしてシェルに貼り付けるために、出力が常に有効になりました
  • ユーザーはエイリアスに追加-Nすることで古い形式に戻すことができますls

12

それlsは出力を引用している、実行する:

ls -N

引用符なしで出力を取得します。

man ls

-N、-リテラル

引用符なしでエントリ名を出力


必要に応じて別名を付けます:

echo "alias ls='ls -N'" >> .bashrc
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.