显示可执行文件以当前路径配置覆盖其他文件

path_overrides的Python项目详细描述


检测“重写”系统路径中其他可执行文件的可执行文件。

安装

path_overrides已经在最新的os x和linux系统上进行了测试。它应该适用于任何posix系统。

要安装,只需运行:

$ pip install --user path_overrides

或类似的。建议安装python包blessings以提供彩色输出,但不是必需的。

使用

运行path_overrides。它将显示一个列表,其中可执行文件隐藏其他(不同)可执行文件。

动机

如果我在最新的Linux或OS X外壳上按了几次“tab”键,就会得到如下提示:

Display all 2228 possibilities? (y or n)

有2000多个命令都准备好了,等待在输入一个单词时运行。它们并不都生活在一个地方;它们生活在(通常是很小的)多个不同的位置,这些位置列在PATH环境变量中。PATH是一个有序的路径序列,搜索这些路径以找到将要运行的可执行文件。这在大多数情况下都能很好地工作,但是对于所有没有单一名称空间的情况,都会发生冲突。在PATH中,可能有许多同名的项位于不同的路径中。在正常使用中,这不是问题;PATH是有序的,并且它的每个部分都是唯一的不可能发生冲突的目录。对于哪个可执行文件将“获胜”,永远没有不确定性,whichshell程序将报告“哪个”路径具有优先权。

但是,除非您习惯于在执行任何命令之前定期运行which,或者只运行具有绝对路径名的命令,否则可能会有意外;如果有人将可执行文件放在PATH中比您预期要运行的更早的位置,则需要先执行。path_overrides将报告稍后在PATH中重写different命令的任何命令。注意,从/usr/bin/bin中程序的符号链接非常常见;因为它们表示“相同的命令”,所以path_overrides将忽略这些符号链接。

示例

这是在OSX机器上运行的path_overrides,当前在VirtualEnv中工作。如果安装了blessings,则输出将着色。

ben$ path_overrides
/Users/ben/.virtualenvs/path_overrides/bin/python overrides /usr/bin/python
/Users/ben/.virtualenvs/path_overrides/bin/easy_install overrides /usr/bin/easy_install
/Users/ben/.virtualenvs/path_overrides/bin/python2.7 (python) overrides /usr/bin/python2.7 (../../System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7)
/Users/ben/.virtualenvs/path_overrides/bin/easy_install-2.7 overrides /usr/bin/easy_install-2.7
/Users/ben/.virtualenvs/path_overrides/bin/pip overrides /usr/local/bin/pip
/Library/Frameworks/Python.framework/Versions/3.4/bin/2to3 (2to3-3.4) overrides /usr/bin/2to3
/usr/bin/ndisasm overrides /usr/local/bin/ndisasm (../Cellar/nasm/2.11.02/bin/ndisasm)
/usr/bin/2to3 overrides /usr/local/bin/2to3 (../../../Library/Frameworks/Python.framework/Versions/3.4/bin/2to3)
/usr/bin/nasm overrides /usr/local/bin/nasm (../Cellar/nasm/2.11.02/bin/nasm)
/usr/local/bin/libpng-config (../Cellar/libpng/1.6.10/bin/libpng-config) overrides /opt/X11/bin/libpng-config (libpng15-config)
/usr/local/bin/fc-match (../Cellar/fontconfig/2.11.1/bin/fc-match) overrides /opt/X11/bin/fc-match
/usr/local/bin/fc-list (../Cellar/fontconfig/2.11.1/bin/fc-list) overrides /opt/X11/bin/fc-list
/usr/local/bin/fc-cat (../Cellar/fontconfig/2.11.1/bin/fc-cat) overrides /opt/X11/bin/fc-cat
/usr/local/bin/fc-cache (../Cellar/fontconfig/2.11.1/bin/fc-cache) overrides /opt/X11/bin/fc-cache
/usr/local/bin/fc-scan (../Cellar/fontconfig/2.11.1/bin/fc-scan) overrides /opt/X11/bin/fc-scan
/usr/local/bin/freetype-config (../Cellar/freetype/2.5.3_1/bin/freetype-config) overrides /opt/X11/bin/freetype-config
/usr/local/bin/fc-validate (../Cellar/fontconfig/2.11.1/bin/fc-validate) overrides /opt/X11/bin/fc-validate
/usr/local/bin/fc-query (../Cellar/fontconfig/2.11.1/bin/fc-query) overrides /opt/X11/bin/fc-query
/usr/local/bin/fc-pattern (../Cellar/fontconfig/2.11.1/bin/fc-pattern) overrides /opt/X11/bin/fc-pattern

选项

在大多数情况下,{TT1}$不需要提供任何选项,但是存在一些情况,例如检查备用根内的路径(例如,当构建另一个ChooT文件系统时)。

在这种情况下,可以将显式路径作为参数提供给--path参数。还可以通过--path-sep参数提供默认路径分隔符的替代项(例如posix系统上的“:”,windows上的“;”)。最后,可以指定一个--root-dir路径,将所有路径元素都视为本地路径。请注意,--root-dir值不会包含在path_overrides给出的输出中;假设调用程序/用户知道这一点,并且更简明的信息是可取的。

以下示例显示了所有这些选项的用法:

$ mkdir -p ~/bin ~/sbin
$ touch ~/bin/{x,y} ~/sbin/{x,y}
$ chmod +x ~/bin/{x,y} ~/sbin/{x,y}
$ path_overrides --path-sep=' ' --path='/bin /sbin' --root-dir='~'
/bin/y overrides /sbin/y
/bin/x overrides /sbin/x

帮助

使用--help参数获得帮助;使用--version报告path_overrides的版本:

Usage: path_overrides [-h] [--version] [-p PATH] [--path-sep PATH_SEP]
                      [--root-dir ROOT_DIR]

Display executables in the PATH which override other (different) programs
later in the PATH

optional arguments:
  -h, --help            show this help message and exit
  --version             show program's version number and exit
  -p PATH, --path PATH  provide custom PATH value directly rather than from
                        environment
  --path-sep PATH_SEP   path separator; defaults to system default
  --root-dir ROOT_DIR   assumed root of PATH if given

@代码结构2014-2015

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java数据不显示在FXML表中   java如何使整个JTable不可编辑   Java中的swing JTree JTable组合   Windows下的java诊断NIO DatagramChannel读取问题   java Dockerfile运行可执行文件   java手动初始化字节数组以测试更改   java Selenium Webdriver | DragAndDrop功能|也不例外,但代码不起作用   java Hibernate使用多对多关系和左连接多次加载同一实体?   java正在努力开发带有接口和泛型集的API   mongodb mongo java条件和如果不为null   Java程序不显示使用arduino ethernet shield在网页上发送的数据   java将JSONObject转换为JSONArray错误   java Box布局可以接受包含元素的大小吗?