Linuxのシェルにあるコマンドに対して-e
このフラグが存在しないようです。echo
これはちょうど混乱した設定ですか、それとも「正常」ですか?
たとえば、いくつかのコードは次のようになります。
#!/bin/sh
echo -e "\e[3;12r\e[3H"
印刷:
-e \e[3;12r\e[3H
これは以前に働きました!stty
一部のコマンドで問題が発生したため、動作しなくなったようです。誰かが私がsh
実際にbash
。
答え1
sh
代わりに使用したため、bash
コマンドecho
にsh
オプションはありません-e
。sh
マンページから:
echo [-n] args...
Print the arguments on the standard output, separated by spaces.
Unless the -n option is present, a newline is output following the
arguments.
またそうではありません\e
。
If any of the following sequences of characters is encountered
during output, the sequence is not output. Instead, the specified
action is performed:
\b A backspace character is output.
\c Subsequent output is suppressed. This is normally used at
the end of the last argument to suppress the trailing new‐
line that echo would otherwise output.
\f Output a form feed.
\n Output a newline character.
\r Output a carriage return.
\t Output a (horizontal) tab character.
\v Output a vertical tab.
\0digits
Output the character whose value is given by zero to three
octal digits. If there are zero digits, a nul character
is output.
\\ Output a backslash.
All other backslash sequences elicit undefined behaviour.
答え2
-e
POSIXではありません(実際にはPOSIX echoはサポートが許可されていますが、通常はオプションを受け入れません。-n
参照)ここ)で、/bin/sh
システムのPOSIXシェルのようです。-e
一部のシェルでは許容される拡張ですが、それに依存してはいけません。移植性がないからです。理想的にはを使用printf
または使用に切り替えますecho -e
。
\e
また、交換が必要な以下の説明の警告を参照してください\033
。
printf '\033[3;12r\033[3H'
答え3
type echo
いつでも、ほぼすべてのシェルでまたはを入力して、呼び出す「エコー」を決定できますwhich echo
。通常、シェルが組み込まれています。したがって、どの「echo」がインストールされていて、どのシェルを使用しているかによって異なります。
答え4
何らかの理由でというよりはzsh
使用を勧めるようです。printf "blah\n"
echo -e "blah\n"