find คำสั่งใน cygwin การจัดรูปแบบพารามิเตอร์ไม่ถูกต้อง


14

ฉันใช้ 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 หรือฉันทำอะไรผิดหรือเปล่า?
find  cygwin 

คำตอบ:


19

คุณPATHไม่ดี มีไดเรกทอรีระบบ Windows ก่อนไดเรกทอรี Cygwin หรืออาจไม่มีไดเรกทอรี Cygwin เลย ข้อความนี้มาจากคำสั่ง Windows find(ซึ่งจะรายงานชื่อเป็นFINDตัวพิมพ์ใหญ่เป็นคำใบ้)

เมื่อคุณเริ่มต้นเปลือก Cygwin PATHคุณจะต้องตั้งค่า ฉันขอแนะนำให้คุณเริ่มต้นเปลือกเข้าสู่ระบบ (ถ้าฉันจำได้อย่างถูกต้องนั่นคือสิ่งที่รายการเมนูระบบ Cygwin เริ่มต้นทำ) Cygwin ของคุณPATHควรมี/usr/local/bin, /usr/binและ/bin(อย่างน้อย) ไปข้างหน้าของไดเรกทอรีไม่ใช่ Cygwin ใด ๆ


1
ใช่นั่นอาจเป็นได้ ข้อผิดพลาดนี้เป็นเพราะการค้นหาที่คุณใช้เป็นคำสั่งค้นหาของ Windows ไม่ใช่คำสั่ง cygwin
Yanick Girouard

หรือพิมพ์/usr/bin/findแทนfind

ฉันเคยพบมา/usr/binแล้วฉันเดาว่าเชลล์จะใช้สิ่งแรกที่findพบใน $ PATH ซึ่งเป็นระบบเดียว ผมกำลังจะเอามันออกไป(เพราะผมไม่ได้ต้องการมันอยู่แล้ว)findแต่ผมคิดว่าบางสคริปต์ระบบสุ่มอาจคาดหวังเพียงแค่นี้ ดังนั้นนี้แก้ไขวิธีการที่เหมาะสมคือการเขียนนามแฝงalias find="/usr/bin/find"เข้า(หรือสิ่งเปลือกคุณกำลังใช้)~/.bashrc
Hi-Angel

1

ติดตั้งค้นหาอยู่หรือไม่ "ซึ่งค้นหา" ผลตอบแทนอะไร? โปรดจำไว้ว่า Windows มีบรรทัดคำสั่งในตัวค้นหาว่า Cygwin จะใช้งานหากการค้นหาของตัวเองเป็น mia


1

คำตอบจาก Gilles นั้นถูกต้องในfindคำสั่งเวอร์ชัน Windows มาก่อนรุ่น cygwin และอื่น ๆ ที่ถูกเรียก

อย่างไรก็ตามการวาง Cygwin ไว้ล่วงหน้าจะหมายถึงไฟล์แบตช์ใด ๆ ที่ใช้findคำสั่งwindows จะเรียกfindคำสั่งcygwin ซึ่งอาจไม่ใช่สิ่งที่คุณต้องการ

วิธีการทาง symbiotic ที่สุดสำหรับทั้งสองในการทำงานในความคิดของฉันคือการทำด้านล่าง:

  1. ค้นหาfindคำสั่งcygwin และเปลี่ยนชื่อ / คัดลอกไปยัง lfind.exe(หรือชื่ออื่น ๆ ที่ไม่ได้อยู่บน windows PATH)
  2. ใน~/.bashrcไฟล์ของคุณเพิ่มบรรทัดalias find=lfind

วิธีนี้เมื่อคุณเรียกใช้findจากเทอร์มินัล cygwin คุณจะใช้เวอร์ชัน cygwin แต่แบตช์ไฟล์จะใช้เวอร์ชัน windows

หมายเหตุ: คุณยังคงต้องการไดเรกทอรี cygwin bin ใน PATH ของคุณ แต่ตอนนี้สามารถกลับมาได้อีกจากไดเรกทอรีระบบ windows


0

เมื่อคุณติดตั้ง Cygwin มันจะไม่ติดตั้งแพ็คเกจที่เป็นไปได้ทั้งหมดเว้นแต่คุณจะขอ ในการเพิ่มแพ็คเกจที่ต้องการให้ดูคำอธิบาย ที่นี่ใน Super User

หรือเพียงดำเนินการต่อไปนี้:

  1. เริ่มการติดตั้งเลือกมิเรอร์และไปที่หน้าจอแพ็คเกจ
  2. เลือก "Keep" จากรายการปุ่มตัวเลือกที่ด้านบน
  3. เลือกแพ็คเกจที่ต้องการในกลุ่มที่เกี่ยวข้อง
  4. เลือก "ดำเนินการต่อ"

0

นี่ GNU-utils พอร์ต พวกเขาไม่ต้องการให้ cygwin ทำงานและมาพร้อมกับ shell (sh.exe) รวมถึง grep, sed, awk, find, less, cat, tac และอื่น ๆ อีกมากมาย

ปัญหาเกี่ยวกับเส้นทางของ Windows จะยังคงอยู่ แต่บางทีคุณอาจเปลี่ยนชื่อ find to gfind(gnu-find) หรือเป็นsearchเพื่อให้เข้าถึงได้ง่ายขึ้นและเพิ่ม coreutils dir ให้กับ PATH ของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.