unix 在 Windows 上的 cmder.exe 上查找命令

unix 在 Windows 上的 cmder.exe 上查找命令

我安装了康德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

findC)对于那些需要在跨操作系统脚本中使用的人来说,这是一个解决方法:在foo.shWindows 和 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 来使用它

相关内容