
例: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+SとCtrl+を押して保存して終了しますQ。4
. ここでターミナルに戻ります。sh filename.sh
ターミナルでを実行すると、コマンドにエラーがなければコマンドが実行されます。また、スーパーユーザー アカウント (root) からログインすると、コマンドを
入力する必要はありません。sudo
答え4
最も簡単な方法は、次のコマンドを実行することです:
sudo add-apt-repository <ppa_name> && sudo apt-get update
最初のコマンドが正常に終了すると、2 番目のコマンドが実行されます。