-bash:lstat:找不到命令
我正在使用執行 El Capitan v 10.11.6 的 Macbook Pro。我正在學習符號連結,在
man ln
頁面中,我發現了以下內容:符號連結上的 stat(2) 將返回連結到的文件;必須執行 lstat(2) 以獲取有關連結的資訊。
作為測試,我創建了一個文件的符號連結(在另一個文件系統中,如果重要的話),如下所示:
ln -s /Volumes/foobardir/foobarfile foobarlink
然後我跑去
lstat foobarlink
獲取符號連結文件本身的資訊,但我得到了以下輸出:
-bash: lstat: command not found
該命令
which lstat
不返回任何內容,這確認在我的文件路徑中沒有具有此名稱的執行檔。我能夠執行
stat foobarlink
,但我不確定返回的統計資訊是針對連結文件還是符號連結本身。我確實在該命令的輸出中看到了時間戳形式的今天日期,而執行stat foobarfile
顯示了幾個月前的日期。所以我猜這是我正在尋找的輸出,但我想要第二個意見。順便說一句,執行
which stat
返回/usr/bin/stat
。名稱中包含所有執行檔grep
的目錄中的A返回以下內容:/usr/bin``stat
- db_stat
- 差異統計
- httpdstat.d
- jstat
- jstatd
- 鎖定狀態
- lpstat
- nfsstat
- 採摘狀態
- snmpnetstat
- snmp狀態
- 統計
- 新的
- vm_stat
正如我上面所說,我的猜測是
stat
返回我期望返回的輸出lstat
。我的問題是:
- 當辨識為有效命令時,為什麼
lstat
顯然沒有安裝在我的系統中?man lstat``lstat
- 為什麼要包含您不附帶的執行檔的手冊資訊?
brew search lstat
不返回任何結果。是否可以以某種方式安裝lstat
到我的本地機器上,這樣做有什麼好處嗎?
BSD 手冊的第 1 節是針對一般命令的。第 2 節是關於系統呼叫的,即
C
如果使用該語言或其派生語言之一為您的系統程式,您可能會進行的函式呼叫。括號中的數字表示該條目來自手冊的哪一部分。在這種情況下,
lstat(2)
表示此頁面提供有關係統呼叫的資訊,而不是可以在命令行執行的獨立二進製文件的資訊。如果您鍵入
man lstat
,您將看到lstat
系統呼叫的手冊頁。stat
相比之下,它是系統呼叫和獨立實用程序的名稱。如果您鍵入man stat
,預設情況下您將獲得命令行實用程序的手冊頁。要查看系統呼叫手冊頁,您需要明確說明man
要搜尋手冊的哪個部分:man 2 stat
https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man5/manpages.5.html是一個(過時的)連結,列出了 BSD 手冊的所有部分。這些部分在您的系統上將是相同的,但我找不到明確列出這些部分的手冊頁。