特定のコマンドが終了するたびにコマンドを自動的に実行するにはどうすればよいですか?

特定のコマンドが終了するたびにコマンドを自動的に実行するにはどうすればよいですか?

例:add-apt-repositoryプロセスが終了したら、apt-get updateコマンドを手動で入力せずにすぐに実行します。

これを行う方法はありますか?sudoパスワードを使用せずにこのような組み合わせを設定することは可能ですか?(どちらでも構いませんが)

私は次のことを尋ねています:2つのコマンドをリンクして、特定のコマンドを実行するたびに、いつもその後にリンクされたコマンドを実行しますか?

答え1

いつものように、

sudo bash -c "command1; command2"

command1 が正常に完了した後にのみ command2 を実行する場合は、&&ではなくas を使用できます;

sudo bash -c "command1 && command2"

例として、次のコマンドを使用します。

sudo bash -c "add-apt-repository <repo> && apt-get update"

答え2

エイリアスや単純な bash 関数を使用してこれにフックするとさまざまな問題が発生しますが、コマンドの小さなラッパーを記述して、/usr/local/binパスで優先されるものに挿入することができます。

これはスクリプトを作成し、同時に chmod するちょっとしたコツ実行可能な
ラッパー スクリプトを にダンプします。/usr/local/bin/add-apt-repository

sudo install -b -m 755 /dev/stdin /usr/local/bin/add-apt-repository << 'EOF'
#!/bin/sh
/usr/bin/add-apt-repository "$@"
apt-get update
EOF 

これを元に戻すには、 を削除するだけです/usr/local/bin/add-apt-repository

apt-get installもっと実用的なこと(リンクしてインストール前に常に更新するなど)を実行したい場合はapt-get update、スクリプトを拡張して引数を確認するだけです。

sudo install -b -m 755 /dev/stdin /usr/local/bin/apt-get << 'EOF'
#!/bin/sh
if [ "$1" = "install" ] ; then
    /usr/bin/apt-get update
fi
/usr/bin/apt-get "$@"
EOF 

ただし、これはアップデートを実行する前に実行することを考慮してください apt-get install呼び出します。これは便利に思えるかもしれませんが、実際には非常に面倒な作業になる可能性があります。

答え3

特定のコマンドを特定の順序で実行するには、シェル スクリプトを使用します。必要な操作は、Ctrl+ Alt+を押してターミナルを開きT 、次の手順に従うだけです -
1. と入力しますgedit filename.sh
2. このコマンドを入力するとテキスト エディターが開き、必要なコマンドを各行に 1 つずつ入力できます。たとえば、
sudo add-apt-repository
apt-get update
3. すべてのコマンドを入力したら、GUI を使用するか、Ctrl+SCtrl+を押して保存して終了しますQ。4
. ここでターミナルに戻ります。sh filename.shターミナルでを実行すると、コマンドにエラーがなければコマンドが実行されます。また、スーパーユーザー アカウント (root) からログインすると、コマンドを
入力する必要はありません。sudo

答え4

最も簡単な方法は、次のコマンドを実行することです:

sudo add-apt-repository <ppa_name> && sudo apt-get update

最初のコマンドが正常に終了すると、2 番目のコマンドが実行されます。

関連情報