如何使用cd从命令行自动完成中删除.DS_Store?


14

我了解.DS_store文件是有目的的。也就是说,使用cd命令自动完成时,它们是很麻烦的。当我键入cdTerminal并按两次Tab键时,它将列出工作目录中的所有目录。

是否可以.DS_store从终端中的此自动完成目录列表中删除?


当我输入cdTerminal时,再按两次Tab键:在所有可能性(不仅是目录)被列出之前,会有提示。
格雷厄姆·佩林

这似乎是更好的行为。您知道在cd后双击时如何防止文件列表吗?
Jeromy Anglim

cd */其次是两个选项卡,列出了当前目录的所有子目录。但是您必须退格来选择一个...
lhf 2012年

@lhf谢谢。拥有该选项很好。最好cd是足够聪明以默认情况下仅列出目录。
Jeromy Anglim

Answers:


12

export FIGNORE=DS_Store 为我工作。

GNU击手册提供了可编程完成的大量信息

具体来说,来自有关bash变量文档

FIGNORE [是]执行文件名完成时要忽略的后缀列表,以冒号分隔。后缀与FIGNORE中的条目之一匹配的文件名将从匹配文件名列表中排除。样本值为'.o:〜'

如果您担心中可能存在后缀FIGNORE,则可以使用:

export FIGNORE=$FIGNORE:DS_Store

不确定您的身份,但$FIGNORE:.DS_Store对我而言它必须在Mac上。没有“。”就没有用。
typeoneerror

@typeoneerror,对我也一样。也许在过去它按发布方式工作。谢谢你让我知道。
lhf,2015年

1
在macOS Sierra 10.12.5中,仅当我在.

2

我认为您真正要寻找的是Bash命令的上下文感知选项卡完成。例如,.DS_Store是常规文件,而不是目录,因此不应将其显示为的可能补全cd

解决此问题的软件包称为bash-completion。我使用的是Fink的版本(fink install bash-completion),MacPorts(port install bash-completion)和Homebrew(brew install bash-completion)也可以使用它。

在您的.bashrc或.bash_profile中安装并配置了软件包之后,常规文件将不再显示为cd的补全,并且许多其他常见的bash命令也变得可以识别上下文(例如gunzip)。


1

当您只询问.DS_Store时,我认为从自动完成中删除所有隐藏文件通常会更好。这可以通过以下命令来完成:

绑定“关闭匹配隐藏文件”

您可以添加它〜/ .bash_profile使其每次都被调用。这不会完全禁用隐藏文件的自动完成功能,您仍然可以键入“。” (点),然后点击选项卡。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.