Cygwin「尋找」不回傳任何內容

Cygwin「尋找」不回傳任何內容

此命令在 Windows Server 2008 r2 上執行的 Cygwin 中不傳回任何內容:

/usr/bin/查找/

我稍微停頓了一下,但沒有回任何文字。沒有錯誤,沒有結果等。 我嘗試使用不同的搜尋路徑,使用參數(如 -type f),並將我的 cygwin 路徑設為 /usr/local/bin:/usr/bin。什麼都不起作用。

有想法嗎?

謝謝

答案1

這是非常奇怪的行為,我在使用 Cygwin 時從未遇到過類似的情況。我沒有足夠的聲譽點來使用評論詢問信息,所以我只會發布我將使用的調試技術。希望它們對有類似問題的其他人有用。

首先,我嘗試驗證我是否運行了正確的可執行檔。運行find --version應該返回如下內容:

尋找(GNU findutils)4.5.11

由 Cygwin 封裝(4.5.11-1)

如果我仍然沒有得到任何輸出,我會(安裝並)使用 Cygwin 的strace 命令:

mkdir testdir
strace -o find.out find testdir
rmdir testdir

strace允許您查看 Cygwin 可執行檔對 Cygwin DLL 進行的呼叫。使用上述命令,find 命令的輸出儲存在 find.out.

除非您熟悉 Windows 系統編程,否則其中大部分內容都是沒有意義的。但是,查看輸出仍然可以讓您了解該命令正在執行的操作,例如捕獲傳遞給該命令的 Cygwin PATH 和其他環境變數。我通常會搜尋open( 以查看命令(查找)嘗試使用哪些文件。成功呼叫 open 函數將顯示如下:

open: open(/home/anthony/t, 0x30C000)
open: open(., 0x400000)

不成功的 open 呼叫返回值 -1。請注意,並非所有找到嘗試開啟的檔案實際上都是該命令正確運行所必需的。這是此類不成功嘗試的範例(如果存在,則將讀取其中的信息,locale.alias 但 find 不需要完成其工作):

open: -1 = open(/usr/local/share/locale/locale.alias, 0x8000), errno 2

注意:我創建(然後刪除)空testdir目錄,因此 strace 輸出檔案中不會捕獲大量資訊。

相關內容