Unix найти команду на cmder.exe в Windows

10

Я установил эмулятор оболочки cmder для Windows.

Работает нормально, но я не могу использовать команду поиска Unix. Видимо, когда я печатаю:

'find .'

в терминале он пытается использовать ПОИСК Windows и выводит эту ошибку:

FIND: Parameter format not correct

Я действительно хотел бы использовать find, есть ли подсказка, как заставить это работать?

гейзенбаг
источник
1
Вам нужно сделать так, чтобы какой-либо каталог findпоявлялся раньше C:\Windows\System32(где Windows 'находит жизни) в PATHпеременной среды. Обычно это считается не очень хорошей идеей, так как это может сбить с толку другие программы, которые ожидают стандартную среду Windows. Скорее, вы должны увидеть, можете ли вы установить скрипт запуска в Cmder и заставить скрипт делать что-то вродеset PATH=C:\path\to\folder\with\unix\find;%PATH%
Боб
Я не знаю cmder, но в Linux / Unix which -a findбудут показаны все программы, которые могут выполняться с помощью команды find. Определите Unix find. Затем используйте его полный путь, измените порядок PATHкаталогов или установите псевдоним, если cmderэто поддерживается; Вы также можете переименовать Windows find.exeв wfind.exe. Если он эмулирует bash, то вы можете использовать встроенный type -a find.
AFH
@AFH which -a findвозвращается /c/WINDOWS/system32/find /usr/bin/find. К сожалению, тем не менее, работает /usr/bin/findдоходность The system cannot find the path specified.. Кажется, здесь нужен настоящий путь в стиле Windows. Запуск typeзапускает окна type, и, похоже cmder, не предоставляет Unix-подобную версию.
simlev

Ответы:

11

Самое простое решение - создать псевдоним 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]

Могу ли я предложить вам также попробовать Cygwin, где, среди прочего, findработает из коробки. Это то, что я использовал, чтобы выяснить местонахождение cmderпоставляемого find.exe.

Престижность @Bob и @AFH за их проницательные комментарии, а также @ Lưu Vĩnh Phúc за предложение другого простого решения:

переименуйте * nix findв другое имя, напримерfnd.exe

На самом деле это может быть предпочтительнее создания псевдонима, поскольку cmderпсевдонимы не работают в Windows 10, если Use legacy consoleв cmdсвойствах не выбрано (см., Как это сделать).

simlev
источник
Спасибо за предложение. Кажется, лучший путь. Я обычно использую Cygwin, когда на Windows, но по рабочим причинам я вынужден сейчас cmder. Я попробую это как можно скорее!
гейзенбаг
Преимущество @Heisenbug cmderв том, что он переносимый и не требует установки привилегированным пользователем.
simlev
Вы также можете просто переименовать * nix findв другое имя, напримерfnd.exe
phuclv
Я переименовал версию Unix, чтобы избежать модификации Windows. Но спасибо, что мне действительно не хватало, так это папки, в которой эти команды хранились и ваш ответ помог мне.
гейзенбаг
Разве gnu обычно не называется gfind в не-gnu системах?
4

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%"

Jerem
источник
0

Я установил SmartGit в Windows

Затем я добавляю C: \ Program Files (x86) \ SmartGit \ git \ bin (моя папка smartgit) в среду пути

нажмите win + r введите bash. в оболочке bash вы можете использовать команду find. в Cmder вы также можете ввести bash, чтобы использовать его

lovebanyi
источник