echo
inはどこにでもあるように見えますが、すべてのシステムが同じ場所(通常)に配置されるわけではありません。それがどこにあるのかわからずに電話する最も安全な方法は何ですか?coreutils
/bin/echo
echo
echo
coreutils バイナリがシステムにない場合、コマンドが失敗しても問題ありません。これは私が望むものとは異なるものをエコーするよりも優れています。
注:ここで動機はecho
バイナリを見つけることです。いいえ各シェルの引数セットを見つけるecho
組み込み一貫性があります。例えば、zsh
にあるか分からないまま内蔵エコーを介してハイフンだけを安全に印刷する方法はないようですbash
。
ベストアンサー1
これはcoreutils
、GNUシステム用の基本的なUnixユーティリティセットを提供するためにGNUプロジェクトによって開発されたパッケージです。あなたは見つけるでしょうコアツールecho
Debian
GNUシステム(、、、、、trisquel
… )ですぐに動作しますCygwin
。他のシステムでは異なる実装を見つけることができます(しばしば動作が異なり、これは最も移植性の低いアプリケーションの1つです)。 FreeBSDにはFreeBSDがあり、ほとんどのLinuxベースのシステムにはbusyboxがあり、AIXにはAIXがあります。Fedora
CentOS
echo
echo
echo
echo
一部のシステムには複数のシステムがあります(たとえば、およびSolaris /bin/echo
)/usr/ucb/echo
(後者はパッケージの一部であり、現在入手可能なGNUユーティリティパッケージなどの将来のバージョンのSolarisではオプションです/usr/gnu/bin/echo
)。これらのうち、CLIは互いに異なります)。
GNUは、coreutils
ほとんどのUnixファミリ(MS WindowsなどのUnixファミリではない)システムに移植されているため、ほとんどのマシンでコンパイルできますが、coreutils
おそらくecho
望むものではありません。
coreutils
echo
さらに、バージョン間の非互換性(過去に認識されていない\x41
シーケンス)が見つかる可能性があり、その-e
動作はPOSIXLY_CORRECT
環境(変数)の影響を受ける可能性があります。
echo
$PATH
他のすべての組み込みプログラムと同様に、(検索で見つかった)ファイルシステムで実行するための一般的なアプローチは次のとおりですenv
。
env echo this is not the builtin echo
zsh
次のこともできます(他のシェルをエミュレートしない場合)。
command echo ...
追加のenv
コマンドを実行する必要はありません。
しかし、上記のテキストが移植性に役立たないことを明確にすることを願っています。移植性と安定性のためにprintf
代わりに使用してください。。