pianobar
プレーヤーを使用しています。ただし、起動する前に、tor
とpolipo
を実行する必要があります。両方とも継続的です(中断されるまで実行されます)。基本的に私が探しているのは、tor
およびpolipo
プロセスを生成し(それらの出力は必要ありません)、フォアグラウンドでピアノバーを開く単一のコマンドです。
編集:tor
の開始には数秒かかることが判明しました。これが、提案されたソリューションが最初は機能しなかった理由です。誰かが同じ問題を抱えている場合に備えて、これを投稿します:
function piano {
tor &
polipo &
sleep 3
pianobar &&
killall tor
killall polipo
}
これを.profile
または.bashrc
または.zshrc
、または使用するシェルに入れます。
function mycommand {
tor &
polipo &
planobar
}
そして今、mycommand
を実行するだけです
これがシェルスクリプトの目的です; 1つだけ入力しながら複数のコマンドを実行します。以下は、あなたが求めたことを実行すると私が信じている短いスクリプトです。
#!/bin/sh
tor & tor_pid=$!
polipo & polipo_pid=$!
sleep 5
pianobar
kill $tor_pid
kill $polipo_pid
それをファイル(おそらく$HOME/local/bin/startpiano
)に入れ、chmod +x $HOME/local/bin/startpiano
で実行可能にし、PATH
変数の最後に$HOME/local/bin
を追加します。
これはシェル関数の目的でもあります;論理的に異なるタスクを実行します。次のようなシェル関数を作成できます。
startpiano () {
tor & tor_pid=$!
polipo & polipo_pid=$!
sleep 5
pianobar
kill $tor_pid
kill $polipo_pid
}
これは、特定のシェルのスタートアップファイルの1つに含まれます。
[〜#〜] edit [〜#〜]:編集された質問では、タスクが少し複雑になりすぎたため、エイリアスを使用しないことをお勧めします。ただし、エイリアスに関する元のテキストはそのままにしておきます。
これはエイリアスの目的でもあります;何度も入力する必要のない簡単なことをするために。これは、エイリアスを設定する方法です。
alias startpiano="polipo &; tor &; pianobar"
これも、シェルの初期化スクリプトの1つに含まれます。
これらの3つのソリューションのいずれかを入力すると、
$ startpiano
必要なプログラムを開始します。
シェルスクリプトには、シェル関数とエイリアスに比べて、シェル初期化ファイルに重みを追加しないという利点があります(PATH
変数の末尾にその場所を追加することは別として)。
シェル関数には、後でコマンドライン引数を追加できる(スクリプトにも適用される)というエイリアスよりも優れている点と、読み取り可能である(多くの点で独自の「スクリプト」のように動作する)という利点があります。
エイリアスは機能しますが、実際には、エイリアスの唯一の使用法は、ls
へのコマンドラインフラグなど、指先の利益のために非常に単純なものを短いものに置き換えることです(alias ls="ls -F"
のみ私が持っているエイリアス)。