OSX: tree -I命令打开目录时出错

4
我刚刚使用brew安装了tree,当我尝试在python项目文件夹中运行它时,命令如下:
tree -I *.pyc

当涉及到 pyc 文件时,它会返回 [error opening dir] 错误,例如:

在运行 ls 命令时,我遇到了这个错误:

a.pyc b.pyc

当我运行tree -I *.pyc时,会得到以下结果:

b.pyc [error opening dir]

0 directories, 0 files

有什么想法吗?
3个回答

7
这并不是tree的问题,而是shell(bash)执行其文件名扩展 - 也称为globbing。因此,传递到tree的是当前目录中以.pyc结尾的所有文件名列表。只有第一个文件名将遵循-I选项(a.pyc),其他文件名将被视为目录名。 tree希望进行自己的globbing(find也一样),因此您必须通过添加引号来保护它免受shell的影响:
tree -I '*.pyc'

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

在这种情况下,单引号或双引号都可以解决问题,但最好还是使用单引号,因为其他扩展在双引号内完成。

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

set -x

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


2

在使用-I-P命令时,为避免通配符匹配,请用引号将通配符模式括起来:

tree -I '*.pyc'

来自 man tree

有效的通配符操作符包括:
'*'(任意零个或多个字符)
'?'(任意单个字符)
'[...]'(方括号中列出的任意单个字符)


0

我在使用pass工具时遇到了问题。

我创建了一个名为github.com/myaccount的密码,但是出现了一些问题。

[error opening dir]

当我试图检索密码时

重新启动后,一切都变得正常。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接