我经常写维基指令在Ubuntu上安装各种服务器软件包(目前11.10 Oneiric).它们总是涉及以下内容:
sudo apt-get install -y postfix sudo cp ~/siteconfig/etc/postfix/main.cf /etc/postfix
但是当你将它剪切并粘贴到终端时,sudo,apt-get或某些子shell会随机吞下后续的输入行,并且只会发生apt-get安装.
有没有办法让这个更加剪切和粘贴友好?我想我可以用每个部分包装
cat > script <<EOF apt-get install -y postfix cp ~/siteconfig/etc/postfix/main.cf /etc/postfix EOF sudo sh ./script
但有更好的方法吗?
避免剪切和粘贴问题,以及连续安全地运行命令的一种方法是将它们放在由&&和/或只有在成功完成sudo apt-get install后才会执行cp:
sudo apt-get install -y postfix && sudo cp ~/siteconfig/etc/postfix/main.cf /etc/postfix
毕竟,如果第一个命令失败,你可能不想继续执行其余的命令.
至于为什么在你一次粘贴多行时吞下这些命令……当postfix安装完毕后,它会使用debconf对话框前端询问配置问题,这可能会干扰切割和粘贴.也许不同的前端如readline或noninteractive会干扰更少?不过,我会使用&&无论如何,因为它更安全.
如果您使用脚本安装postfix,听起来好像您正在尝试自动安装新系统?如果是这样,考虑使用preseeding作为选项(这里是一些Ubuntu 11.10 specific documentation)或者使用puppet?