Bash - 没有这样的文件,但该文件存在

Bash - 没有这样的文件,但该文件存在

我最近安装了一个Debian Jessie amd64无头服务器(使用其中一个网络安装)。服务器已启动并运行,系统按预期工作。
但后来我编译了一个.cgi(用 C++ 编写的)。编译(使用g++ 4.9.2)进行得很顺利,但当我尝试从中执行文件时,bash它显示No such file or directory
当我阅读有关此错误的其他帖子时,我尝试使用fileldd甚至cat命令,但所有帖子都说他们找不到该文件。按预期
ls -l显示具有权限的文件。 但 bash-completion 什么也不做,它不会自动完成路径。755

但现在变得有趣了:
使用midnight commander我可以成功读取、编辑和执行二进制文件并apache列出完整的目录索引,包括.cgi甚至允许我下载它。

发生了什么事?
由于我可以从中执行它,因此mc我认为这与可执行文件本身无关。bash
可能已损坏吗?
在此先感谢您的任何见解!

答案1

您可以在目录中搜索该文件并将所有文件名转换为十六进制,如下所示:

find . -exec sh -c 'echo -n "$1" | xxd' _ {} \;

它打印(例如):

0000000: 2e2f 696e 6465 782e 6367 69              ./index.cgi
0000000: 2e2f 696e 6465 782e 6367 690a            ./index.cgi.

第二行index.cgi末尾有一个换行符 ( 0a)。您可以查看文件的名称,并将其与示例输出中的第一行进行比较。如果一切正确,文件名应该与第一行完全一样。

答案2

使用updatedb命令。这将更新您的目录数据库。请参阅参考资料了解更多信息updatedb 文档

相关内容