ターミナルでls
を実行すると、一部のファイル名が一重引用符で囲まれているものとそうでないものがあることに気付きました。
端末の出力をナイスで統一することを好むため、これがどのように見えるかは気に入らない。この機能の原因は何ですか?それを安全に無効にすることは可能ですか?
ls
が一部のファイル名を一重引用符で囲む理由ls
は、ファイル名を安全にコピーしたり、スクリプトで使用したり、別のコマンドでパイプしたりできるようにするために、ファイル名をスペースで囲んで一重引用符で囲みます。
これは 非常に人気のない 機能 バージョン8.25で導入 GNU coreutils
パッケージの最近の2016年、たった3人の開発者のコンセンサス。
変更の批評家によって引用された議論は、それがls
の出力をかなり見苦しく見えるようにすることを含みます 不必要に Unixの伝統のほぼ半世紀から逸脱し、実装(オプトインではなくオプトアウト)すると、長年の既存のスクリプトやユーティリティとの互換性が失われます。
この機能がcoreutils
パッケージに導入されたため-事実上すべてのLinuxディストリビューションが依存し、どのls
がその一部であるか-変更は、Arch Linuxから考えられるすべてのLinuxまたはLinuxのようなシステムに影響しますCygwinに。
DebianやUbuntuのようなDebian派生のディストリビューションの場合、かなりの抗議の後、変更はある時点で元に戻され、その後 2017年10月に再び復活 になります。
この回答で明らかになります なので、この変更に対する失望を登録する最善の方法は、バグレポートを介してcoreutils
開発者に直接連絡し、(丁寧に)それらについての議論を行うことです。大きな間違いをしました。オープンソースの精神に従い、敬意を表して、しかし断固として、ls
の動作が適切に回復することを強く主張するユーザーは、理論的にはcoreutils
開発者にLinuxコミュニティ。
より短期的で実用的な意味で、ls
'を復元する方法はいくつかあります。バージョン8.25すべてを残すという動作そのまま出力。以下は、bash
シェルでこれを行う3つの方法です。
ls
'以前のバージョン8.25の動作を復元するQUOTING_STYLE
ファイルで~/.bashrc
環境変数をliteral
に設定しますHOMEフォルダー(~/.bashrc
)で/home/yourusername
ファイルを見つけ、それに次の行を追加します。
export QUOTING_STYLE=literal
ファイルを保存すると、開いたすべての新しいbash
ターミナルに変更がすぐに適用されます。
source ~/.bashrc
を実行して、変更を加えたときに開いていたターミナルウィンドウに変更をプッシュすることもできます。
ls -N
のエイリアスを作成します環境変数にエイリアスを使用する場合は、8.27の新しい.bashrc
スイッチを使用して、-N
にエイリアスを作成することもできます。 ls --help
から:
-N、-literal引用なしでエントリ名を出力
これを行うには、次の行を~/.bashrc
ファイルに追加して保存します。
alias ls="ls -N"
source ~/.bashrc
を実行して、開いているすべてのターミナルに新しい変更をプッシュします。
-N
コマンドラインスイッチを使用する(現在の実行のみ)coreutils
'新しいデフォルトの動作を使用したいが一時的にそれをバイパスしたい場合は、-N
スイッチをコマンドで直接使用することもできます。
ls -N