Wie schreibe ich ein Shell-Skript für die Anwendungsinstallation?


39

Weiß jemand, wie man ein Shell-Skript schreibt, um eine Liste von Anwendungen zu installieren? Es ist eine Qual, jedes Mal, wenn ich ein neues System einrichte, jede Anwendung von Hand installieren zu müssen.

Edit: Es fragt mich immer noch Do you want to continue [Y/n]?. Gibt es eine Möglichkeit, das Skript eingeben zu lassen yoder nicht zur Eingabe aufzufordern?


2
Früher gab es ein Programm namens "Ja", das genau das tat. (Es schrieb "y" kontinuierlich an STDOUT.)
— Nathan Osman

Antworten:


38

Ich würde annehmen, dass das Skript ungefähr so ​​aussieht:

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

Speichern Sie dies einfach als install_my_apps.sh, ändern Sie die Eigenschaften der Datei, um sie ausführbar zu machen, und führen Sie sie über die Befehlszeile als root aus.

( Edit: Das -ysagt apt-getnicht, Sie aufzufordern und nur mit der Installation fortzufahren)


Wie mache ich es ausführbar? Ich nehme an, ich würde es so laufen lassen: sudo ./install_my_apps.sh
— jumpnett

Ich bin mir nicht sicher, ob es notwendig ist, es ausführbar zu machen (ich bin ein Python-Typ; ich mag BASH nicht besonders). Aber wenn Sie müssen, kann es mit ausführbar gemacht werden chmod +x ./install_my_apps.sh.
— Michael Crenshaw

Oder klicken Sie mit der rechten Maustaste darauf und wählen Sie "Eigenschaften". Gehen Sie im folgenden Fenster zur Registerkarte "Berechtigungen" und
— aktivieren

6
Ich weiß nicht, warum das CW ist, aber ich habe es trotzdem bearbeitet, um die -yFlagge zu setzen . Hinweis: Wenn Sie die Darstellung klarer gestalten möchten, können Sie --yesoder --assume-yesanstelle von verwenden -y.
— Umang

20

Nun, Ihrer Frage nach wäre das einfachste Skript:

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

aptitude update
aptitude install -y $LIST_OF_APPS

Sie können jedoch auch eingeben aptitude update && aptitude install -y a b c d e. Vielleicht fehlt Ihrer Frage hier der entscheidende Punkt. Wenn es weitere Anforderungen gibt, wäre es nett, sie zu erklären.


1
Beachten Sie, dass apt-get hier als Ersatz für aptitude fungiert, wenn Sie dies bevorzugen. Ersetzen Sie einfach beide Instanzen von "aptitude" durch "apt-get".
— Michael Crenshaw

12

Erstellen Sie einfach eine Liste von Apps in einer Datei, example.list, und führen Sie sie aus

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

das ist fantastisch. Ich wusste noch nie, wie ich eine Liste von Paketen in Apt einpflegen soll!
— Thufir

xargs fügt die Pipe-Zeilen in jeden Befehl ein, indem sie einfach als Argumente
— angehängt werden

2

Ich würde mich für folgendes Skript entscheiden: vim install

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

Dann sollte ich das obige Skript ausführbar machen chmod +x install. Dann , es zu benutzen, konnte ich geben: ./install <package_name>. Beispiel:./install clang


1
Ich wollte alle in der Datei aufgeführten Programme. Mit dieser Methode müsste ich immer noch den Namen des Programms als Befehlszeilenargument eingeben, damit es wirklich keinen Vorteil gibt.
— Jumpnett

1
@jumpnett Lol, ich habe den Listenpunkt verpasst. Mir fehlt allmählich Koffein und es zeigt sich. Entschuldigung dafür. Kann die Antwort aktualisieren.
— NlightNFotis

Außerdem muss updatejedes Programm zeitaufwendig installiert werden. Und es braucht sudo.
— Gauthier

Dies ist äußerst unnötig. Sie können es genauso gut um 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
Erklärungen bitte hinzufügen und alle diese Tippfehler beheben
— Xerus

welche zeile braucht deiner meinung nach erklärung ?!
— Yordan Georgiev

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.