
Ubuntu日本語フォーラム

ログインしていません。
Ubuntuではなくスクリプトの質問になってしまうのですが
コードでスクリプトを実行中の端末をもう一つ立ち上げてその端末にコマンドを実行させることはできますか?
詳しくいいますと、
スクリプトに端末を起動させるコードを書くとします。
echo "端末を起動します"
gnome-terminal
そしてこの起動した端末にコマンドを自動で入力するように設定したいです。
sudo apt-get install ○○
と
つまり端末は2つ使用し
一つはスクリプト起動中、もう一つはそのスクリプトで呼び出されたもので、コードの指示にしたがってコマンドを実行中
というふうにしたいです。
普通でしたら
echo "インストールします"
sudo apt-get install ○○
というコードを書けばできますが
今回は指定したコマンドを新しく立ち上がった端末に実行する
というふうにしたいです。
これは実現可能でしょうか?
オフライン
私の知る範囲では、不可能です。
パイプ(echo "sudo apt-get autoremove" | gnome-terminal)もできませんし。
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
オフライン
すみません。
インストールという言い方が悪かったですね。
私がしたかったのは常に端末内に表示されているようにすることです。
(lessコマンドのように端末内にデータを表示するように)
端末1 シェル実行中
↓端末を開いて以下のコマンドを実行する(コード)
端末2 コードに従ってコマンド実行中(端末1のシェルにより開かれた)
このようにしたいです。
xtermだと背景が白くて端末と同じようにうまくいかないことがあります。
試してみましたがパスワード入力後、すぐにウィンドが閉じてしまいました。
オフライン
やはりすこしわかりませんが?
ようするに、コード実行中にほかのコマンドを実行できる状態にしたいのでしょうか?
あの、↑なら提案で、逆にしてみてはどうでしょうか?
シェルスクリプトに、
gnome-terminal sudo apt-get autoremove
で、元の端末でコードを実行し、
新しい端末を開く。
これは、
$ gnome-terminal $
のように、実行後にすぐ制御が帰ってくる性質を利用したものです。
オフライン
分かりにくかったですか、すみません。言い方を少し変えます。
一つ目の端末でスクリプトを実行します。
yes/noと聞かれるのでyesを打ってEnter
すると新しい端末が開かれて、その開いた端末が勝手にnautilusコマンドを実行してhomeフォルダを開きます。
一つ目の端末はスクリプト実行中二つ目の端末はnautilusコマンド実行中
というふうにしたいです。
nautilusコマンドは開かれたウィンドを閉じないと端末内には書き込むことができませんよね?
スクリプト実行中の端末でそれを行ってしまうと、ウィンドを閉じるまでスクリプトが進みません。
今回、私がしたいことはnautilusのように×ボタンで閉じれば終わる、というものではなく
Ctrl+cで強制終了しないと終わらないコマンドです。
スクリプト実行中の端末で使ったらコマンドを終了するためにCtrl+cを使うため、スクリプトの実行も中止されてしまいます。
オフライン
>>6
nautilus は閉じなくてもスクリプトに制御がもどりますけど?
それとも nautilus は例ですか?
>>1 の回答例としてこんなのはどうでしょう
スクリプト中でサブスクリプトを作成し新しく起動するターミナルに渡してみました
#!/bin/sh echo "start main process." # commands for sub terminal cat <<_EOT_ > sub.sh echo "start sub process" sleep 5 exit _EOT_ # gnome-terminal --command "sh ./sub.sh" echo "end main process."
xubuntu で書いてるので gnome-terminal が動くか心配ですけど
オフライン
gnome-terminalにオプションをつけたらできました。
ありがとうございます。
もうひとつだけうまくいかないことがあるのですが
mkdir aaa
rm -rf aaa
というコードを書いてもaaaというファイルはhomeに作成されるのですがaaaを削除することができません。
echo "aaaを作成します" mkdir aaa echo "aaaを削除します" rm -rf aaa
コードをこの様にしても自動で作成はされるが削除はされません。
なぜでしょうか?
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
オフライン
kiyopさんの--commandを始めて知りました。manなんて発想がなかったです。
まとめると、
シェルスクリプトで、
gnome-terminal --command='gksudo nautilus'
nautilus
みたいな形ですか?それとも、
gnome-terminal --command='gksudo nautilus'
gnome-terminal --command='nautilus'
sudo apt-get autoremove
echo "インストールしました。"
みたいな形ですか?
オフライン
kiyopさん
homeは普通のホームフォルダのことです。
/home/ユーザー名/ aaa
というふうに作りたいのですがユーザー名は人によって違うので
mkdir aaa
rm -rf aaa
にして普通の端末のコマンドと同じようにしたのですが作成はされますが削除は自動で行ってくれませんね
オフライン
えっと、
cd aaa
rm *
cd ../
rmdir aaa
のほうがいいかもしれません。
たぶん、少し趣旨が違うので、聞き流してくれてけっこうです。
(参考になれば嬉しいです。)
オフライン
削除されました。
ありがとうございます。
最後に一つ質問なんですが
スクリプト内にサイトを埋め込むことはできますか?
スクリプトを端末内で実行すると
$./test.sh
----------------------------------------
これは ○○によって作成されました
Blog: ○○(タイトル名)
----------------------------------------
(省略)
このように映り
ブログのタイトルをクリックするとFirefox等が開かれてサイトにジャンプする
というのを作成してみたいのですが
これは可能なことでしょうか?
オフライン
echo http://dshgfbcdmskaletrgkj.com/
として、右クリックで開くみたいな方法か、
以下をgedit 等で.shで実行権限を付けて実行してみてください。
echo "pc944のホームページを見ますか?" echo -n "yでジャンプします。>" read pc944 case $pc944 in y) firefox http://fghdsjfhdsmkeg.com/ ;; *) ;; esac
ただし、firefoxが入ってないと、実行されませんが・・・
オフライン
かなり外れた話題ですが、
http://pc944.mad.buttobi.net/plymouth-setting.sh
↑手作りのPlymouth設定ツールです。上のリンクを開くかどうかのときと同じ分岐を使っています。
よければ、10.04がリリースされてから使ってみてください。
(10.04のBetaバージョンで出来ることを確認しています。
私は、メニューに
gnome-terminal --command='sh ./plymouth-setting.sh' --hide-menubar --title='Plymouth設定ツール'
として10.04のBetaに登録しています。)
オフライン
できえば入力して、ではなくタイトルをクリックしてサイトにジャンプするというふうにしたいです。
削除方法は
cd aaa
rm *
cd ../
rmdir aaa
でできました。
rm -rfでは無理でしたが
rmdirでは削除されました。
Plymouth設定ツールに関しては情報ありがとうございます。
オフライン
え~難しいですね。
私の知識に限界が来ているようなきがします。
端末自体のプログラムで、リンクを作ってくれるものがなければ、
自分で端末のプログラムをいじって再コンパイルとかで、
リンク用の命令を組み込むなどしないと不可能だと思います。
ホームページで配布するなら、無理でしょうね~。
あと、Pythonなどでならできるかもしれませんけど。
あと、
-----------------------------------------------------------
このスクリプトはpc944が作りました。
詳しくはホームページをご覧ください。
http://sdgfhjnmkdsjfgjnvkdf.com/
-----------------------------------------------------------
のように書けば、著作権とかも分かりますし、
アドレスぐらいなら、ユーザーからして、あえて、リンクなしのほうがいいかもしれません。
(重いパソコンで、タッピングありの状態で間違ってタップしたときの辛さは・・・)
ユーザーもLinuxを使っているような人だから、アドレスをコピー&ペーストとかはむこうでしてくれると思います。
最後に:もう、私には、リンクを貼るのは分からないので、すいません。
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
オフライン