ฉันจะเขียนสคริปต์การติดตั้งแอปพลิเคชันเชลล์ได้อย่างไร


39

ไม่มีใครรู้วิธีเขียนเชลล์สคริปต์เพื่อติดตั้งรายการแอปพลิเคชันหรือไม่ เป็นเรื่องยากที่จะต้องติดตั้งแอปพลิเคชันด้วยตนเองทุกครั้งที่ฉันตั้งค่าระบบใหม่

แก้ไข: มันยังถามฉันDo you want to continue [Y/n]?อยู่ มีวิธีในการป้อนสคริปต์yหรือไม่ให้ป้อนข้อมูลหรือไม่


2
เคยมีโปรแกรมที่เรียกว่า 'ใช่' ซึ่งทำเช่นนั้น (มันเขียน 'y' ต่อเนื่องไปยัง STDOUT)
Nathan Osman

คำตอบ:


38

ฉันคาดว่าสคริปต์จะมีลักษณะเช่นนี้:

#!/bin/sh
apt-get update  # To get the latest package lists
apt-get install <package name> -y
#etc.

เพียงแค่บันทึกสิ่งนั้นเช่น install_my_apps.sh เปลี่ยนคุณสมบัติของไฟล์เพื่อให้สามารถเรียกใช้งานได้และรันจากบรรทัดคำสั่งเป็นรูท

( แก้ไข:การ-yบอกapt-getไม่ให้พร้อมท์คุณและทำการติดตั้งต่อไป)


จะทำให้มันใช้งานได้อย่างไร ฉันคิดว่าฉันจะใช้มันเหมือน: sudo ./install_my_apps.sh
jumpnett

ฉันไม่แน่ใจว่าจำเป็นหรือไม่ที่จะต้องทำให้มันใช้งานได้ (ฉันเป็น Python guy, ไม่มากใน BASH) chmod +x ./install_my_apps.shแต่ถ้าคุณต้องก็สามารถทำปฏิบัติการด้วย
Michael Crenshaw

หรือคลิกขวาบนมันเลือก "Properties" ในหน้าต่างที่เปิดขึ้นไปที่แท็บ "การอนุญาต" และทำเครื่องหมายในช่องที่ระบุว่า "อนุญาตให้เรียกใช้ไฟล์เป็นโปรแกรม"
jfoucher

6
ฉันไม่รู้ว่าทำไมนี่คือ CW แต่ฉันก็แก้ไขเพื่อนำ-yแฟล็ก หมายเหตุ: หากคุณต้องการที่จะทำให้มันดูชัดเจนคุณสามารถใช้--yesหรือในสถานที่ของ--assume-yes -y
Umang

20

ตามคำถามของคุณสคริปต์ที่ง่ายที่สุดก็คือ:

#!/bin/sh
LIST_OF_APPS="a b c d e"

aptitude update
aptitude install -y $LIST_OF_APPS

aptitude update && aptitude install -y a b c d eแต่คุณยังสามารถป้อน ดังนั้นคำถามของคุณอาจขาดจุดสำคัญที่นี่ หากมีข้อกำหนดเพิ่มเติมคุณควรอธิบายให้ดี


1
โปรดทราบว่า apt-get จะทำงานเป็นแบบดรอปอินแทนความถนัดที่นี่หากคุณชอบ เพียงแทนที่ "aptitude" ทั้งสองด้วย "apt-get"
Michael Crenshaw

12

เพียงสร้างรายการแอพในไฟล์ตัวอย่างรายการและเรียกใช้

cat example.list | xargs sudo apt-get -y install

นี่มันเจ๋งมาก. ไม่เคยรู้วิธีป้อนรายชื่อแพ็คเกจเข้าสู่ apt ก่อน!
พฤหัสบดีที่

xargs ฟีดสายการประปาเข้าไปในคำสั่งใด ๆ โดยเพียงแค่ท้ายพวกเขาเป็นข้อโต้แย้ง
Xerus

2

ฉันจะเลือกใช้สคริปต์ต่อไปนี้: vim install

#!/bin/bash
apt-get update  # To get the latest package lists
apt-get install $1 -y

จากนั้นฉันควรทำให้สคริปต์ข้างต้นสามารถใช้งานchmod +x installได้ ./install <package_name>จากนั้นจะใช้มันฉันสามารถพิมพ์: ตัวอย่าง:./install clang


1
ฉันต้องการโปรแกรมทั้งหมดที่ระบุไว้ในไฟล์ ด้วยวิธีนี้ฉันยังคงต้องใส่ชื่อของโปรแกรมเป็นอาร์กิวเมนต์บรรทัดคำสั่งดังนั้นจึงไม่มีประโยชน์จริงๆ
jumpnett

1
@ jumpnett Lol ฉันพลาดจุดเข้าใช้งาน ฉันเริ่มขาดคาเฟอีนและมันแสดงให้เห็น ขออภัยด้วย อาจอัปเดตคำตอบ
NlightNFotis

นอกจากนี้มันจะทำงานupdateสำหรับทุกโปรแกรมที่จะติดตั้งใช้เวลานาน sudoและจะต้อง
Gauthier

นี่เป็นสิ่งที่ไม่จำเป็นอย่างยิ่ง คุณอาจจะใส่alias install='sudo apt-get install -y'เข้าไปในของคุณ.bash_aliases
Xerus

-1
#!/bin/bash

set -eu -o pipefail # fail on error , debug all lines

sudo -n true
test $? -eq 0 || exit 1 "you should have sudo priveledge to run this script"

echo installing the must-have pre-requisites
while read -r p ; do sudo apt-get install -y $p ; done < <(cat << "EOF"
    perl
    zip unzip
    exuberant-ctags
    mutt
    libxml-atom-perl
    postgresql-9.6
    libdbd-pgsql
    curl
    wget
    libwww-curl-perl
EOF
)

echo installing the nice-to-have pre-requisites
echo you have 5 seconds to proceed ...
echo or
echo hit Ctrl+C to quit
echo -e "\n"
sleep 6

sudo apt-get install -y tig

1
เพิ่มคำอธิบายโปรดและแก้ไขข้อผิดพลาดเหล่านี้ทั้งหมด
Xerus

คุณต้องการคำอธิบายในบรรทัดใด?!
Yordan Georgiev

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.