我可以将 . 和 .. 排除在 .* 扩展之外吗?

我可以将 . 和 .. 排除在 .* 扩展之外吗?

我经常发现打字很烦人(甚至更糟)

command .*

在 bash 中,命令适用于父目录和当前目录。是否有一些 shell 选项或其他配置可以调整,以使 bash从 的扩展中排除.和?...*

答案1

在 bash 中,按以下顺序:

GLOBIGNORE=.
shopt -u dotglob

当设置了 GLOBIGNORE 时,. 和 .. 会被自动忽略,因此您实际上不需要在 GLOBIGNORE 中设置它们,但如果您没有其他要忽略的内容,那么您就无法将其设置为任何东西。

每次将 GLOBIGNORE 设置为非空值时,bash 都会打开选项dotglob,因此您之后需要将其关闭;否则 bash 将扩展*为包含以点开头的文件。

答案2

在陌生的系统上,我没有太多时间检查正在使用的设置(例如 GLOBIGNORE),我使用以下万无一失的模式:

command .??*
  • 快速输入并保证排除...无论环境如何。

相关内容