我使用以下命令来检查此答案给出的 python 版本。除了一个错误外,它确实有效,如下所示。任何人都可以解释为什么?
$ sudo find / -type f -executable -iname 'python*' -exec file -i '{}' \; \
| awk -F: '/x-executable; charset=binary/ {print $1}' \
| xargs readlink -f | sort -u | xargs -I % sh -c 'echo -n "%: "; % -V'
Run Code Online (Sandbox Code Playgroud)
错误:
find: ‘/run/user/1000/gvfs’: Permission denied
Run Code Online (Sandbox Code Playgroud)
Zan*_*nna 20
权限:
$ stat -c %a /run/user/1000/gvfs
500
Run Code Online (Sandbox Code Playgroud)
所以只有所有者有执行权限(允许搜索目录)。但是,您使用过sudo并且 root 拥有所有可能的权限,对吗?其实你发现了异常:
这个答案由吉尔斯在Unix和Linux SE解释了为什么权限被拒绝根该目录中,这是一个FUSE挂载点:
管理 FUSE 文件系统的信任边界很困难,因为文件系统驱动程序以非特权用户身份运行,而不是传统文件系统的内核代码。为了避免复杂化,默认情况下,FUSE 文件系统只能由运行驱动程序进程的用户访问。即使是 root 也无法绕过这个限制。
如果您在find没有sudo(作为您自己的用户,UID 1000)的情况下运行命令,您将不会收到该错误,因为您拥有该目录,但您会收到其他权限错误,因此,请使用sudo并接受 Gilles 的建议:
如果您仅在本地文件系统上搜索文件,请通过 -xdev 进行查找。
检查python版本的最简单方法:
$ python --version
Python 2.7.12+
$ python3 --version
Python 3.5.2+
Run Code Online (Sandbox Code Playgroud)
小智 7
有多种方法可以找到您拥有的 Python 版本。您可以通过以下两种方式获得 Python 2 和 Python 3 版本:
特定于 Python
首先运行python并python3选择--version
$ python --version
Python 2.7.12
$ python3 --version
Python 3.5.2
Run Code Online (Sandbox Code Playgroud)
这是特定于 python 的,但许多其他程序使用类似的方法。
任何包/程序的通用
一个更通用的方法是查看安装了什么包。dpkg -l将列出您所有的包,但您可以指定要查找的包。对于 python 和 python3,请使用以下内容:
$ dpkg -l 'python'
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-=====================-===============-===============-================================================
ii python 2.7.11-1 amd64 interactive high-level object-oriented language
$ dpkg -l 'python3'
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-=====================-===============-===============-================================================
ii python3 3.5.1-3 amd64 interactive high-level object-oriented language
Run Code Online (Sandbox Code Playgroud)
作为一个额外的花絮。如果您想查找名称以 开头的所有包python,您可以使用通配符,*如下所示:
$ dpkg -l 'python*'
Run Code Online (Sandbox Code Playgroud)
这将打印很多带有包的行。
| 归档时间: |
|
| 查看次数: |
7078 次 |
| 最近记录: |