找不到Vowpal Wabbit命令:没有这样的文件或目录

时间:2015-01-03 22:26:41

标签: bash cygwin

当我输入此命令时:

./vw -d click.train.vw -f click.model.vw --loss_function logistic

在cygwin上我收到了这个错误:

  

-bash:./ vw:没有这样的文件或目录

我实际上想要实施“预测网络机器学习点击率”网站链接以供参考: http://mlwave.com/predicting-click-through-rates-with-online-machine-learning/

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

根据常见错误回答。

以不精确的名称执行

带空格的文件名

假设您在命令行中编写ls并获取以下内容:

$ ls 
anyfile  command 

然后,您使用./command调用命令并获取以下内容:

$ ./command
bash: ./command: No such file or directory

在这里你可以认为ls是错误的,但实际情况是你不能轻易识别文件名是否有例如前导或尾随空格:

$ ls -Q  # -Q, --quote-name -> enclose entry names in double quotes
"anyfile"  "command "

如您所见,此处我的command有一个尾随空格:

$ ./"command "  # it works

扩展名为

的文件名

一个常见的错误是通过名称调用命令而没有扩展名(如果有的话) 让我们命名命令:command.sh

$ ./command # wrong
$ ./command.sh # OK

错误的文件path

如果使用前缀./调用命令,则需要位于当前目录($PWD)中。如果不是,你会得到:

$ ./command # relative path -> same as "$PWD/command"
bash: ./command: No such file or directory

在这种情况下,您可以尝试以下方法:

按绝对路径执行命令

$ /home/user/command # absolute path (example). It starts with a slash (/).

让shell找到命令

如果只提供没有斜杠的命令名,bash会在$PATH变量的每个目录中搜索名为command的可执行文件。

$ command

您可以使用which命令进行搜索:

$ which command
/usr/bin/command

如果搜索失败,您会得到类似的信息:

$ which unexistent_command
which: no unexistent_command in (/usr/local/sbin:/usr/local/bin:/usr/bin)

破碎link

现在,假设您在命令行中编写ls -Q并获取以下内容:

$ ls -Q
"anyfile"  "command"

这一次,您可以100%安全command存在,但是当您尝试执行它时:

$ ./command
bash: ./command: No such file or directory

原因? bash抱怨command并不存在,但不存在的是Symbolic link指向的文件command。 e.g:

$ ls -l
total 0
-rw-r--r-- 1 user users  0 Jan 14 02:12 anyfile
lrwxrwxrwx 1 user users 27 Jan 14 02:12 command -> /usr/bin/unexistent_command

$ ls /usr/bin/unexistent_command
ls: cannot access /usr/bin/unexistent_command: No such file or directory

请注意,以下内容肯定会引发您正在获得的错误...

执行permission

要执行文件,必须激活 x 位。使用ls -l,您可以检查文件权限。

$ ls -l command
-rw-r--r-- 1 user users 0 Jan  3 19:52 command

在这种情况下(它没有激活 x 位),您可以通过chmod授予权限:

$ chmod +x command
$ ls -l command
-rwxr-xr-x 1 user users 0 Jan  3 19:52 command