Я использую Cygwin в моей машине Windows. Я пытаюсь найти, и он дает неправильный формат параметра. Это почему?
$ ls
bootstrap.jar
catalina-tasks.xml
catalina.bat
catalina.sh
commons-daemon-native.tar.gz
commons-daemon.jar
cpappend.bat
digest.bat
digest.sh
setclasspath.bat
setclasspath.sh
shutdown.bat
shutdown.sh
startup.bat
startup.sh
tomcat-juli.jar
tomcat-native.tar.gz
tool-wrapper.bat
tool-wrapper.sh
version.bat
version.sh
$ find . -name "version.sh"
FIND: Parameter format not correct
- Должен ли я установить что-либо во время установки Cygwin или я делаю что-то не так?
/usr/bin/find
вместоfind
/usr/bin
в пути, я предполагаю , что оболочка использует первыйfind
Найденный в $ PATH, которая является системой один. Я собирался удалить его (потому что он мне все равно не нужен) , но я предполагаю, что некоторые случайные системные скрипты могут ожидать именно этогоfind
. Таким образом, фиксируя это правильный путь, чтобы написать псевдонимalias find="/usr/bin/find"
в~/.bashrc
(или любой другой оболочки вы используете) .Установлен ли find? Что возвращает "который находит"? Помните, что в Windows есть встроенная командная строка для поиска, которую Cygwin в конечном итоге использует, если его собственная находка - mia.
источник
Ответ от Жиля верен в том, что версия команды для Windows
find
предшествует версии cygwin, и поэтому она вызывается.Однако, если вы опередите Cygwin, это будет означать, что любые командные файлы, использующие команду windows
find
, теперь на самом деле будут вызывать команду cygwinfind
, что может не соответствовать вашим ожиданиям.На мой взгляд, самый симбиотический способ работы обоих заключается в следующем:
find
и переименуйте / скопируйте ееlfind.exe
(или любое другое имя, которое отсутствует в PATH Windows)~/.bashrc
файле добавьте строкуalias find=lfind
Таким образом, при запуске
find
из терминала cygwin вы будете использовать версию cygwin, но командные файлы будут использовать версию windows.Примечание: вам все еще понадобится каталог cygwin bin в вашей переменной PATH, но теперь он может быть дальше от системного каталога Windows.
источник
Когда вы устанавливаете Cygwin, он не устанавливает все возможные пакеты, если вы не попросите об этом. Для того, чтобы добавить желаемый пакет, посмотрите объяснение здесь на Super User.
Или просто выполните следующие действия:
источник
Вот GNU-утилиты как родные порты win32 . Им не нужен Cygwin для запуска, и они поставляются с оболочкой (sh.exe), включая grep, sed, awk, find, less, cat, tac и многие другие.
Проблема с путем Windows будет сохраняться, но, возможно, вы переименуете find в
gfind
(gnu-find) или вsearch
, чтобы сделать его более доступным, и добавите coreutils dir в вашу PATH.источник