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

时间:2016-01-13 23:56:17

标签: python linux shell

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

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

我努力搜索Google,因为我并不完全了解要搜索的内容,而且结果与我的请求无关。我确实找到了cmd Python模块并学习了如何创建cmd解释器,但是,为了让我能够访问我在cmd解释器中定义的命令,我必须首先启动脚本,正如我上面解释的那样,不是我的意思。寻找。

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

2 个答案:

答案 0 :(得分:4)

如果你正在使用Python,你仍然需要启动解释器,但你可以自动完成。

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

chmod +x script-name.py
ls -l script-name.py

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

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

现在在脚本文件的顶部添加一个interpreter directive行 - 这告诉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 module添加命令行参数,例如这样您就可以运行script-name.py time来执行time()功能
  • 将脚本放在系统范围的路径中,例如/usr/local/bin
  • export PATH=$HOME/bin:$PATH行添加到.bashrc,以便在您登录时默认发生

答案 1 :(得分:1)

上面的答案比我的更完整,更丰富。我只是想提供一个快速而又脏的选择。

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

就像我说的那样,又快又脏。