创建 Python 脚本以在 Linux 中打开新终端并运行命令

这篇具有很好参考价值的文章主要介绍了创建 Python 脚本以在 Linux 中打开新终端并运行命令。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


Linux 操作系统以其程序员广泛使用的多功能终端而闻名。 但在某些情况下,我们会发现自己重复编写同一组语法,这可能既无聊又耗时。

你有没有想过是否有一种方法可以在文件中预先编写 Linux 命令,然后在终端中立即执行? 是的! 你可以。

您可以在文件中编写预先编写的终端语法,并通过编写 Python 脚本一次性执行。 本文介绍了如何创建一个 Python 脚本来为我们打开一个新的终端并运行一个命令。


创建在 Linux 中打开新终端并运行命令的 Python 脚本

在我们开始之前,让我们修改一些基础知识。 Python 脚本在命令行界面中通过定位文件然后运行来执行。 这些文件被执行并显示输出。

有很多方法可以创建 Python 脚本来打开新终端并运行命令。 第一个示例展示了如何创建一个 Python 脚本,该脚本通过 Linux 命令来检查系统内部的 Python 版本。


在 Linux 中创建 Python 脚本来检查 Python 版本

如果需要在终端直接写命令查看Python版本,使用如下语法:

python3 --version

其中显示系统内部的 Python 版本,如下所示:

jay@jay-virtual-machine:~$ python3 --version
Python 3.10.6

这是命令行语法,这意味着它只能在终端中编写。 如果希望将其作为纯文本写入扩展名为 .py 的文本文件(例如:test.py),则会导致错误。

python3 --version

输出:

jay@jay-virtual-machine:~$ python3 test.py
Traceback (most recent call last):
  File "/home/jay/test.py", line 1, in <module>
    python3 --version
NameError: name 'python3' is not defined

必须创建一个 Python 脚本,使语法对 Python 编译器和终端都有意义,才能解决这个问题。

要创建 Python 脚本以打开新终端并运行命令,请创建一个扩展名为 .py 的文本文件并编写以下语法:

import os
My_Cmmnd="python3 --version"
os.system("gnome-terminal -e 'bash -c \""+My_Cmmnd+";bash\"'")

代码有什么作用?

  1. 在第一行代码中导入了 Python 模块 os。 该模块有助于将命令传递给操作系统。
  2. 需要执行的命令行语法存储在名为 My_Cmmnd 的变量中。 此示例中使用的语法检查系统的 Python 版本。
My_Cmmnd="python3 --version"
  1. 第三行代码向系统发送命令。
os.system("gnome-terminal -e 'bash -c \""+My_Cmmnd+";bash\"'")

上面的代码片段执行以下操作:

  1. os.system() 启动子 shell 并执行括号内的命令。
  2. gnome-terminal 命令在 Linux 操作系统中启动一个新的 gnome-terminal。
  3. 变量 My_Cmmnd 的内容作为 Bash 命令发送到新终端执行。

该脚本执行语法并显示所需的输出。

Python 3.10.6
jay@jay-virtual-machine:~$

使打开的终端保持活动状态并在其中运行命令的 Python 脚本

最后一个示例展示了如何创建一个 Python 脚本来打开一个新终端并通过将命令存储在一个变量中来运行命令。

另一方面,如果语法是单行命令,则可以直接输入而不将其存储在变量中。 创建一个扩展名为 .py 的文件并编写以下语法:

import os
os.system("gnome-terminal -e 'bash -c \"python3 --version\" '")

上面的语法启动一个新的终端并执行命令。 但是使用此方法会在执行命令后立即关闭终端。

解决此问题需要使用以下命令放置一个睡眠计时器:

import os
os.system("gnome-terminal -e 'bash -c \"python3 --version; sleep 5\" '")

上述语法使新终端保持打开状态 5 秒,但可以根据要求增加。 如果终端需要无限期保持活动状态,请使用以下语法。

import os
os.system("gnome-terminal -e 'bash -c \"python3 --version; bash\" '")

这使终端保持打开和活动状态,直到它被用户关闭。


在 Linux 中使用 Python 子模块 subprocess() 将命令传递到新终端

我们学习了如何创建一个 Python 脚本来打开一个新终端并使用 Python 子模块 os 运行命令。 尽管不再推荐使用这个内置库将命令传递到终端。

这是因为 os 在较新版本的 Python 中已被弃用。 为避免安全风险,必须改用Python子模块subprocess。

要创建 Python 脚本以打开新终端并使用子进程运行命令,请创建一个与前面示例类似的扩展名为 .py 的文件,并在其中写入以下代码:

import subprocess

My_Cmmnd = "ls"

process = subprocess.Popen(
    "gnome-terminal -e 'bash -c \""+My_Cmmnd+";bash\"'",
    stdout=subprocess.PIPE,
    stderr=None,
    shell=True
)

UNIX 命令 ls 列出当前目录中的文件。 因此,如果运行此命令,则会显示当前目录中的文件列表。

首先导入 subprocess() 模块; 然后,命令存储在一个变量中。 在名为 process 的变量中,参数是为 subprocess() 定义的。

subprocess.Popen 构造函数在读取 gnome-terminal -e 语法时在新的 gnome-terminal 中启动子进程。 最后,Python 脚本打开一个新终端并运行命令。

输出:

jay@jay-virtual-machine:~$ python3 test.py
Desktop    Downloads  Pictures	snap	   test2.py  Videos
Documents  Music      Public	Templates  test.py

要了解 Linux shell 提供的一些其他功能,让我们探索使用 subprocess() 将参数发送到 shell。 例如,下面程序中的命令 ls -la 会列出所有元数据和隐藏文件。

import subprocess

My_Cmmnd = "ls -la"

process = subprocess.Popen(
    "gnome-terminal -e 'bash -c \""+My_Cmmnd+";bash\"'",
    stdout=subprocess.PIPE,
    stderr=None,
    shell=True
)

输出:

linux新建python脚本,编程,Python 实用技巧,Linux,python,linux,开发语言

当参数传递给 shell 时,此命令作为字符串执行。 结果,shell 在开始执行我们的 subprocess() 时将该字符串解释为命令参数。

上述方法的一个缺点是,当使用 shell=true 显式调用 shell 时,它会将所有元字符(包括空格)传递给子进程,这在 shell 注入事件中构成威胁。

为避免这种情况,请改用 Python 列表。 使用列表时,要调用的命令位于列表的第 0 个索引处,其他参数紧随其后。

将上一个示例中使用的命令调用为列表。

import subprocess

subprocess.run(['ls', '-la'])

输出:

linux新建python脚本,编程,Python 实用技巧,Linux,python,linux,开发语言

命令的结果也可以通过设置选项 capture_output=True 存储在变量中。

import subprocess

saved_results = subprocess.run(['ls', '-la'], capture_output=True)

print(saved_results.stdout)

输出:

linux新建python脚本,编程,Python 实用技巧,Linux,python,linux,开发语言

可以看到输出显示了想要的结果,但是没有索引,文件名散乱。 发生这种情况是因为系统以字节为单位保存了 ls -la 命令的结果。

要获取字符串形式的结果,请设置选项 text=True。

import subprocess

saved_results = subprocess.run(['ls', '-la'], capture_output=True, text=True)

print(saved_results.stdout)

输出:

linux新建python脚本,编程,Python 实用技巧,Linux,python,linux,开发语言


总结

本文介绍如何创建 Python 脚本以打开新终端并运行命令。 阅读本文的读者将能够创建一个 Python 脚本来打开一个新终端并在 Linux 中轻松运行命令。文章来源地址https://www.toymoban.com/news/detail-759957.html

到了这里,关于创建 Python 脚本以在 Linux 中打开新终端并运行命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Pycharm——在终端terminal运行python命令没有反应

    在运行django项目时,在terminal使用\\\"python manage.py runserver\\\"命令,但是没有反应,在排除不是路径没有和manage.py同目录的情况下,我怀疑是python.exe有问题。 先去cmd中运行命令\\\"python\\\",结果电脑自动打开应用商店,说明我的python环境变量有问题。 在cmd运行\\\"where python\\\",可以看到多了

    2024年02月03日
    浏览(56)
  • 【python】flask各种版本的项目,终端命令运行方式的实现

    ✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN新星创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开

    2024年03月27日
    浏览(42)
  • 【Python】在代码中执行终端命令并获取输出和运行状态

      在Python编程过程中,我们可能会遇到需要在终端命令行执行某个命令并获取其输出的操作,我们首先想到可能就是C语言中的 system(\\\"pause\\\"); 语句,确实,python当中也有类似的命令,同时,为了满足进一步的需求,比如判断指令是否执行完毕或者是得到执行输出的内容。  

    2024年02月05日
    浏览(54)
  • Linux 查询正在运行的shell脚本命令

    1.查看当前运行的所有进程。 ps -A 2.如果太多了找不到,看的眼花,可以加条件 grep是分组 查看正在运行的shell脚本的进程shell脚本就是 sh ps -ef |grep  sh 如图下面就是查询出来的所有sh脚本,看第三列就是脚本的进程UID,直接杀死UID就行    3.杀死进程UID kill  4491 如图 直接杀

    2024年02月12日
    浏览(50)
  • 【Linux】Shell脚本中获取命令运行的结果

    写shell脚本的时候,常需要将一个命令的运行结果做为参数传递给另外一个命令,除了我们熟知的管道 | 和args,我们也可以通过获取命令的运行结果。 执行结果: 来点复杂的应用: 再比如: 😉 运行结果: 把反引号``换成$()即可 反引号不支持嵌套,而 $ 支持嵌套。 举个例

    2024年02月11日
    浏览(40)
  • 解决ubuntu桌面无法打开终端命令行

    打不开终端命令行,主要就是和语言设置有关系 首先用ctrl+alt+f2进入命令界面,输入root,密码登录管理员账号 然后找到语言文件 最后一行加上以下语句后保存 重启后就可以了

    2024年02月11日
    浏览(43)
  • 当你打开终端并输入命令时会发生什么?(下)

    哈喽大家好,我是咸鱼 我们先来大致回顾一下文章《当你打开终端并输入命令时会发生什么?(上)》的内容 终端设备是由电传打字机演变过来的,电传打字机通过物理线与大型计算机连接在一块来实现输入输出 如上图,分别是二战时期的电传打字机和西门子 “Fernscheiber

    2024年02月04日
    浏览(36)
  • 当你打开终端并输入命令时会发生什么?(上)

    哈喽大家好,我是咸鱼 参加过校招面试的小伙伴们肯定对下面这道面试题很熟悉:“当你在浏览器输入一段网址后会发生什么?”。这道面试题可以说是很经典了,因为其涉及大量网络协议,可以非常直观的看出小伙伴们对计算机网络体系的整体把握程度 但如果问题换成:

    2024年02月05日
    浏览(29)
  • PyCharm终端中无法加载文件,因为在此系统上禁止运行脚本。

    无法加载文件 E:pythonProjecttag_recommendvenvScriptsactivate.ps1,因为在此系统上禁止运行脚本。 原因:Windows系统默认禁止运行脚本。 解决方案: ①打开PowerShell并以管理员身份运行。 ②输入以下命令来查看当前PowerShell的执行策略:Get-ExecutionPolicy 如果策略是Restricted,则表示Po

    2024年02月11日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包