Запустить BASH встроенные команды в Python?
Есть ли способ запустить встроенные команды BASH из Python?
Я пробовал:
subprocess.Popen(['bash','history'],shell=True, stdout=PIPE)
subprocess.Popen('history', shell=True, executable = "/bin/bash", stdout=subprocess.PIPE)
os.system('history')
и многих его вариаций. Я хотел бы запустить history
или fc -ln
.
Ответы
Ответ 1
Наконец-то я нашел решение, которое работает.
from subprocess import Popen, PIPE, STDOUT
shell_command = 'bash -i -c "history -r; history"'
event = Popen(shell_command, shell=True, stdin=PIPE, stdout=PIPE,
stderr=STDOUT)
output = event.communicate()
Спасибо всем за вход.
Ответ 2
subprocess.Popen(["bash", "-c", "type type"])
это вызывает bash и сообщает bash запустить строку type type
, которая запускает встроенную команду type
в аргументе type
.
вывод: type is a shell builtin
часть после -c
должна быть одной строкой. это не сработает: ["bash", "-c", "type", "type"]