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

时间:2015-07-06 16:03:44

标签: macos shell tree

我刚刚用tree安装了brew,当我尝试像这样运行它时(在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 个答案:

答案 0 :(得分:5)

这不是tree的问题,它是shell(bash)进行文件名扩展 - 也称为globbing。因此,传递到tree的内容是当前目录中以.pyc结尾的所有文件名列表。只有第一个文件名将跟随-I选项(a.pyc),其他文件名将被视为目录名称。

tree想要这样做拥有 globbing(find是相同的)所以你必须通过添加引号来保护它免受shell的攻击:

tree -I '*.pyc'

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

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

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

set -x

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

答案 1 :(得分:2)

使用引号包围传递给-I-P的通配符模式,以避免出现通信:

tree -I '*.pyc'

来自man tree

  

有效的通配符运算符为
  '*'(任何零个或多个字符)
  '?'(任何单个字符)
   '[...]'(括号中列出的任何单个字符)

答案 2 :(得分:0)

我遇到 pass 实用工具

的问题

我创建了一个名为github.com/myaccount之类的密码,并捕获了

[error opening dir]

当我尝试检索密码时

重启后一切正常。