Bir uygulama yükleme kabuğu betiğini nasıl yazarım?


39

Bir uygulama listesini yüklemek için bir kabuk betiği yazmayı bilen var mı? Her yeni bir sistem kurduğumda her uygulamayı el ile kurmak zorunda kalmak acı verici.

Düzenleme: Hala bana soruyor Do you want to continue [Y/n]?. Komut dosyası girişine sahip olmanın yveya giriş isteminde bulunmamanın bir yolu var mı?


2
Sadece bunu yapan 'evet' adında bir program vardı. (STDOUT için sürekli olarak 'y' yazdı.)
Nathan Osman

Yanıtlar:


38

Senaryonun şunun gibi gözükeceğini varsayardım:

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

Bunu install_my_apps.sh gibi bir şey olarak kaydedin, çalıştırılabilir yapmak için dosyanın özelliklerini değiştirin ve komut satırından root olarak çalıştırın.

( Düzenleme:-y söyler apt-getisteyecektir ve sadece yükleme ile olsun değil)


Nasıl yürütülebilir hale getirilebilir? Sanırım şöyle koşarım: sudo ./install_my_apps.sh
jumpnett 19:10

Çalıştırılabilir hale getirmek için gerekli olup olmadığından emin değilim (Ben bir Python adamıyım; BASH'a değil). Ancak gerekirse, çalıştırılabilir hale getirilebilir chmod +x ./install_my_apps.sh.
Michael Crenshaw,

Veya sağ tıklayın, "Özellikler" i seçin.
Açılan

6
Bunun neden CW olduğunu bilmiyorum ama yine de -ybayrağı koymak için düzenlemiştim . Not: Daha net görünmesini istiyorsanız, onu --yesveya --assume-yesyerine kullanabilirsiniz -y.
Umang

20

Sorunuza göre en kolay senaryo şöyle olacaktır:

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

aptitude update
aptitude install -y $LIST_OF_APPS

Ancak siz de girebilirsiniz aptitude update && aptitude install -y a b c d e. Belki de sorunuz buradaki önemli noktayı kaçırıyordur. Başka gereksinimler varsa, bunları açıklamak güzel olacaktır.


1
Apt-get, tercihiniz buysa, yetenek için bir değiştirme işlemi olarak çalışacağını unutmayın. Basitçe her iki "yetenek" örneğini "apt-get" ile değiştirin.
Michael Crenshaw

12

Sadece bir dosyadaki uygulamaların listesini oluşturun, example.list ve çalıştır

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

bu harika. daha önce apt listesine bir paket listesini nasıl besleyeceğimi asla bilemezdim!
Thufir

xargs, sadece argüman olarak ekleyerek, boru hatlarını herhangi bir komutla besler
Xerus

2

Aşağıdaki betiği seçerdim: vim install

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

Sonra yukarıdaki betiği çalıştırılabilir yapmalıyım chmod +x install. Sonra kullanmak için, ben yazabilirsiniz: ./install <package_name>. Örnek:./install clang


1
Dosyada listelenen tüm programları istedim. Bu yöntemle, programın ismini komut satırı argümanı olarak girmem gerekecek, yani gerçekten bir faydası yok.
jumpnett

1
@jumpnett Lol, liste noktasını kaçırdım. Kafein eksikliğine başladım ve gösteriyor. Bunun için üzgünüm. Cevabı güncelleyebilir.
NlightNFotis

Ayrıca update, her programın yüklenmesi, zaman alıcı çalışacak . Ve ihtiyacı var sudo.
Gauthier

bu son derece gereksiz. Sen de koyabilir alias install='sudo apt-get install -y'senin içine.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
açıklamalar ekleyin ve tüm bu yazım hatalarını düzeltin
Xerus

sizce hangi satırın açıklamaya ihtiyacı var ?!
Yordan Georgiev

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.