簡単な事実を探していたところ、echo
次のページが見つかりました。
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html
通常、ウェブサイトのHTMLフレームです。https://pubs.opengroup.org/onlinepubs/9699919799/(ここでは「echo」を検索できます)。
これはPOSIXだと主張していますが、私はそれを見ることができませんでし-n
た\c
!
私は何を見つけましたか?
通常の再起動指摘を/bin/echo
認識しますが、基本的にはそうしません。認識されるには\c
何かをする必要があります。echo -e
\c
答え1
IEEE 1003.1-2017(別名)を見つけました。シングル Unix 仕様、The Open Groupから出版。
詳しくは「POSIXとは何ですか?「、」POSIX、単一のUNIX仕様、およびオープングループの基本仕様の違いは何ですか?」と関連するすべての質問と回答を提供します。
すぐ-n
そこに太字で表示されていて見逃しにくいです。はい、\c
これは標準です。
行動の変化はecho
よく知られています。これが/bin/echo
シェル組み込みとはecho
異なり、1つは必須で、-e
もう1つはそうではないという事実に驚かないでください。でもそれ単純な。
詳しくは、「」をご覧ください。なぜprintfがechoより優れているのですか?」。
printf
皮肉なことに、まったく同じエスケープシーケンスを含むよく知られていない可変性については\c
、Bash printf形式が機能しません。」。
答え2
これは、UNIXブランドのPOSIX認証プラットフォームを使用している場合はデフォルトでecho
処理されます。\c
これは、Solaris、AIX、HP-UX、およびAppleに適用されます。
Appleはbash
このエコー動作もサポートしていますが、デフォルトで互換性をbash
持たせるには特定のコンパイルオプションが必要です。このコンパイルオプションはbash
MacOS と Solaris で使用されます。したがって、bash
人々はPOSIX認証プラットフォームで動作が異なることに気づき、混乱する可能性があります。
覚えておいてください:GNU
GNUはUNIXではありません。多くのGNUツールはPOSIXと互換性がないか、デフォルトではPOSIXと互換性がありません。したがって、認証されたプラットフォームではない場合は注意してください。
注:サポートしていない場合でも、小規模の組み込みプラットフォーム用のPOSIXブランドを入手できますが、ブランディングecho \c
の場合はUNIX
サポートする必要があります。みんな XSI
POSIX拡張。 Linuxはほとんどの拡張をサポートしていませんXSI
。たとえば、多くのLinuxディストリビューションで使用されるdash
デフォルトのシェルはdash
マルチバイト文字をサポートしていないため、idと完全に互換性がありません。