从 Linux 命令行调用脚本级 Python 函数

Jus*_*ack 3 python linux shell

如何为我的 Linux 服务器创建功能和软件?让我更详细地解释一下。

因此,对于我使用 SSH 客户端访问的 Linux 服务器,我制作了一些可以正常工作的 Python 脚本,但我真正想做的是让这些 Python 脚本始终处于活动状态,以便我可以执行我已经执行的功能只需在命令行中键入“time”即可在脚本中创建(例如“def time(): ...”),而不是使用 ./script-name.py 启动脚本,然后键入“time”。我需要以某种方式将 Python 文件安装到系统中吗?

我在谷歌上搜索很困难,因为我不完全明白要搜索什么,而且出现的结果与我的请求并不真正相关。我确实找到了 cmd Python 模块并学习了如何创建 cmd 解释器,但是,为了让我访问我在 cmd 解释器中定义的命令,我必须首先启动脚本,正如我上面解释的那样,而不是我的脚本寻找。

如何使脚本级 Python 函数可从 Linux 命令行调用?

z0r*_*z0r 6

如果您使用 Python,您仍然需要启动解释器,但您可以使其自动发生。

首先使您的脚本可执行。在 shell 中运行此命令:

chmod +x script-name.py
ls -l script-name.py
Run Code Online (Sandbox Code Playgroud)

的输出ls应如下所示(注意x左栏中的 s):

-rwxr-xr-x  1 me me     4 Jan 14 11:02 script-name.py
Run Code Online (Sandbox Code Playgroud)

现在在脚本文件的顶部添加一个解释器指令行 - 这告诉 shell 运行 Python 来解释您的脚本:

#!/usr/bin/python
Run Code Online (Sandbox Code Playgroud)

然后在调用函数的文件末尾添加代码:

if __name__ == '__main__':
    time()
Run Code Online (Sandbox Code Playgroud)

if语句检查这是否是正在执行的文件。这意味着如果您愿意,您仍然可以从另一个 Python 文件导入模块time(),而无需自动调用该函数。

最后,您需要将脚本放入可执行路径中。

mkdir -p $HOME/bin
mv script-name.py $HOME/bin/
export PATH=$HOME/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

现在您应该能够运行script-name.py,并且您将看到该函数的输出time()。您可以将文件重命名为您喜欢的任何名称;您甚至可以删除.py扩展程序。

您可以做的其他事情:

  • 使用argparse模块添加命令行参数,例如,这样您就可以运行script-name.py time来执行该time()函数
  • 将脚本放在系统范围的路径中,例如/usr/local/bin, 或
  • 将行添加export PATH=$HOME/bin:$PATH到您的中.bashrc,以便在您登录时默认发生