我安装了康德Windows 的 shell 模拟器。
运行正常,但我无法使用 Unix 的 find 命令。显然,当我输入:
'find .'
在终端中它尝试使用 Windows 的 FIND 并输出此错误:
FIND: Parameter format not correct
我真的很想使用 find,有什么关于如何使其工作的提示吗?
答案1
find
最简单的解决方案是在安装文件夹中为可执行文件创建一个别名cmder
:
λ which find
/c/WINDOWS/system32/find
λ find --help
FIND: FIND: Parameter format not correct
λ alias find=C:\Files\Programs\cmder\vendor\git-for-windows\usr\bin\find.exe $*
λ find --help
Usage: /usr/bin/find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
我建议你也可以尝试一下赛格威除其他外,它find
开箱即用。这就是我用来确定cmder
-supplied的位置的方法find.exe
。
感谢@鲍勃和@AFH感谢他们的真知灼见,@Lưu Vĩnh Phúc建议另一个非常简单的解决方案:
将 *nix 重命名
find
为其他名称,例如fnd.exe
这实际上可能比创建别名更好,因为cmder
别名在 Windows 10 中不起作用,除非在属性Use legacy console
中选择了(请参阅cmd
如何去做吧。
答案2
Cmder\vendor\git-for-windows\usr\bin
被添加到 PATH 中Cmder\vendor\init.bat
。不幸的是,它被添加到结尾PATH,因此首先找到 Windows 的 find.exe。
幸运的是,这个问题很容易解决。只需在里面添加这一行Cmder\config\user-profile.cmd
:
set "PATH=%GIT_INSTALL_ROOT%\usr\bin;%PATH%"
答案3
对以前的答案的补充:
A)我建议使用CMDER_ROOT
多变的,可作为%CMDER_ROOT%
或$CMDER_ROOT
取决于环境访问(参见 .sh 示例并注意%GIT_INSTALL_ROOT%
以下)。
B)你可以定义你的Cmder 中的别名user_aliases.cmd
像这样:
[...]
;=
fnd=%CMDER_ROOT%\vendor\git-for-windows\usr\bin\find.exe $*
被加入到%CMDER_ROOT%\config\user_aliases.cmd
。
find
C)对于那些需要在跨操作系统脚本中使用的人来说,这是一个解决方法:在foo.sh
Windows 和 Linux 上运行时使用:
if [ "$(command -v find)" = "/c/WINDOWS/system32/find" ]; then
# Windows
FIND_CMD="$CMDER_ROOT\vendor\git-for-windows\usr\bin\find.exe"
else
FIND_CMD="find"
fi
# Your command here, for example:
$FIND_CMD my-folder -type f -not -iname 'exclude-me.md'
注意:%GIT_INSTALL_ROOT%
上面提到的可能与你想要的不同,例如我的情况:
λ echo %CMDER_ROOT%
C:\Dev\Programs\Cmder
λ echo %GIT_INSTALL_ROOT%
C:\Program Files\Git
注 2:虽然之前的答案在解释和提出的解决方案上都是正确的,但就我而言,需要更多的细节 - 我已尝试将其放入我的答案中。
答案4
我已经在 Windows 中安装了 smartgit
然后我将 C:\Program Files (x86)\SmartGit\git\bin (我的 smartgit 文件夹)添加到路径环境中
按 win+r 输入 bash。在 bash shell 中,您可以使用 find 命令。在 Cmder 中,您也可以输入 bash 来使用它