在 unix 中隐藏文件而不更改其名称(添加点),以便使用它们的脚本仍然有效

在 unix 中隐藏文件而不更改其名称(添加点),以便使用它们的脚本仍然有效

简洁版本:我希望能够阻止某些文件出现在 的输出中ls,而无需添加点,从而更改其名称。

长版本:最近,我将一堆脚本和数据文件移到了另一个目录以保持井然有序。我的许多旧脚本都需要访问这些文件,因此我创建了符号链接以实现向后兼容。但是,移动文件的目的是保持原始文件夹干净,所以我不想看到符号链接。但是我怎样才能隐藏它们,而不改变它们的名称(添加点),从而破坏我的旧脚本?

答案1

不幸的是,这是不可能的(除非编写您自己的自定义版本ls)。最好的办法就是编辑您的脚本。

可以防止特定文件名与全局变量的 glob 匹配$GLOBIGNORE

$ printf '%s\n' *
foo.txt
bar.txt
baz.txt
$ GLOBIGNORE=foo.txt:baz.txt
$ printf '%s\n' *
bar.txt

如果您确实想要,您可以在您的中设置一个别名.bashrc,您也可以在其中设置$GLOBIGNORE上面的变量。

alias myls='ls -d *'

但是,这可能会在某个时候给您带来问题。更好的办法是直接编辑脚本(也许可以使用 sed 批量执行,正如 @terdon 所建议的那样)。

答案2

如果您的 Linux 系统中安装了 nautilus 文件管理器,您可以将它们从文件管理器(nautilus)中隐藏,而无需使其对 CLI 不可见,也无需使用点。

创建包含隐藏文件/文件夹列表的 .hidden 文件。

要使用此功能,只需在包含要隐藏的文件/文件夹的文件夹中创建一个名为“.hidden”(点隐藏)的文件。然后在文本编辑器中打开它,然后在包含“.hidden”文件的文件夹中创建要隐藏的隐藏文件/文件夹的名称列表。

如果不使用“点”,您就无法从 ls 中隐藏文件,但您可以使用 chmod 更改某些用户包含文件的目录的权限,并使他们无法访问该目录。

相关内容