一个有趣的观察。
无论您使用 l、ls、ll、ls -a 还是 ls -l,该命令都会递归,如果您碰巧尝试解决链接错误,您最终会浏览大量不必要的垃圾页面来搜索您实际需要的内容。如果您搜索的链接(如我的情况)是文件夹,则尤其如此。
我想修复一个通常通过 python3 访问的 python3.6 链接(正常安装时)。ll pyth* 过去只列出所有已设置的链接,我可以仔细查看列表并根据需要进行修复。但是,现在,它列出了
python3:
...dist 包
python3.6
...
python3.6
的完整列表
ETC...
并且在两种情况下都没有提及链接。
全新安装 18.10,有什么想法吗?
答案1
您获得的输出是因为您正在使用 shell 模式匹配(globbing)并对glob 输出的每个元素pyth*
运行命令。ls
shell 首先返回python3
和python3.6
目录以及任何其他匹配项。它们用作参数,ls
因此您的命令最终为
ls python3 python3.6 ...
它的输出显示了您不感兴趣的细节。请注意,它不是真正的递归,否则您将看到子目录的内容。
有几种方法可以解决这个问题,例如@steeldriver在评论中提到使用-d
或--directory
只会提供目录名称而不是内容:
ls -d pyth*
或者,您可以使用find
命令-maxdepth 1
来确保它不会进入子目录。请注意,参数被引用,以便由而不是由 shell-name
展开。find
find . -maxdepth 1 -name 'pyth*'
通常最好使用它find
而ls
不是依赖命令的输出进行进一步处理,因为ls
在某些情况下可能会产生意外的结果。