bash – 防止sudo,apt-get等吞下粘贴的输入到STDIN?

前端之家收集整理的这篇文章主要介绍了bash – 防止sudo,apt-get等吞下粘贴的输入到STDIN?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我经常写维基指令在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

猜你在找的Bash相关文章