-n
シェルに組み込まれたコマンドのみを使用してecho
2文字の文字列をエコーすることは可能ですかbash
?
私はこれができることを知っていますが、組み込みの機能が文字列を出力できるかどうかをprintf '%s\n' -n
知りたかったです。echo
-n
答え1
-e
8進数55を使用することは、次のことを意味します-
。
$ echo -e '\055n'
-n
...または8進数として156n
または8進数の両方:
$ echo -e '\055\0156'
-n
これが-e
面倒な場合は、常にバックスラッシュシーケンスを解釈するようにxpg_echo
シェルオプションを設定しますecho
(ただし、これは一般的に望むものではありません)。
$ shopt -s xpg_echo
$ echo '-\0156'
-n
inは16進数echo
もbash
認識します。
$ echo -e '\x2d\x6e'
-n
答え2
すべての回答に感謝します。今思いついたものを追加します。
echo -n -;echo n
答え3
" "-n
の前に文字を配置し、\b
モードで " "エスケープシーケンスを使用して-e
最終出力から文字を削除します。次の例では、スペースをダミー文字として使用します。
$ echo -e " \b-n"
-n
説明する:
$ man echo
If -e is in effect, the following sequences are recognized:
\b backspace
これにより、出力が端末に視覚的に印刷されます。
$ echo -e " \b-n" | tee /tmp/test
-n
$ cat /tmp/test
-n
ただし、出力を解析する必要がある場合は、見えないバックスペース文字が生成されるため、問題が発生する可能性があります。
$ echo -e " \b-n" | wc -c
5
$ wc -c <<< $(echo -e " \b-n")
5
$ echo -e "--" | wc -c
3