tìm lệnh trong cygwin đưa ra định dạng tham số không đúng


14

Tôi đang sử dụng cygwin trong máy tính windows của tôi. Tôi đang cố gắng thực hiện một tìm kiếm và nó đang đưa ra định dạng tham số không chính xác. Tại sao vậy?

$ 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
  • Tôi có nên cài đặt bất cứ thứ gì trong khi cài đặt cygwin hay tôi đang làm gì đó sai?
find  cygwin 

Câu trả lời:


19

Của bạn PATHlà xấu Nó có các thư mục hệ thống Windows trước các thư mục Cygwin hoặc có thể không có thư mục Cygwin nào cả. Thông báo này xuất phát từ lệnh Windows find(nó báo cáo tên của nó như FINDchữ hoa là một gợi ý).

Khi bạn khởi động trình bao Cygwin, bạn thường cần đặt PATH. Tôi khuyên bạn nên bắt đầu một vỏ đăng nhập (nếu tôi nhớ chính xác, đó là những gì các mục menu hệ thống Cygwin mặc định làm). Cygwin của bạn PATHnên có /usr/local/bin, /usr/bin/bin(ít nhất) trước bất kỳ thư mục không phải Cygwin nào.


1
Yup, đó có lẽ là nó. Lỗi này là do lệnh find bạn đã sử dụng là lệnh find của Windows, không phải lệnh của Cygwin.
Yanick Girouard

Hoặc nhập /usr/bin/findthay vìfind

Tôi đã có /usr/bintrong đường dẫn, tôi đoán cái vỏ sử dụng cái đầu tiên findđược tìm thấy trong $ PATH, là cái hệ thống. Tôi đã định loại bỏ nó (vì dù sao tôi cũng không cần nó) , nhưng tôi đoán một số tập lệnh hệ thống ngẫu nhiên có thể mong đợi điều này find. Vì vậy, sửa lỗi này đúng cách là viết bí danh alias find="/usr/bin/find"vào ~/.bashrc (hoặc bất kỳ vỏ nào bạn đang sử dụng) .
Hi-Angel

1

Tìm được cài đặt? "Mà tìm" trở lại là gì? Hãy nhớ rằng Windows có một dòng lệnh tích hợp tìm thấy Cygwin sẽ kết thúc bằng cách sử dụng nếu tìm thấy của chính nó là mia.


1

Câu trả lời từ Gilles là chính xác ở chỗ phiên bản findlệnh Windows xuất hiện trước phiên bản cygwin, và do đó, nó đang được gọi.

Tuy nhiên, việc đưa Cygwin lên trước sẽ có nghĩa là bất kỳ tệp bó nào sử dụng findlệnh windows bây giờ sẽ thực sự gọi findlệnh cygwin , đây có thể không phải là điều bạn muốn.

Cách cộng sinh nhất cho cả hai để làm việc, theo tôi, là làm như sau:

  1. Xác định vị trí findlệnh cygwin và đổi tên / sao chép nó thành lfind.exe(hoặc bất kỳ tên nào khác không phải là cửa sổ PATH)
  2. Trong ~/.bashrctệp của bạn thêm dòngalias find=lfind

Theo cách này, khi bạn chạy findtừ thiết bị đầu cuối cygwin, bạn sẽ sử dụng phiên bản cygwin, nhưng các tệp bó sẽ sử dụng phiên bản windows.

Lưu ý: Bạn vẫn sẽ cần thư mục bin Cygwin trên PATH của mình, nhưng giờ đây nó có thể được quay lại từ thư mục hệ thống windows.


0

Khi bạn cài đặt Cygwin, nó không cài đặt tất cả các gói có thể trừ khi bạn yêu cầu. Để thêm gói mong muốn, hãy xem phần giải thích tại đây trên Super User.

Hoặc chỉ thực hiện các hành động sau:

  1. Bắt đầu thiết lập, chọn một máy nhân bản và vào màn hình gói
  2. Chọn "Giữ" từ danh sách nút radio ở trên cùng
  3. Chọn gói mong muốn trong nhóm có liên quan
  4. Chọn "Tiếp tục"

0

Dưới đây là các tiện ích GNU như các cổng win32 riêng . Họ không cần cygwin để được chạy và đi kèm với trình bao (sh.exe), bao gồm grep, sed, awk, find, less, cat, tac, và nhiều hơn nữa.

Vấn đề với đường dẫn Windows sẽ còn tồn tại, nhưng có thể bạn đổi tên find thành gfind(gnu-find) hoặc để search, để dễ truy cập hơn và thêm thư mục coreutils vào PATH của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.