如何在which -a命令中使用正则查找系统所有Python安装?
查找Mac上所有Python安装的问题
参考相关方法后,尝试了以下操作:
命令1
which -a python*
输出1
/opt/homebrew/bin/python3 /usr/local/bin/python3 /usr/bin/python3
命令2
which -a python3.9
输出2
/usr/local/bin/python3.9
结论
- 输出2的结果未包含在输出1中
- 因此
which -a python*无法覆盖全部Python安装的查找需求
需求
- 已编写可匹配全部4个Python安装的正则表达式
- 需将该正则应用到命令中,实现完整查找
解决方案
which本身不支持正则表达式匹配,它仅支持shell的文件名通配符(globbing)。要实现正则匹配查找所有Python相关命令,可结合compgen与grep工具,示例命令如下:
1. 获取所有Python相关命令名
compgen -c | grep -E '^python[0-9.]*$'
2. 获取所有Python命令的完整路径
compgen -c | grep -E '^python[0-9.]*$' | xargs -I {} which -a {}
备选方案:直接搜索常见二进制目录
如果不确定命令所在路径,可直接搜索系统常见的可执行文件目录:
find /usr/bin /usr/local/bin /opt/homebrew/bin -type f -executable -name 'python*' | grep -E 'python[0-9.]*$'
内容的提问来源于stack exchange,提问作者Signor Pizza
相关产品推荐
相关产品推荐

