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 版之前的所有输出保持不变的行为。以下是针对bash
shell执行此操作的三种方法。
~/.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 次 |
最近记录: |