我刚安装tree有brew,当我尝试这样运行了它(在一个Python项目文件夹):
tree -I *.pyc
Run Code Online (Sandbox Code Playgroud)
它返回文件的[error opening dir] pyc,例如:
我开始运行ls:
a.pyc b.pyc
Run Code Online (Sandbox Code Playgroud)
当我跑步时tree -I *.pyc,我得到:
b.pyc [error opening dir]
0 directories, 0 files
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
这不是问题tree,它是shell(bash)执行文件名扩展 - 也称为globbing.所以传入的tree是当前目录中以...结尾的所有文件名的列表.pyc.只有第一个文件名将跟随-I选项(a.pyc),其他文件名将被视为目录名称.
tree想要做它自己的 globbing(find是相同的)所以你必须通过添加引号来保护它免受shell的影响:
tree -I '*.pyc'
Run Code Online (Sandbox Code Playgroud)
引号将被shell剥离,不会被看到tree,它只会看到*.pyc.
在这种情况下,单引号或双引号都可以解决这个问题,但是可能更安全地坚持使用单引号,因为其他扩展是在双引号内完成的.
顺便说一句,当你遇到这种问题时使用:
set -x
Run Code Online (Sandbox Code Playgroud)
这将在bash扩展后显示命令.使用set +x将其关闭.这些可以在命令行或脚本中用于调试.
| 归档时间: |
|
| 查看次数: |
2492 次 |
| 最近记录: |