![有没有办法可以无人值守运行 bash 脚本?](https://linux22.com/image/1085906/%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E5%8F%AF%E4%BB%A5%E6%97%A0%E4%BA%BA%E5%80%BC%E5%AE%88%E8%BF%90%E8%A1%8C%20bash%20%E8%84%9A%E6%9C%AC%EF%BC%9F.png)
我对 Linux 世界还很陌生,现在我已经完全转用了 Windows 10。我尝试了一下,但由于它被大肆宣传,效果不如我预期。无论如何,我会衡量我目前对 Linux 的了解,我会说我已经超越了 KUbuntu,成为了“菜鸟”和“初学者”。我不确定这是否可以做到,所以我希望有人能告诉我这是否可行。
我已经学会了apt-get install -y Foo
安装我想要安装的任何东西的技巧,而无需终端要求我点击Y
或N
。
所以我的问题是这样。我发现了适用于各种 Ubuntu 版本以及许多适用于其他发行版(如 Elementary、Manjaro、SuSe 等)的“安装后”脚本。制作这些脚本是为了让其他人可以安装许多软件、调整、主题等。
是否可以告诉我的新 Kubuntu 15.04 系统在提示接受新功能时始终按 Y 键?有没有办法用 bash 脚本做到这一点?或者我必须像鹰一样监视它,这样如果我迟到了电脑来按 Y 键,它就不会一直中止?
答案1
是的,有。有一个yes
命令的作用正是如此。它将重复输出给定的字符串(y
默认)。因此,如果脚本foo.sh
希望您点击y以确认操作,您可以这样运行它:
yes | foo.sh
然而,这真的不是一个好主意。首先,在大多数情况下,没有超时。你不需要冲到电脑前,它会等你。电脑往往是相当有耐心的野兽。更重要的是,你很少想盲目地接受别人告诉你的任何事情。自己做决定是个好主意,这就是你被问到的原因。
无论如何,选择权都在您手中。如果您确定要盲目地对所有问题回答“是”,则只需使用yes
。
答案2
您可以创建脚本的副本并运行,这将用自动回答的版本sed -i 's|apt-get install|apt-get -y --force-yes install|g' /path/to/script
替换每次出现的。不过,要小心 。apt-get install
--force-yes
而且这可能并不能真正解决您的问题,因为在大多数脚本中,Y/N 问题不是由 apt“询问”,而是由脚本本身“询问”,通常使用命令read
。
您可以尝试运行/path/to/script -h
或/path/to/script --help
查看是否有自动接受开关。
另一种方法是通过管道传递“Y”,即for i in {1..10}; do echo Y; done |/path/to/script
,但这是一种相当不干净的方法。
答案3
据我所知,Y总是不好,更具体地说是
apt-get dist-upgrade
。实际上,在开始下载之前,对第一个问题回答 Y 很容易。其他主要来自安装后脚本,请尝试以下操作:
sudo DEBIAN_FRONTEND=noninteractive apt-get -y install Foo