我搜索并发现“echo -n”和“printf”是解决方案,但它们在我的机器上工作有点古怪。
这里:
[wadhwaso@nxnixd01 ~]$ echo "hello" >> test
[wadhwaso@nxnixd01 ~]$ cat test
hello
[wadhwaso@nxnixd01 ~]$ echo -n "world" >> test
[wadhwaso@nxnixd01 ~]$ cat test
hello
world
[wadhwaso@nxnixd01 ~]$ echo -n " seriously?" >> test
[wadhwaso@nxnixd01 ~]$ cat test
hello
world seriously?
“printf”的情况也是如此。它第四次工作第4次,依此类推,但不是第一次。
我对awk和sed不太满意,这就是为什么我要使用它们。
如果我没有任何选择,有人可以告诉我如何通过awk或sed在/etc/grub.conf中添加“elevator = noop”吗?
答案:
sed -i '$s/$/,string/' file
..
答案 0 :(得分:1)
-n
选项控制是否在回显的 end 处添加换行符。第一个echo "hello"
将hello\n
写入文件;这就是新行的来源。
要添加内核选项,请尝试以下方法之一。他们每个人都在grub.conf中搜索kernel
行,并在最后添加“elevator = noop”。
sed '/kernel/ s/$/ elevator=noop/' /etc/grub.conf
awk '$1 == "kernel" { $0 = $0 " elevator=noop" } { print } ' /etc/grub.conf
答案 1 :(得分:0)
您的shell通常会有内置回声。这可能会导致相当多的混乱。如果你看到奇怪的行为,你应该尝试一个回声的绝对路径,它可以解决问题。
[user@host ]$ which echo
/usr/bin/echo
[user@host ]$ echo --version
--version
[user@host]$ /usr/bin/echo --version
echo (GNU coreutils) 8.15
...
事实证明我的回声,x5 linux上的8.15和bash 4.2.37似乎“做正确的事”:
[user@host ]$ echo -n "Hi" > /tmp/hi
[user@host ]$ cat /tmp/hi
Hi[user@host ]$
答案 2 :(得分:0)
使用printf而不是echo。 echo不可移植,难以使用