お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2010-04-24 15:33:17

sony5614
メンバ
登録日: 2009-08-17

シェルスクリプト

Ubuntuではなくスクリプトの質問になってしまうのですが
コードでスクリプトを実行中の端末をもう一つ立ち上げてその端末にコマンドを実行させることはできますか?

詳しくいいますと、
スクリプトに端末を起動させるコードを書くとします。
echo "端末を起動します"
gnome-terminal
そしてこの起動した端末にコマンドを自動で入力するように設定したいです。
sudo apt-get install ○○


つまり端末は2つ使用し
一つはスクリプト起動中、もう一つはそのスクリプトで呼び出されたもので、コードの指示にしたがってコマンドを実行中
というふうにしたいです。

普通でしたら
echo "インストールします"
sudo apt-get install ○○

というコードを書けばできますが
今回は指定したコマンドを新しく立ち上がった端末に実行する
というふうにしたいです。
これは実現可能でしょうか?

オフライン

 

#2 2010-04-24 15:58:32

pc944
メンバ
From: Japan
登録日: 2010-03-03

Re: シェルスクリプト

私の知る範囲では、不可能です。
パイプ(echo "sudo apt-get autoremove" | gnome-terminal)もできませんし。

オフライン

 

#3 2010-04-24 17:10:19

kiyop
拒否
From: http://kiyoandkei.bbs.fc2.com/
登録日: 2010-01-23

Re: シェルスクリプト

※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。

オフライン

 

#4 2010-04-24 18:45:08

sony5614
メンバ
登録日: 2009-08-17

Re: シェルスクリプト

すみません。
インストールという言い方が悪かったですね。
私がしたかったのは常に端末内に表示されているようにすることです。
(lessコマンドのように端末内にデータを表示するように)
端末1 シェル実行中
        ↓端末を開いて以下のコマンドを実行する(コード)
端末2 コードに従ってコマンド実行中(端末1のシェルにより開かれた)
このようにしたいです。
xtermだと背景が白くて端末と同じようにうまくいかないことがあります。
試してみましたがパスワード入力後、すぐにウィンドが閉じてしまいました。

オフライン

 

#5 2010-04-24 19:54:39

pc944
メンバ
From: Japan
登録日: 2010-03-03

Re: シェルスクリプト

やはりすこしわかりませんが?
ようするに、コード実行中にほかのコマンドを実行できる状態にしたいのでしょうか?
あの、↑なら提案で、逆にしてみてはどうでしょうか?
シェルスクリプトに、

コード:

gnome-terminal
sudo apt-get autoremove

で、元の端末でコードを実行し、
新しい端末を開く。
これは、

コード:

$ gnome-terminal
$

のように、実行後にすぐ制御が帰ってくる性質を利用したものです。

オフライン

 

#6 2010-04-24 20:10:27

sony5614
メンバ
登録日: 2009-08-17

Re: シェルスクリプト

分かりにくかったですか、すみません。言い方を少し変えます。

一つ目の端末でスクリプトを実行します。
yes/noと聞かれるのでyesを打ってEnter
すると新しい端末が開かれて、その開いた端末が勝手にnautilusコマンドを実行してhomeフォルダを開きます。
一つ目の端末はスクリプト実行中二つ目の端末はnautilusコマンド実行中

というふうにしたいです。
nautilusコマンドは開かれたウィンドを閉じないと端末内には書き込むことができませんよね?
スクリプト実行中の端末でそれを行ってしまうと、ウィンドを閉じるまでスクリプトが進みません。
今回、私がしたいことはnautilusのように×ボタンで閉じれば終わる、というものではなく
Ctrl+cで強制終了しないと終わらないコマンドです。
スクリプト実行中の端末で使ったらコマンドを終了するためにCtrl+cを使うため、スクリプトの実行も中止されてしまいます。

オフライン

 

#7 2010-04-24 20:43:59

chinajunk
メンバ
From: 越中
登録日: 2009-06-15

Re: シェルスクリプト

>>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 が動くか心配ですけど

オフライン

 

#8 2010-04-25 00:03:24

sony5614
メンバ
登録日: 2009-08-17

Re: シェルスクリプト

gnome-terminalにオプションをつけたらできました。
ありがとうございます。

もうひとつだけうまくいかないことがあるのですが
mkdir aaa
rm -rf aaa

というコードを書いてもaaaというファイルはhomeに作成されるのですがaaaを削除することができません。

コード:

echo "aaaを作成します"
mkdir aaa
echo "aaaを削除します"
rm -rf aaa

コードをこの様にしても自動で作成はされるが削除はされません。
なぜでしょうか?

オフライン

 

#9 2010-04-25 04:35:59

kiyop
拒否
From: http://kiyoandkei.bbs.fc2.com/
登録日: 2010-01-23

Re: シェルスクリプト

※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。

オフライン

 

#10 2010-04-25 04:45:53

kiyop
拒否
From: http://kiyoandkei.bbs.fc2.com/
登録日: 2010-01-23

Re: シェルスクリプト

※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。

オフライン

 

#11 2010-04-25 04:53:13

kiyop
拒否
From: http://kiyoandkei.bbs.fc2.com/
登録日: 2010-01-23

Re: シェルスクリプト

※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。

オフライン

 

#12 2010-04-25 05:08:47

kiyop
拒否
From: http://kiyoandkei.bbs.fc2.com/
登録日: 2010-01-23

Re: シェルスクリプト

※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。

オフライン

 

#13 2010-04-25 12:06:06

pc944
メンバ
From: Japan
登録日: 2010-03-03

Re: シェルスクリプト

kiyopさんの--commandを始めて知りました。manなんて発想がなかったです。
まとめると、
シェルスクリプトで、
gnome-terminal --command='gksudo nautilus'
nautilus
みたいな形ですか?それとも、
gnome-terminal --command='gksudo nautilus'
gnome-terminal --command='nautilus'
sudo apt-get autoremove
echo "インストールしました。"
みたいな形ですか?

オフライン

 

#14 2010-04-25 17:22:54

sony5614
メンバ
登録日: 2009-08-17

Re: シェルスクリプト

kiyopさん
homeは普通のホームフォルダのことです。
/home/ユーザー名/ aaa
というふうに作りたいのですがユーザー名は人によって違うので

mkdir aaa
rm -rf aaa
にして普通の端末のコマンドと同じようにしたのですが作成はされますが削除は自動で行ってくれませんね

オフライン

 

#15 2010-04-25 17:56:49

pc944
メンバ
From: Japan
登録日: 2010-03-03

Re: シェルスクリプト

思いつき。( ̄∇ ̄)
rm -rf aaa
rmdir aaa
ではだめですか?

オフライン

 

#16 2010-04-25 18:02:56

pc944
メンバ
From: Japan
登録日: 2010-03-03

Re: シェルスクリプト

えっと、
cd aaa
rm *
cd ../
rmdir aaa
のほうがいいかもしれません。
たぶん、少し趣旨が違うので、聞き流してくれてけっこうです。
(参考になれば嬉しいです。)

オフライン

 

#17 2010-04-25 20:18:12

sony5614
メンバ
登録日: 2009-08-17

Re: シェルスクリプト

削除されました。
ありがとうございます。

最後に一つ質問なんですが
スクリプト内にサイトを埋め込むことはできますか?

スクリプトを端末内で実行すると
$./test.sh
----------------------------------------
これは ○○によって作成されました
Blog: ○○(タイトル名)
----------------------------------------
(省略)

このように映り
ブログのタイトルをクリックするとFirefox等が開かれてサイトにジャンプする
というのを作成してみたいのですが
これは可能なことでしょうか?

オフライン

 

#18 2010-04-25 21:50:10

pc944
メンバ
From: Japan
登録日: 2010-03-03

Re: シェルスクリプト

echo http://dshgfbcdmskaletrgkj.com/
として、右クリックで開くみたいな方法か、
以下をgedit 等で.shで実行権限を付けて実行してみてください。

コード:

echo "pc944のホームページを見ますか?"
echo -n "yでジャンプします。>"
read pc944
case $pc944 in
y)
firefox http://fghdsjfhdsmkeg.com/
;;

*)

;;

esac

ただし、firefoxが入ってないと、実行されませんが・・・

オフライン

 

#19 2010-04-25 21:57:52

pc944
メンバ
From: Japan
登録日: 2010-03-03

Re: シェルスクリプト

かなり外れた話題ですが、
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に登録しています。)

オフライン

 

#20 2010-04-25 22:00:06

pc944
メンバ
From: Japan
登録日: 2010-03-03

Re: シェルスクリプト

あと、削除はどの方法で再現できましたか?参考までに教えていただきたいです。

オフライン

 

#21 2010-04-25 22:06:06

pc944
メンバ
From: Japan
登録日: 2010-03-03

Re: シェルスクリプト

※Plymouth設定ツールはホームフォルダに置いてください。

オフライン

 

#22 2010-04-25 22:21:12

sony5614
メンバ
登録日: 2009-08-17

Re: シェルスクリプト

できえば入力して、ではなくタイトルをクリックしてサイトにジャンプするというふうにしたいです。

削除方法は
cd aaa
rm *
cd ../
rmdir aaa
でできました。
rm -rfでは無理でしたが
rmdirでは削除されました。

Plymouth設定ツールに関しては情報ありがとうございます。

オフライン

 

#23 2010-04-25 23:15:25

pc944
メンバ
From: Japan
登録日: 2010-03-03

Re: シェルスクリプト

え~難しいですね。
私の知識に限界が来ているようなきがします。
端末自体のプログラムで、リンクを作ってくれるものがなければ、
自分で端末のプログラムをいじって再コンパイルとかで、
リンク用の命令を組み込むなどしないと不可能だと思います。
ホームページで配布するなら、無理でしょうね~。
あと、Pythonなどでならできるかもしれませんけど。
あと、
-----------------------------------------------------------
このスクリプトはpc944が作りました。
詳しくはホームページをご覧ください。
http://sdgfhjnmkdsjfgjnvkdf.com/
-----------------------------------------------------------
のように書けば、著作権とかも分かりますし、
アドレスぐらいなら、ユーザーからして、あえて、リンクなしのほうがいいかもしれません。
(重いパソコンで、タッピングありの状態で間違ってタップしたときの辛さは・・・)
ユーザーもLinuxを使っているような人だから、アドレスをコピー&ペーストとかはむこうでしてくれると思います。
最後に:もう、私には、リンクを貼るのは分からないので、すいません。

オフライン

 

#24 2010-04-25 23:53:25

sony5614
メンバ
登録日: 2009-08-17

Re: シェルスクリプト

わかりました。
ありがとうございます。

オフライン

 

#25 2010-04-26 06:14:07

kiyop
拒否
From: http://kiyoandkei.bbs.fc2.com/
登録日: 2010-01-23

Re: シェルスクリプト

※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。

オフライン

 

Board footer

Powered by FluxBB