ls命令列出隐藏文件

ls命令列出隐藏文件

当我运行ls命令时,我会得到类似于opencv.sh~输出中的文件,如果我检查主目录,这些文件是不可见的。

基本上,它还列出隐藏文件而不提供任何其他参数。我怎样才能防止这种情况发生?

我的版本是 Ubuntu 14.04

答案1

opencv.sh~不是隐藏文件。 POSIX 将隐藏文件定义为以点开头的文件,但opencv.sh~不以点开头的文件。

如果您不想看到这些文件,您可以通过使用不包含它们的 glob 来显式避免它们(例如,shopt -s extglob后跟ls !(*\~)),或者(因为我假设这些文件来自 vim),您可以配置vim不将备份文件放在同一目录中

答案2

文件上没有任何属性表明它是隐藏的。 Unix 的早期版本有一个ls命令名称以.(“点文件”)开头的隐藏文件这个传统一直沿袭下来。ls默认情况下,该命令隐藏名称以 开头的文件.并显示所有其他文件。

一些图形文件管理器隐藏名称以 开头的文件.,就像 一样ls,因为这是许多用户所期望的。侏儒推出了一项新约定,即目录可以包含一个名为 的文件.hidden,该文件包含要隐藏的文件列表(每行一个文件名,不允许使用任何模式)。

您没有提到您使用的文件管理器,它可能有不同的隐藏文件规则。如果opencv.sh~是隐藏的,则显然遵循非标准规则,因此您不能合理地抱怨ls不遵循这些非标准规则。

~在文件名末尾添加是备份文件的惯例。也就是说,opencv.sh~是 的早期版本opencv.sh,由您的编辑器在您保存时创建opencv.sh

GNU 版本支持忽略额外模式(除了点文件之外)的ls选项。-I如果您想隐藏备份文件ls,您可以创建一个别名来添加-I "*~"ls选项中:

alias ls='ls -I "*~"'

(加上您希望的任何其他选项,例如alias ls='ls -I "*~"' --color使用颜色来指示文件类型)。将该行放入您的.bashrc.zshrcshell 使用的任何初始化文件中。

相关内容