我正在尝试将 python 脚本变成命令,例如:google 的 ipaddr.py(http://code.google.com/p/ipaddr-py/)。我希望能够输入ipaddr
并输出我想要的内容。这可能吗?我尝试使用 使其可执行chmod +x
,然后将其移动到/bin
,但它仍然显示:
No command 'ipaddr' found, did you mean:
Command 'ipmaddr' from package 'net-tools' (main)
Command 'ibaddr' from package 'infiniband-diags' (universe)
ipaddr: command not found
答案1
由于 ipaddr.py 是图书馆为了检查和操作 IP 地址,您要做的第一件事是创建一些对象。您可以使用 ipaddr 从字符串、整数或其他 ipaddr 对象创建对象。
查看以下 wiki 页面中的示例:
http://code.google.com/p/ipaddr-py/wiki/Using3144
根据您的需要,从以下位置安装 Python 包皮皮系统范围内并创建一个python脚本(稍后放入/usr/bin
)可能是使用命令行实用程序的最佳选择地址。
答案2
我对 ipaddr 不太熟悉,所以我只能以问题的标题作为起点,进行一般性回答:
查看您使用的命令(在您的帖子中),您没有使用扩展名.py
。 如果您在命令中没有使用它,您也应该将其从脚本本身中删除(并使其确实可执行)。 我查看了脚本的名称,它是 ipaddr*.py*。
并且:如果您想在 $PATH 之外调用脚本,您还必须在命令中添加路径。
继续:
运行 $PATH 之外的脚本:
调用脚本和语言扩展 -> 脚本名称应包含扩展名:
python /path/script_name.py (works if script is either executable or not)
/path/script_name.py (works only if script is executable, mind the shebang)
调用脚本没有语言扩展:
/path/script_name (only if executable, mind the shebang)
在 $PATH 中运行脚本可以使用语言扩展来完成,但被认为是不好的做法,所以->脚本名称不应包含扩展名,通过以下命令运行它:
script_name (works only if executable, mind the shebang)
当然,在重命名或移动脚本到另一个目录之前,您应该确保该脚本没有从移动它的目录中导入任何内容,并且脚本本身没有被其他脚本调用。
使其变得更加复杂:如果该脚本是其自己目录中更全面的结构的一部分,但您仍想通过其名称单独调用它,您可以在~/bin
( ln-sf
) 中创建指向该脚本的链接。
因此,在此特定情况下:将脚本移至~/bin
,使其可执行,删除其语言扩展,注销并重新登录,然后通过其名称运行它。也就是说,如果正如您的问题所暗示的,该文件是/将是一个可运行的脚本。