Cygwin“发现”什么都不返回


0

此命令在Windows Server 2008 r2上运行的Cygwin中不返回任何内容:

/ usr / bin / find /

我稍微暂停,但没有返回任何文本。没有错误,没有结果等。我尝试使用不同的搜索路径,使用参数(如-type f),并将我的cygwin路径设置为/ usr / local / bin:/ usr / bin。什么都行不通。

想法?

谢谢


嗯......如果我告诉你“去寻找”某事,你会怎么做?
not2qubit 2014年

如果您认为我的语法错误,那么很明显不了解find命令的工作原理。
DByrne 2014年

正确答案是:你想让我找到什么?
not2qubit 2014年

好的user1147688,这里是find应该如何工作:当调用“find /”时,它应该转储文件系统中所有对象的列表。
DByrne 2014年

可能$PATH是你搞砸了或丢失了。什么echo $PATH给你?(你在哪里设置它?)确保它被设置为系统变量而不是本地用户变量(在Windows中),但你也可以覆盖.bashrc
not2qubit 2014年

Answers:


0

这是非常奇怪的行为,我在使用Cygwin时从来没有遇到过类似的事情。我没有足够的声誉点来使用评论来询问信息,因此我将发布我将使用的调试技术。希望它们对任何有类似问题的人都有用。

首先,我尝试验证我是否正在运行正确的可执行文件。运行find --version应该返回如下内容:

find(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( 以查看命令(find)尝试使用的文件。成功调用open函数将显示如下:

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

打开的unsucfulful调用返回-1的值。请注意,并非所有尝试打开的文件都是命令正常运行所必需的。这是一个这样一个不成功的尝试的例子(locale.alias 如果存在信息将被读取但是找不到它的工作):

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

注意:我创建(然后删除)空testdir目录,因此没有捕获到strace输出文件的大量信息。


谢谢你,strace是个好主意。我最终消灭了操作系统,所以我无法尝试你的想法。
DByrne 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.