web-dev-qa-db-ja.com

bashをPythonに置き換えるにはどうすればよいですか?

このSO質問の受け入れられた回答によると、 Pythonはbashの優れた置き換えを行うことができます

私の質問はこれです:シームレスなスイッチを作るにはどうすればいいですか?そのようなスイッチを作るために整理する主なことは、仮想端末を起動するときに、Bourne Shellのようなものではなく、いくつかのPython Shell(what?))を呼び出すことだと思います。

それは理にかなっていますか?はいの場合、どうすればそれを実行できますか?この一般的なシェルのWikipedia比較では、単一のリストは表示されませんPythonシェル: コマンドシェルの比較

13
user89

そのスレッドとその受け入れられた答えは、特に、Python for Shellscriptinginteractiveシェル。

別の言語でスクリプトを書くには、たとえば#!/usr/bin/env python の代わりに #!/bin/bashスクリプトの上部にあります。

別のインタラクティブシェルを試してみたい場合は、実行してください。既存のシェルプロンプトでipythonと入力します。そのシェルを採用することに決めた場合は、セッションの開始時にShell環境変数を設定します(~/.profileほとんどの環境、または~/.pam_environment)、例えばexport Shell=/usr/bin/ipython.profile構文)またはShell="/usr/bin/ipython".pam_environment構文)。

PerlやPythonなどの高度な言語に基づいて私が見たシェルはどれも、私の意見ではインタラクティブな使用には十分ではありません。一般的なタスク、特に一般的なジョブには冗長すぎますアプリケーションを起動するシェルの私 4年前に同様のトピックについて書いた ;それ以来、状況は根本的に改善されていないと思います。

私はこの質問がかなり古いことを知っていますが、Python 3のスーパーセットに基づく新しいシェルがあり、これはあなたが探しているものかもしれません。

ウェブサイトから:

Xonshは、Python風でBASHwardsに見えるシェル言語であり、コマンドプロンプトです。この言語は、Python 3.4+のスーパーセットであり、BashやIPythonで使用されている追加のシェルプリミティブが含まれています。Linux、Mac OSX、Windowsを含むすべての主要なシステムで動作します。Xonshは同様に専門家と初心者の日常的な使用のため。

xon.shで参照

14
Ian Sudbery

むしろ

その理由は、Pythonは昇格された特権の処理をサポートしていないためです。最悪のケースは、システムファイルの編集です。

比較する

_Sudo sed -i -e "/\#LXC_DOMAIN/ s/\#//" /etc/default/lxc-net_

と:

out = subprocess.run('''Sudo sed -i -e "/\#LXC_DOMAIN/ s/\#//" /etc/default/lxc-net''', Shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT,env={"PATH": "/usr/bin"})

Pythonは本質的に昇格された特権でサブコマンドを実行することができないため、システムファイルに対してPythonのネイティブファイル処理を使用することはできません。

2
Adam Ryczkowski

Ipython は問題ありません。また、「os」ライブラリも確認してください。

1
user400344