16.04から18.04にアップグレードした後、スペースを含むすべてのファイル名は'file name'
と表示されます。以前は単にfile name
でした。スペースのないファイル名は正常に表示されます:
$ ls
bar 'foo bar'
機能には何の影響もありませんが、視覚的に煩雑です。
シェルとしてbash
を使用しています。
スペースを含むファイル名の周りに表示されている''
を削除するにはどうすればよいですか?
このls
動作の変更は 2016年以降 でしたが、ついにUbuntuへの道を開いています。
以前の動作に戻すには、ls -N
を使用します。
オプションで、環境変数を使用できます。
QUOTING_STYLE=literal ls
エイリアスにするか、export QUOTING_STYLE=literal
に~/.bashrc
を設定して、古い動作を実現します。
上記のリンクを読んで、いつ、どこで、なぜ、どのようにしてすべてがこのようになったかの履歴を含む詳細を確認できます。 ls changesの作成者の下にかなりの数のコメントがあり、彼は新しい動作を正当化します。
変更に関するいくつかのポイント。
- Coreutils v8.25で導入され、v8.26でアライメントが改善されました
- 端末に出力するときにのみ発生するので、スクリプトを壊しません
- 空白を含むファイルのユーザーの出力を明確にします
- 出力をサニタイズするため、コピーして貼り付けても安全です
- 出力は常にvalidになり、コピーしてシェルに貼り付けます
- ユーザーは、
ls
エイリアスに-N
を追加することで、以前の形式に戻すことができます
出力を引用しているのはls
です。次を実行:
ls -N
引用符なしで出力を取得します。
man ls
-N、-literal
引用なしでエントリ名を出力する
必要に応じてエイリアスします。
echo "alias ls='ls -N'" >> .bashrc