如何编写应用程序安装外壳脚本?


39

有谁知道如何编写Shell脚本来安装应用程序列表?每当我设置新系统时,都必须手动安装每个应用程序,这是一个痛苦。

编辑: 它仍然问我Do you want to continue [Y/n]?。有没有办法让脚本输入y或不提示输入?


2
曾经有一个叫做“是”的程序可以做到这一点。(它向STDOUT连续写“ y”。)
内森·奥斯曼

Answers:


38

我认为脚本看起来像这样:

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

只需将其另存为install_my_apps.sh之类的文件,更改文件的属性以使其可执行,然后以root身份从命令行运行它。

编辑:-y通知apt-get没有提示你,只是获得与安装)


如何使其可执行?我想我会像这样运行它: sudo ./install_my_apps.sh
jumpnett 2010年

我不确定是否有必要使其可执行(我是Python专家;对BASH不太了解)。但是,如果必须的话,可以使用将其设置为可执行文件chmod +x ./install_my_apps.sh
迈克尔·克伦肖

或右键单击它,选择“属性”。在打开的窗口中,转到“权限”标签,然后选中“允许将文件作为程序执行”复选框
-jfoucher 2010年

6
我不知道为什么这是CW,但无论如何我还是对其进行了编辑以添加-y标记。注意:如果您想使其更清晰,可以使用--yes--assume-yes代替-y
2010年

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。只需将两个“ aptitude”实例替换为“ apt-get”。
Michael Crenshaw,2010年

12

只需在文件example.list中创建一个应用列表,然后运行

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

这太棒了。以前从来不知道如何将软件包列表输入apt!
Thufir

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 2012年

1
@jumpnett大声笑,我错过了清单。我开始缺乏咖啡因,这表明。对不起 可能会更新答案。
NlightNFotis 2012年

另外,它将update为每个要安装的程序运行,这很耗时。并且它需要sudo
Gauthier 2015年

这是非常不必要的。您也可以将其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 '18

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.