El Capitan v 10.11.6を実行しているMacbook Proを使用しています。私はシンボリックリンクについて学習しており、man ln
ページで次のことがわかりました。
シンボリックリンクのstat(2)は、リンク先のファイルを返します。リンクに関する情報を取得するには、lstat(2)を実行する必要があります。
テストとして、次のように、ファイルへのシンボリックリンクを作成しました(重要な場合は別のファイルシステムにあります)。
ln -s /Volumes/foobardir/foobarfile foobarlink
次に、lstat foobarlink
を実行してsymlinkファイル自体に関する情報を取得しましたが、次の出力が得られました。
-bash: lstat: command not found
コマンドwhich lstat
は何も返しません。これは、ファイルパスにこの名前の実行可能ファイルがないことを確認します。
stat foobarlink
を実行することはできますが、返された統計がリンクされたファイルのものかシンボリックリンク自体のものかはわかりません。そのコマンドの出力には、今日の日付がタイムスタンプ形式で表示されますが、stat foobarfile
を実行すると、数か月前の日付が表示されます。だから私はこれが私が探している出力だと思いますが、セカンドオピニオンが欲しいです。
ちなみに、which stat
を実行すると/usr/bin/stat
が返されます。名前にgrep
が含まれるすべての実行可能ファイルの/usr/bin
ディレクトリにあるstat
は、次を返します。
上で述べたように、私の推測では、stat
はlstat
が返すと期待していた出力を返します。私の質問は:
man lstat
がlstat
を有効なコマンドとして認識するのに、なぜlstat
がシステムにインストールされていないのですか?brew search lstat
は結果を返しません。 lstat
をローカルマシンに何らかの方法でインストールすることは可能ですか、そうすることにはどんな利点もありますか?BSDマニュアルのセクション1は、一般的なコマンド用です。セクション2はシステムコール、ie、C
言語でシステムをプログラミングする場合に行う可能性のある関数呼び出し、またはその派生物。
括弧内の数字は、マニュアルのどのセクションからのエントリかを示します。この場合、lstat(2)
は、このページがコマンドラインで実行できるスタンドアロンバイナリではなく、システムコールに関する情報を提供することを示します。
man lstat
と入力すると、lstat
システムコールのマニュアルページが表示されます。対照的にstat
は、システムコールとスタンドアロンユーティリティのbothの名前です。 man stat
と入力すると、デフォルトでコマンドラインユーティリティのマニュアルページが表示されます。システムコールのマニュアルページを表示するには、マニュアルのどのセクションを検索するかを明示的にman
に指示する必要があります。
man 2 stat
https://developer.Apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man5/manpages.5.html は、BSDマニュアルのすべてのセクションをリストする(古い)リンクです。セクションはシステム上で同じになりますが、セクションを明示的にリストしているmanページがあることはわかりません。