Alte Frage, kann ich sehen, aber jetzt in einer ähnlichen Situation. Normalerweise benutze ich sudo aptitude install -P PACKAGE_NAME
, was immer vor der Installation gefragt wird. Allerdings ist jetzt in Debian Standard-Paket-Manager apt|apt-get
und es hat diese Funktionalität nicht. Natürlich kann ich es trotzdem installieren aptitude
und verwenden ... Allerdings habe ich eine kleine sh / bash-Wrapper-Funktion / ein Skript geschrieben apt-get
, um vor der Installation nachzufragen. Es ist wirklich roh und ich habe es als Funktion in mein Terminal geschrieben.
$ f () { sudo apt-get --simulate install "$@" | grep -v '^Inst\|^Conf'; read -p 'Do You want to continue (y/N): ' ans; case $ans in [yY] | [yY][eE][sS]) sudo apt-get -y install "$@";; *);; esac; }
Lassen Sie uns jetzt klarer machen:
f () {
# Do filtered simulation - without lines contains 'Inst' and 'Conf'
sudo apt-get --simulate install "$@" | grep -v '^Inst\|^Conf';
# Interact with user - If You want to proceed and install package(s),
# simply put 'y' or any other combination of 'yes' answer and tap ENTER.
# Otherwise the answer will be always not to proceed.
read -p 'Do You want to continue (y/N): ' ans;
case $ans in
[yY] | [yY][eE][sS])
# Because we said 'yes' I put -y to proceed with installation
# without additional question 'yes/no' from apt-get
sudo apt-get -y install "$@";
;;
*)
# For any other answer, we just do nothing. That means we do not install
# listed packages.
;;
esac
}
Um diese Funktion als sh / bash-Skript zu verwenden, erstellen Sie einfach eine Skriptdatei, z. B. my_apt-get.sh
mit Inhalt (Hinweis: Die Auflistung enthält keine Kommentare, um sie etwas kürzer zu machen ;-)):
#!/bin/sh
f () {
sudo apt-get --simulate install "$@" | grep -v '^Inst\|^Conf';
read -p 'Do You want to continue (y/N): ' ans;
case $ans in
[yY] | [yY][eE][sS])
sudo apt-get -y install "$@";
;;
*)
;;
esac
}
f "$@"
Dann setzen Sie es zB ein ~/bin/
und machen es ausführbar mit $ chmod u+x ~/bin/my_apt-get.sh
. Wenn das Verzeichnis ~/bin
in Ihrer PATH
Variablen enthalten ist, können Sie es einfach ausführen, indem Sie:
$ my_apt-get.sh PACKAGE_NAME(S)_TO INSTALL
Bitte beachten Sie:
- Der Code verwendet
sudo
. Wenn Sie ein root
Konto verwenden, müssen Sie es wahrscheinlich anpassen.
- Der Code unterstützt keine automatische Vervollständigung der Shell
- Haben Sie keine Ahnung, wie der Code mit Shell-Mustern funktioniert (zB "!", "*", "?", ...)