このPOSIX echo \ cは何ですか?

このPOSIX echo \ cは何ですか?

簡単な事実を探していたところ、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皮肉なことに、まったく同じエスケープシーケンスを含むよく知られていない可変性については\cBash printf形式が機能しません。」。

答え2

これは、UNIXブランドのPOSIX認証プラットフォームを使用している場合はデフォルトでecho処理されます。\c

これは、Solaris、AIX、HP-UX、およびAppleに適用されます。

Appleはbashこのエコー動作もサポートしていますが、デフォルトで互換性をbash持たせるには特定のコンパイルオプションが必要です。このコンパイルオプションはbashMacOS と Solaris で使用されます。したがって、bash人々はPOSIX認証プラットフォームで動作が異なることに気づき、混乱する可能性があります。

覚えておいてください:GNUGNUはUNIXではありません。多くのGNUツールはPOSIXと互換性がないか、デフォルトではPOSIXと互換性がありません。したがって、認証されたプラットフォームではない場合は注意してください。

注:サポートしていない場合でも、小規模の組み込みプラットフォーム用のPOSIXブランドを入手できますが、ブランディングecho \cの場合はUNIXサポートする必要があります。みんな XSIPOSIX拡張。 Linuxはほとんどの拡張をサポートしていませんXSI。たとえば、多くのLinuxディストリビューションで使用されるdashデフォルトのシェルはdashマルチバイト文字をサポートしていないため、idと完全に互換性がありません。

関連情報