Ele*_*kie -3 bash shell gcc makefile sed
我目前正在尝试在我的机器上安装GCC-4.1.2:Fedora 20.
在指令中,前三个命令涉及使用'sed'命令,用于Makefile修改.但是,我很难在我的案例中正确使用这些命令.GCC-4.1.2 的网站链接
命令是:
sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in &&
sed -i 's@\./fixinc\.sh@-c true@' gcc/Makefile.in &&
sed -i 's/@have_mktemp_command@/yes/' gcc/gccbug.in &&
Run Code Online (Sandbox Code Playgroud)
我试图通过阅读'sed'手册页来了解它们,但这样做并不容易.任何帮助/提示将不胜感激!
首先,shell部分:&&.这只是将命令链接在一起,因此每个后续行只有在前一个命令成功运行时才会运行.
sed -i表示"在文件上内联运行这些命令",即直接修改文件而不是将更改的内容打印到STDOUT.这里的每个sed命令(字符串)都是一个替换命令,我们可以告诉它,因为命令以s.
替换在文件中查找一段文本,然后替换它.所以订单总是如此s/needle/replacement/.看看第一行和最后一行是如何具有相同的正斜杠的?这是命令(替代),在大海捞针中找到的针(install_to_$(INSTALL_DEST)以及用().
So, the first one looks for the string and deletes it (the empty replacement). The last one looks for @have_mktemp_command@并替换它yes.
中间的有点奇怪.看看它是如何开始s@而不是s/?好吧,sed会让你使用你喜欢的任何分隔符将针头与替换品分开.因为这个针有一个/in(\./fixinc\.sh),所以使用不同的分隔符是有意义的/.它将替换的文字./fixinc.sh用-c true.
最后一点:为什么第二针有\.而不是.?好吧,在像针一样的正则表达式中(但在你的例子中没有使用),一些角色是神奇的,并做神奇的仙尘操作.其中一个神奇的角色是..为了避免魔法,我们把\它放在它前面,远离魔法.(魔术是"匹配任何角色",我们想要一个字面时间.这就是原因.)