cygwin में कमांड पाएं, पैरामीटर फॉर्मेट सही नहीं दे रहा है


14

मैं अपनी विंडोज़ मशीन में साइबरविन का उपयोग कर रहा हूं। मैं एक खोज करने की कोशिश कर रहा हूं और यह पैरामीटर प्रारूप को सही नहीं दे रहा है। ऐसा क्यों है?

$ 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
  • क्या मुझे साइबरविन स्थापित करते समय कुछ भी स्थापित करना चाहिए या क्या मैं कुछ गलत कर रहा हूं?
find  cygwin 

जवाबों:


19

तुम्हारा PATHबुरा है। यह साइगविन निर्देशिकाओं से पहले विंडोज सिस्टम निर्देशिका है, या शायद Cygwin निर्देशिका बिल्कुल नहीं है। यह संदेश विंडोज कमांड से आता है find(कि यह अपना नाम रिपोर्ट करता है जैसे FINDकि अपरकेस एक संकेत है)।

जब आप साइग्विन शेल शुरू करते हैं, तो आपको आमतौर पर सेट करने की आवश्यकता होती है PATH। मैं अनुशंसा करता हूं कि आप एक लॉगिन शेल शुरू करें (यदि मैं सही ढंग से याद करता हूं, तो यही डिफ़ॉल्ट सिग्विन सिस्टम मेनू प्रविष्टियां हैं)। आपका Cygwin PATHहोना चाहिए /usr/local/bin, /usr/binऔर /bin(कम से कम) किसी भी गैर Cygwin निर्देशिका के आगे।


1
हाँ, यह शायद है। यह त्रुटि है क्योंकि आपके द्वारा उपयोग किया गया खोज विंडोज की खोज कमांड है, न कि साइबरविन की।
यानिक गिरौद

या /usr/bin/findइसके बजाय टाइप करेंfind

मैं /usr/binरास्ते में पड़ा हूं, मुझे लगता है कि शेल find$ PATH में पाया गया पहला प्रयोग करता है , जो सिस्टम एक है। मैं इसे हटाने वाला था (क्योंकि मुझे इसकी किसी भी तरह की आवश्यकता नहीं थी) , लेकिन मुझे लगता है कि कुछ यादृच्छिक सिस्टम स्क्रिप्ट बस यही उम्मीद कर सकते हैं find। तो, यह तय करने के लिए सही रास्ता एक उपनाम लिखना है alias find="/usr/bin/find"में ~/.bashrc (या जो भी आप उपयोग कर रहे शेल)
हाय-एंजेल

1

स्थापित किया गया है? "जो पाता है" वापसी क्या है? याद रखें कि विंडोज में एक अंतर्निहित कमांड लाइन है जो यह दर्शाता है कि Cygwin का उपयोग करना समाप्त हो जाएगा यदि उसका स्वयं का खोज मिया है।


1

गाइल्स का जवाब सही है कि findकमांड का विंडोज संस्करण साइबरविन संस्करण से पहले आता है, और इसलिए इसे बुलाया जा रहा है।

हालांकि Cygwin को आगे रखने का मतलब होगा कि विंडोज़ findकमांड का उपयोग करने वाली कोई भी बैच फ़ाइलें अब वास्तव में cygwin findकमांड को कॉल करेंगी , जो कि आप नहीं चाहते हैं।

मेरी राय में, दोनों के लिए सबसे सहजीवी तरीका है, नीचे करने के लिए:

  1. साइबर findकमांड का पता लगाएँ और उसका नाम बदलें lfind.exe(या किसी और नाम पर जो विंडोज़ पीएटीएच पर नहीं है)
  2. अपनी ~/.bashrcफ़ाइल में लाइन जोड़ेंalias find=lfind

इस तरह, जब आप findसाइबरविन टर्मिनल से भागते हैं तो आप साइबरविन संस्करण का उपयोग करेंगे, लेकिन बैच फाइलें विंडोज़ संस्करण का उपयोग करेंगी।

नोट: आपको अभी भी अपने PATH पर साइबर बिन निर्देशिका की आवश्यकता होगी, लेकिन यह अब विंडोज़ सिस्टम निर्देशिका से वापस हो सकता है।


0

जब आप Cygwin स्थापित कर रहे हों, तब तक यह सभी संभावित पैकेजों को स्थापित नहीं करता है जब तक आप इसे नहीं पूछते हैं। एक वांछित पैकेज जोड़ने के लिए, सुपर उपयोगकर्ता पर यहां स्पष्टीकरण पर एक नज़र डालें ।

या बस निम्नलिखित क्रियाएं करें:

  1. सेटअप शुरू करें, एक दर्पण चुनें, और पैकेज स्क्रीन पर जाएं
  2. शीर्ष पर रेडियो बटन सूची से "रखें" चुनें
  3. संबंधित समूह के तहत वांछित पैकेज का चयन करें
  4. "जारी रखें" चुनें

0

यहाँ GNU-utils के रूप में देशी win32 पोर्ट हैं । उन्हें चलने के लिए साइबरविन की जरूरत नहीं है, और एक शेल (sh.exe) के साथ आते हैं, जिसमें grep, sed, awk, find, less, cat, tac, और बहुत कुछ शामिल हैं।

विंडोज पथ के साथ समस्या बनी रहेगी, लेकिन हो सकता है कि आप इसका नाम बदलकर gfind(ग्नू-खोज) या फिर search, इसे और अधिक आसानी से सुलभ बनाने के लिए, और अपने पैट में डीरूटिल्स डीआईआर जोड़ दें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.