Cygwin बैश सेड मेरी फाइलों को लॉक करता है


12

जब मैं साइबर कमांड में फाइलों को सेड कमांड से बदलता हूं, तो फाइल लॉक हो जाती है।

पुन: पेश:

  1. ओपन cmdऔर cdकरने के लिए गैर-उपयोगकर्ता निर्देशिका (फ़े temp)
  2. echo aaa > test.txt
  3. टेक्स्टडिटर में खोलें, लाइन जोड़ें, => कार्यों को बचाने की कोशिश करें
  4. %CYGWIN_HOME%\bin\bash -c "sed -i 's/aaa/bbb/' test.txt"
  5. Texteditor में, एक और लाइन जोड़ें और => "प्रवेश निषेध" को बचाने की कोशिश करें

WTF ?! मैं लॉक किए बिना किसी फ़ाइल को कैसे सीड कर सकता हूं, या बाद में फ़ाइल हैंडल को जारी कर सकता हूं?

  • Windows सुरक्षा अनुमतियाँ पूरी तरह से फ़ाइल पर खराब हो गई हैं:

    इससे पहले अनुमतियाँ:

    पहले अनुमति (छवि!)

    इसके बाद अनुमतियाँ:

    अनुमति के बाद (छवि!)

  • हालांकि यह उपयोगकर्ता निर्देशिका में काम करता है ( Desktop)

  • मैंने फाइल को LockHunter के साथ चेक किया लेकिन कोई भी प्रक्रिया फ़ाइल को लॉक करने के लिए प्रकट नहीं हुई
  • सिगविन एफएक्यू में कुछ कार्यक्रमों के साथ हस्तक्षेप का उल्लेख किया गया है। इसने एंटीवायर और कैटलिस्ट की स्थापना रद्द करने और रिबूट करने की कोशिश की।
  • कोशिश कर रहा UnxTools (दुर्घटनाओं), GnuWin32 (sed inplace प्रतिस्थापन समर्थन नहीं करता), Interex (संस्थापक का समर्थन नहीं करता W7 प्रो) ... * विलाप *

2
यह सिर्फ पेंचदार विंडोज दर्शन की तरह लगता है 'उपयोगकर्ताओं को खुद से बचाना चाहिए', मैं देखता हूं कि हर समय विंडोज और साइगविन / लिनक्स फाइलों को मिलाने और मिलान करने की कोशिश की जाती है। सौभाग्य।
21

+1 लंबरदार। मैंने साइगविन में इस व्यवहार की जाँच की और आप सही कह रहे हैं। यह काफी अजीब है। फ़ाइल लॉक नहीं है (जैसे कि यह उपयोग में नहीं है)। फ़ाइल अनुमतियाँ केवल पढ़ने / पढ़ने लिखने की अनुमतियाँ संशोधित हो जाती हैं।

मैं W7 64bit पर GnuWin32 sed का उपयोग किया है और जगह प्रतिस्थापन के साथ कोई परेशानी नहीं थी। यह sed 4.2.1 है जिसे मैंने getGnuWin32 प्रोजेक्ट के साथ डाउनलोड किया है ।
स्पेंसर रथबुन

जवाबों:



5

मेरे पास जावा स्रोत कोड फ़ाइलों से भरे फ़ोल्डर को स्वचालित रूप से संसाधित करने के लिए साइबर के तहत grep और sed के साथ संयोजन का उपयोग करने के बाद मुझे बिल्कुल वैसी ही परेशानी थी। सिड ने मेरी फ़ाइलों की NTFS फ़ाइल अनुमतियों को गड़बड़ कर दिया, जो एक रिबूट के बाद भी लगातार बनी हुई थी, इसलिए मैंने इसे ठीक करने का एक आसान तरीका खोजा।

मुझे वास्तव में फ़ाइल मानों को पुराने मूल्यों पर वापस लाने का एक आसान तरीका मिला। यह एक पूरे फ़ोल्डर के लिए पुनरावर्ती रूप से किया जा सकता है, जो मेरे लिए महत्वपूर्ण है, क्योंकि मैंने एक साथ कई फ़ाइलों को संशोधित किया है (कई सौ)। अफसोस की बात है, मैं केवल मेनू प्रविष्टियों के लिए जर्मन नामों को जानता हूं, इसलिए मुझे यकीन नहीं है कि मेनू प्रविष्टियों (विंडोज एक्सप्लोरर में) को सही अंग्रेजी में कैसे कहा जाता है।

जर्मन में, आप ऐसा करते हैं: उस फ़ोल्डर के मूल फ़ोल्डर पर राइटक्लिक करें जहां मैंने sed, "Eigenschaften" (संदर्भ मेनू), "Sicherheit" (संवाद में टैब), "Erweitert" (बटन), "Berechtigungen ändern ... "(UAC प्रॉम्प्ट वाला बटन), अब मैं दोनों चेकबॉक्स की जांच करता हूं (ऊपरी एक पहले से सेट है, लेकिन निचला नहीं है, लेकिन होना है)। अब मैं तीन बार "ओके" पर क्लिक करता हूं।

इसके द्वारा किया जाने वाला वास्तविक परिवर्तन यह है कि निचला चेकबॉक्स विंडोज को फ़ोल्डर की सामग्री के लिए वर्तमान अनुमतियों को बदलने के लिए मजबूर करता है, जिस फ़ोल्डर को आपने सही तरीके से अनुमति दी है, इसलिए सभी टूटी हुई अनुमतियों को ठीक किया जाता है। मेरे लिए एक आकर्षण की तरह काम किया है, और वास्तव में त्वरित है (बहुत सारी फ़ाइलों के लिए केवल कुछ सेकंड)।

संभावित अनुवाद (मेरे द्वारा अनुमानित):

  • "एगेंसचेफ्टेन" -> "गुण"
  • "सिचारेहित" -> "सुरक्षा"
  • "Erweitert" -> "उन्नत"
  • "बेरेचिटुंगेन ओन्डर्न ..." -> "अनुमतियां बदलें ..."

2

मैंने परीक्षण के अपने सेट चलाए, और, वास्तव में, फ़ाइल की अनुमतियाँ r-xr-x के लिए सेट हो जाती हैं --- बाद में sed कमांड और बाद में cygwin कमांड इसे केवल पढ़ने के लिए फ़ाइल के रूप में देखेंगे।

C:\Temp>echo aaa > test.txt
C:\Temp>ls -l
total 1
----------+ 1 bikeguy ???????? 6 Feb 21 08:51 test.txt
C:\temp>sed -i 's/aaa/bbb/' test.txt
C:\temp>cat test.txt
bbb
C:\temp>ls -l test.txt
-r-xr-x---+ 1 bikeguy mkgroup-l-d 5 Feb 21 08:52 test.txt
C:\temp>

ये -r-xr-x --- अनुमतियाँ कुछ सॉफ़्टवेयर द्वारा बाद में लिखने से रोकती हैं:

C:\temp>echo xxx > test.txt
Access is denied.
C:\temp>

इसलिए, वर्कअराउंड फ़ाइल पर एक अतिरिक्त chmod जोड़ना होगा

C:\temp>chmod 777 test.txt
C:\temp>echo xxx > test.txt
C:\temp>

अजीब बात है पहली अनुमति मुखौटा '---------- + 1 लेंगी ????????' जिसे मैं Cygwin / Windows का उपयोग करके भी चलाता हूं। फिर आप लिखते हैं 'ये -r-xr-x --- अनुमतियाँ बाद में किसी सॉफ़्टवेयर द्वारा लिखने से रोकती हैं:' तो शायद 'कुछ सॉफ़्टवेयर' एक अलग समूह के अंतर्गत चलता है और क्योंकि कोई एक्सेस नहीं है 'अन्य' अनुमतियाँ, कारण बनता है समस्या? धन्यवाद, इस डिबगिंग ने मुझे इस समस्या से निपटने में मदद की है। आप सभी को शुभकामनायें।
शेल्टर

हाँ, @ शेलेटर मैंने उस पर भी ध्यान दिया जब मैं उत्तर पर शोध कर रहा था। मैंने माना कि '----------- +' लाइन का मतलब कोई सुरक्षा मौजूद नहीं है (इसलिए आपके पास पूरी पहुंच है) जबकि '-r-xr-x --- +' का मतलब सुरक्षा मौजूद है जहां लेखन पहुंच है लापता। अगर मैंने एक chmod 000 किया तो मुझे '---------- +' भी मिलेगा, लेकिन इस बार निश्चित रूप से सुरक्षा है और इस फ़ाइल को पढ़ने या लिखने के लिए मेरे पास कोई विशेषाधिकार नहीं है।

मैं git संस्करण 1.9.5.msysgit.1 का उपयोग कर रहा हूं, मैं भी यही मुद्दा देखता हूं, मैं chmod 777 test.txtइस मुद्दे को हल करने के लिए कमांड का उपयोग करता हूं ।
ollydbg23
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.