temukan perintah di cygwin yang memberikan format parameter tidak benar

14

Saya menggunakan cygwin di mesin windows saya. Saya mencoba mencari dan memberikan format parameter yang tidak benar. Mengapa demikian?

$ 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
  • Haruskah saya menginstal sesuatu saat menginstal cygwin atau saya melakukan sesuatu yang salah?

sumber

Jawaban:

19

Anda PATHburuk. Ini memiliki direktori sistem Windows sebelum direktori Cygwin, atau mungkin tidak memiliki direktori Cygwin sama sekali. Pesan ini berasal dari perintah Windows find(yang melaporkan namanya seperti FINDhuruf besar adalah petunjuk).

Ketika Anda memulai shell Cygwin, Anda biasanya perlu mengatur PATH. Saya sarankan Anda memulai shell login (jika saya ingat dengan benar, itulah yang dilakukan entri menu sistem sistem Cygwin default). Cygwin Anda PATHharus memiliki /usr/local/bin, /usr/bindan /bin(paling tidak) di depan direktori non-Cygwin mana pun.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
1
Yup, mungkin itu saja. Kesalahan ini karena find yang Anda gunakan adalah perintah find Windows, bukan cygwin.
Yanick Girouard
Atau ketik /usr/bin/findbukannyafind
Saya sudah /usr/bindi jalan, saya kira shell menggunakan yang pertama kali findditemukan di $ PATH, yang merupakan sistem. Saya hendak menghapusnya (karena saya toh tidak membutuhkannya) , tetapi saya kira beberapa skrip sistem acak mungkin mengharapkan hal ini find. Jadi, memperbaiki ini dengan cara yang benar adalah dengan menulis alias alias find="/usr/bin/find"ke ~/.bashrc (atau shell apa pun yang Anda gunakan) .
Hi-Angel
1

Apakah sudah terpasang? Apa yang dikembalikan "yang menemukan"? Ingatlah bahwa Windows memiliki baris perintah bawaan yang menemukan bahwa Cygwin akan menggunakan jika menemukan sendiri adalah mia.

James McLeod
sumber
1

Jawaban dari Gilles benar karena versi Windows dari findperintah tersebut diberikan sebelum versi cygwin, dan itulah yang disebut.

Meletakkan Cygwin di depan akan berarti bahwa setiap file batch yang menggunakan findperintah windows sekarang sebenarnya akan memanggil findperintah cygwin , yang mungkin bukan yang Anda inginkan.

Cara yang paling simbiotik bagi keduanya untuk bekerja, menurut saya, adalah melakukan hal berikut:

  1. Temukan findperintah cygwin dan ganti nama / salin ke lfind.exe(atau nama lain yang tidak ada di jendela PATH)
  2. Di ~/.bashrcfile Anda tambahkan barisalias find=lfind

Dengan cara ini, ketika Anda menjalankan finddari terminal cygwin Anda akan menggunakan versi cygwin, tetapi file batch akan menggunakan versi windows.

Catatan: Anda masih memerlukan direktori tempat penyimpanan cygwin di PATH Anda, tetapi sekarang bisa lebih jauh dari direktori sistem windows.

Mitch Kent
sumber
0

Saat Anda menginstal Cygwin, itu tidak menginstal semua paket yang mungkin kecuali Anda memintanya. Untuk menambahkan paket yang diinginkan, lihat penjelasannya di sini di Super User.

Atau cukup lakukan tindakan berikut:

  1. Mulai Pengaturan, pilih cermin, dan pergi ke layar paket
  2. Pilih "Simpan" dari daftar tombol radio di bagian atas
  3. Pilih paket yang diinginkan di bawah grup yang relevan
  4. Pilih "Lanjutkan"
Eugene S
sumber
0

Berikut adalah GNU-utils sebagai port win32 asli . Mereka tidak perlu cygwin untuk dijalankan, dan datang dengan shell (sh.exe), termasuk grep, sed, awk, find, less, cat, tac, dan banyak lagi.

Masalah dengan jalur Windows akan tetap ada, tetapi mungkin Anda mengganti nama find to gfind(gnu-find) atau menjadi search, agar lebih mudah diakses, dan tambahkan dir coreutils ke PATH Anda.

Pengguna tidak diketahui
sumber