Pertanyaan lama, saya bisa melihat, tetapi dalam situasi yang sama sekarang. Biasanya saya menggunakan sudo aptitude install -P PACKAGE_NAME
, apa yang selalu ditanyakan sebelum menginstal. Namun sekarang di manajer paket default Debian adalah apt|apt-get
dan tidak memiliki fungsi ini. Tentu saja saya masih dapat menginstal aptitude
dan menggunakannya ... Namun saya telah menulis fungsi / skrip wrapper sh / bash kecil apt-get
untuk ditanyakan sebelum instalasi. Benar-benar mentah dan saya menulisnya sebagai fungsi di terminal saya.
$ 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; }
Sekarang, mari kita perjelas:
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
}
Untuk menggunakan fungsi ini sebagai skrip sh / bash cukup buat file skrip misalnya my_apt-get.sh
dengan konten (Catatan: listing tidak mengandung komentar, untuk membuatnya sedikit lebih pendek ;-)):
#!/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 "$@"
Kemudian masukkan untuk misalnya di ~/bin/
dan membuatnya dapat dieksekusi dengan $ chmod u+x ~/bin/my_apt-get.sh
. Jika direktori ~/bin
termasuk dalam PATH
variabel Anda, Anda akan dapat menjalankannya hanya dengan:
$ my_apt-get.sh PACKAGE_NAME(S)_TO INSTALL
Tolong dicatat:
- Kode tidak digunakan
sudo
. Jika Anda menggunakan root
akun, Anda mungkin perlu menyesuaikannya.
- Kode tidak mendukung pelengkapan otomatis shell
- Tidak tahu bagaimana kode bekerja dengan pola shell (mis. "!", "*", "?", ...)