我正在浏览一个我试图理解的设置脚本;在这种情况下,sed线如何工作。根据我的理解,它是在第一行编辑src/conf-cc
内联并将-include /usr/include/errno.h/
附加到最后一行输入?我一直在引用sed手册来帮助我打破这个sed命令。
#!/usr/bin/env bash
# A script which installs daemontools
#
# Run as root!
#
if [ "$(id -u)" != "0" ]; then
echo "You must be root!" 1>&2
exit 1
fi
mkdir /package
chmod 1755 /package
cd /package
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
tar -xpf daemontools-0.76.tar.gz
rm -f daemontools-0.76.tar.gz
cd admin/daemontools-0.76
sed -i '1s/$/ -include \/usr\/include\/errno.h/' src/conf-cc
package/install
echo -e "start on runlevel [3] \nrespawn \nexec /command/svscanboot" >> /etc/init/svscan.conf
initctl reload-configuration
initctl start svscan
mkdir /var/svc.d
答案 0 :(得分:3)
不,它只是在第一行附加了一些内容。这是替换命令:
addr s/pattern/replacement/
其中 addr
为1
(第一行), pattern
为$
(正则表达式:结束(){em> replacement
是 -include ...
字符串。它并没有真正“替换”任何东西,因为$
无论如何都没有宽度。
您的误解是将$
解释为地址而非正则表达式。