-1

検索したところ、「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」の場合も同様です。2回目、3回目、4回目などは機能しますが、初めてではありません。

私は awk と sed にあまり慣れていないので、これらを使いたかったのです。

選択肢がない場合は、awk または sed を介して /etc/grub.conf に「elevator=noop」を追加する方法を教えてもらえますか??

答え: sed -i '$s/$/,string/' file..

4

3 に答える 3

1

このオプションは、エコーの最後-nに改行を追加するかどうかを制御します。それが最初にファイルに書き込みます。それが改行の由来です。echo "hello"hello\n

カーネル オプションを追加するには、次のいずれかを試してください。それぞれが grub.conf 内の行を検索し、kernel末尾に「エレベータ=noop」を追加します。

sed '/kernel/ s/$/ elevator=noop/' /etc/grub.conf

awk '$1 == "kernel" { $0 = $0 " elevator=noop" } { print } ' /etc/grub.conf
于 2012-10-24T19:24:14.963 に答える
0

Oftentimes your shell will have a built-in echo. This can cause a fair amount of confusion. You should try an absolute path to an echo if you're seeing odd behavior, it may fix the problem.

[user@host ]$ which echo
/usr/bin/echo
[user@host ]$ echo --version
--version
[user@host]$ /usr/bin/echo --version
echo (GNU coreutils) 8.15
...

As it turns out my echo, 8.15 and bash 4.2.37 on x64 linux appear to "do the right thing":

[user@host ]$ echo -n "Hi" > /tmp/hi
[user@host ]$ cat /tmp/hi
Hi[user@host ]$
于 2012-10-24T21:15:30.910 に答える
0

echo ではなく printf を使用します。echo は移植性がなく、使いにくい

于 2012-10-24T23:49:04.373 に答える