osx: tree -I 命令错误打开目录

osx: tree -I command error opening dir

我刚刚用 brew 安装了 tree,当我尝试 运行 时,它是这样的(在 python 项目文件夹中):

tree -I *.pyc

它 returns [错误打开目录] pyc 个文件,例如:

我明白了 运行宁 ls:

a.pyc b.pyc

当我 运行 tree -I *.pyc 时,我得到:

b.pyc [error opening dir]

0 directories, 0 files

知道为什么吗?

用引号将传递给 -I-P 的通配符模式括起来以避免通配:

tree -I '*.pyc'

来自man tree

Valid wildcard operators are
'*' (any zero or more characters)
'?' (any single character)
'[...]' (any single character listed between brackets)

这不是 tree 的问题,而是 shell (bash) 进行文件名扩展 - 也称为通配。所以传入tree的是当前目录中所有以.pyc结尾的文件名的列表。只有第一个文件名会跟在 -I 选项 (a.pyc) 之后,其他的将被视为目录名。

tree 想要做它的 own globbing(find 是一样的)所以你必须通过添加来保护它免受 shell报价:

tree -I '*.pyc'

引号将被 shell 删除,tree 将看不到,它只会看到 *.pyc

在这种情况下,单引号或双引号都可以解决问题,但坚持使用单引号可能更安全,因为其他扩展都是在双引号内完成的。

顺便说一句,当你遇到这种问题时使用:

set -x

将在 bash 扩展后显示命令。使用 set +x 将其关闭。这些可以在命令行或脚本中用于调试。

我在使用 pass 实用程序时遇到问题

我创建了一个类似于 github.com/myaccount 的密码并捕获了

[error opening dir]

当我试图找回密码时

重启后一切正常。