คำถามเก่าฉันเห็น แต่ในสถานการณ์ที่คล้ายคลึงกันในขณะนี้ ฉันมักจะใช้sudo aptitude install -P PACKAGE_NAME
สิ่งที่ถามก่อนติดตั้งเสมอ อย่างไรก็ตามในตัวจัดการแพ็คเกจเริ่มต้นของ Debian คือตอนนี้apt|apt-get
และมันไม่มีฟังก์ชั่นนี้ แน่นอนฉันยังคงสามารถติดตั้งaptitude
และใช้งานได้ ... อย่างไรก็ตามฉันได้เขียน sh / bash wrapper function / script ขนาดเล็กสำหรับapt-get
ถามก่อนการติดตั้ง มันดิบจริงๆและฉันเขียนมันเป็นฟังก์ชั่นในสถานีของฉัน
$ 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 () {
# 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
}
ในการใช้ฟังก์ชั่นนี้เป็นสคริปต์ sh / bash เพียงแค่สร้างไฟล์สคริปต์เช่นmy_apt-get.sh
กับเนื้อหา (หมายเหตุ: รายชื่อไม่มีความคิดเห็นเพื่อให้สั้นลงเล็กน้อย ;-)):
#!/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 "$@"
แล้วใส่มันสำหรับเช่นในและทำให้มันปฏิบัติการด้วย~/bin/
$ chmod u+x ~/bin/my_apt-get.sh
หากไดเรกทอรี~/bin
รวมอยู่ในPATH
ตัวแปรของคุณคุณจะสามารถดำเนินการได้โดย:
$ my_apt-get.sh PACKAGE_NAME(S)_TO INSTALL
โปรดทราบ:
sudo
รหัสไม่ใช้ หากคุณใช้root
บัญชีคุณอาจต้องปรับเปลี่ยน
- รหัสไม่รองรับการเติมข้อความอัตโนมัติของเปลือก
- ไม่รู้ว่าโค้ดทำงานอย่างไรกับรูปแบบของเชลล์ (เช่น "!", "*", "?", ... )