如何在每次某個指令終止時自動執行該指令?

如何在每次某個指令終止時自動執行該指令?

範例:add-apt-repository進程終止後,立即運行apt-get update- 無需手動輸入命令。

有沒有辦法做到這一點?是否可以在不使用密碼的情況下設定這樣的組合sudo? (雖然我不介意哪一種)

我要問以下問題:如何將兩個命令連結在一起,以便每當我執行特定命令時,它總是之後執行連結的命令?

答案1

和平常一樣,

sudo bash -c "command1; command2"

如果您只想在命令 1 成功完成後才執行命令 2,則可以使用 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 installapt-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

要以特定順序執行某些命令,需要使用 shell 腳本。您所要做的就是 - 按Ctrl+ Alt+打開終端機T 並按照步驟操作 -
1. 鍵入gedit filename.sh
2. 輸入此命令後,將打開一個文字編輯器,您可以在其中每行鍵入所需的命令。例如,
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

如果第一個命令成功完成,則將執行第二個命令。

相關內容