web-dev-qa-db-ja.com

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

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

$ ls
 bar  'foo bar'

機能には何の影響もありませんが、視覚的に煩雑です。

シェルとしてbashを使用しています。

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

24
vidarlo

このls動作の変更は 2016年以降 でしたが、ついにUbuntuへの道を開いています。

以前の動作に戻すには、ls -Nを使用します。

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

QUOTING_STYLE=literal ls

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

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

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

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

出力を引用しているのはlsです。次を実行:

ls -N

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

man ls

-N、-literal

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


必要に応じてエイリアスします。

echo "alias ls='ls -N'" >> .bashrc
12
Ravexina