バイナリstrings
でコマンドを実行できません(私の場合は次の場所にあります)。strings
/usr/bin/strings
$ strings $(which strings)
strings
また、コピーしたりコピーを試したりすることはできません。
$ cp -L $(which strings) /tmp/
$ strings /tmp/strings
strings
私が得ることができる唯一の方法は、出力をキャプチャすることですcat
。
$ strings <<< $(cat $(which strings))
...
ただし、この種の自己参照を使用できる他のコマンドもあります(例cat $(which cat)
:)。確認しました他のコンピュータでも動作します[画像ソース:ここ]。おそらくこれはmacOSの問題ですか? (現在macOS 10.14を実行しています。)
私はこれが愚かな質問であり、おそらくユースケースがないことを知っていますが、私は疑問に思っています...
答え1
macOSのzshとbashでも同じ動作が発生します。strings
macOSでは表示するだけです。非テキスト部分Mach-Oバイナリ用。からman strings
:
-
このフラグを指定しないと、ターゲットファイルの(__TEXT
、、__text
)部分を除くすべての部分から文字列が検索されます。ファイルを指定しない場合は、標準入力を読み込みます。
したがって、strings
ファイルをMach実行可能ファイルではなく純粋なバイナリとして扱うには、この-
フラグを渡す必要があります。関数としてstrings - "$(command -v strings)"
オーバーライドしない限り、期待どおりstring
に機能します。
では、同じ名前の関数があるかどうかにかかわらず、コマンドパスで展開された場所をzsh
使用できます(shellを参照)。strings - =strings
=strings
strings
"$(command -ve strings)"
yash