Has*_*ziz 20
ls将某些文件名用单引号括起来ls 用单引号将文件名括起来,其中包含空格,目的是允许安全地复制文件名、在脚本中使用或通过另一个命令进行管道传输。
这是最近在 2016 年被引入到GNU包8.25 版的一个非常不受欢迎的功能,只有三个开发人员的共识。coreutils
对此变化的批评者引用的论点包括它使输出ls看起来更加难看,与近半个世纪的 Unix 传统不必要地背道而驰,并且由于它的实现方式(选择退出而不是选择加入)破坏了兼容性使用长期存在的脚本和实用程序。
因为这个特性被引入到coreutils包中——几乎每个 Linux 发行版都依赖于它,并且它ls是其中的一部分——这一变化影响了每个 Linux 或可以想象的类 Linux 系统,从 Arch Linux 到 Cygwin。
在 Debian 和 Debian 衍生发行版(如 Ubuntu)的情况下,经过大量抗议后,更改在某个时候恢复,然后在 2017 年 10 月再次恢复。
正如这个答案所表明的那样,表达您对此更改感到失望的最佳方法是coreutils通过错误报告直接联系开发人员,并(礼貌地)提出他们犯了一个巨大错误的论点。根据开源精神,一大批用户恭敬而坚决地坚持认为ls过去的行为方式应该正确恢复,理论上应该足以说服coreutils开发人员听取 Linux 社区的意见。
ls之前版本的行为从更短期的、务实的意义上讲,有几种方法可以恢复ls' 8.25 版之前的所有输出保持不变的行为。以下是针对bashshell执行此操作的三种方法。
~/.bashrc在 HOME 文件夹 ( /home/yourusername) 中找到您的文件,并向其中添加以下行:
export QUOTING_STYLE=literal
Run Code Online (Sandbox Code Playgroud)
保存文件,更改应立即应用于bash您打开的所有新终端。
您还可以运行source ~/.bashrc以将更改推送到进行更改时打开的任何终端窗口。
ls -N如果您更喜欢使用别名而不是环境变量,您还可以创建一个.bashrc使用 8.25 新-N开关的别名。来自ls --help:
-N , --literal打印条目名称而不引用
为此,请将以下行添加到您的~/.bashrc文件中并保存:
alias ls="ls -N"
Run Code Online (Sandbox Code Playgroud)
运行source ~/.bashrc以将新更改推送到所有打开的终端。
-N命令行开关如果你更喜欢coreutils' 新的默认行为但想暂时绕过它,你也可以-N直接在命令中使用开关:
ls -N
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11790 次 |
| 最近记录: |