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

3
如何为我的Linux服务器创建函数和软件?让我详细解释一下。
对于我使用SSH客户端访问的Linux服务器,我已经编写了一些Python脚本,它们能够正常工作。但是,我真正想做的是让这些Python脚本一直处于活动状态,这样我就可以通过在命令行中键入“time”而不是启动一个名为./script-name.py的脚本,然后再输入“time”来执行我在脚本中创建的函数(例如“def time():…”)。我需要以某种方式将我的Python文件安装到系统中吗?
我在谷歌上搜索时遇到了困难,因为我并没有完全理解要搜索什么,而且出现的结果与我的请求并不相关。我确实找到了cmd Python模块,并学习了如何创建cmd解释器,但是,为了访问我在cmd解释器中定义的命令,我必须首先启动脚本,而这正如我上面所解释的,不是我要寻找的。
如何使脚本级别的Python函数可从Linux命令行调用?

1
查找 supervisord,但这个描述非常模糊。 - Javier Buzzi
你可以在.bashrc/etc/profile中添加函数,例如function time () { python /my/dir/my-script.py } - cat
“time”是一个非常糟糕的名称,因为它遮盖了“time”命令,如果要重新使用该命令,您必须键入“\time”。 - cat
2个回答

6
如果您正在使用Python,仍然需要启动解释器,但您可以自动完成这个过程。
首先,使您的脚本可执行。在shell中运行此命令:
chmod +x script-name.py
ls -l script-name.py
< p > ls 的输出应该长这样(注意左列中的 x):

-rwxr-xr-x  1 me me     4 Jan 14 11:02 script-name.py

现在在你的脚本文件顶部添加一个解释器指令行 - 这告诉shell运行Python来解释你的脚本。
#!/usr/bin/python

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

if __name__ == '__main__':
    time()
if语句用于检查是否正在执行此文件。这意味着,即使您希望从另一个Python文件导入模块,也可以避免自动调用time()函数。

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

mkdir -p $HOME/bin
mv script-name.py $HOME/bin/
export PATH=$HOME/bin:$PATH

现在您应该能够运行script-name.py,并看到time()函数的输出。您可以将文件重命名为任何您喜欢的名称;您甚至可以删除.py扩展名。
其他可以做的事情:
  • 使用argparse模块添加命令行参数,例如,这样您就可以运行script-name.py time来执行time()函数
  • 将脚本放置在系统范围内的路径中,如/usr/local/bin,或者
  • export PATH=$HOME/bin:$PATH行添加到您的.bashrc中,这样当您登录时,它就会成为默认设置

2

上面的回答比我的更加完整和详细,我只想提供一种快速而简单的替代方案。

echo "alias time='<your script> time'" > ~/.bashrc
bash

就像我说的那样,快速而简单。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接