【问题标题】:Calling script-level Python functions from the Linux command line从 Linux 命令行调用脚本级 Python 函数
【发布时间】:2016-01-13 23:56:16
【问题描述】:

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

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

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

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

【问题讨论】:

  • 查找supervisord也,这很模糊。
  • 您可以将函数添加到您的 .bashrc/etc/profile,例如 function time () { python /my/dir/my-script.py }
  • time 是一个非常糟糕的名称,因为它会影响 command time 并且要取回它,您必须改为键入 \time。)

标签: python linux shell


【解决方案1】:

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

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

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

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

-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 以便在您登录时默认发生

【讨论】:

    【解决方案2】:

    上面的答案比我的答案更完整,信息更丰富。我只是想提供一个快速而肮脏的替代方案。

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

    就像我说的,又快又脏。

    【讨论】:

      猜你喜欢
      • 2011-12-03
      • 1970-01-01
      • 2011-03-30
      • 2018-05-04
      • 1970-01-01
      • 1970-01-01
      • 2020-03-18
      • 2012-09-11
      • 2019-11-10
      相关资源
      最近更新 更多