लिनक्स में छिपी हुई फाइलों को कैसे चोद और चेंब करें?


33

मैं पुनरावर्ती रूप से chmodया chownछिपी फ़ाइलों के लिए कैसे निष्पादित करूं?

sudo chmod -R 775 * छिपी हुई फ़ाइलों पर काम नहीं करता है।

एक ही बात के लिए चला जाता है sudo chown -R user:group

जवाबों:


35

यदि आप ठीक भी वर्तमान निर्देशिका chmod'ing कर रहे हैं, कि करते -Rहैं और भारी उठाने करते हैं। -Rछिपी हुई फ़ाइलों को अनदेखा नहीं करता है।

sudo chmod -R 775 .

14
यह ( * .*) इसे करने का सबसे सुरक्षित तरीका नहीं है। विशेष रूप से, यह मूल निर्देशिका में पुनरावृत्ति करेगा, जिसका अर्थ है कि यह chmodवर्तमान निर्देशिका के भाई बहन भी हैं। उचित तरीका होगा * ..?* .[^.]*या, और भी बेहतर होगा (वाइल्डकार्ड किसी भी फाइल से मेल नहीं खा सकता है) $(ls -A)
jpalecek

1
@jpalecek: का उत्पादन lsअप्राप्य है; इसे पार्स करने की कोशिश करना मुसीबत के लिए पूछ रहा है। उचित दृष्टिकोण शेल ग्लोबिंग का उपयोग करना है।
स्कॉट सेवन्स

हालांकि linux में आप chmod के लिए args के क्रम को बदलने की क्षमता रखते हैं, जब linux और OS X के बीच x-plat स्क्रिप्ट करते हैं, तो यह वह क्रम है जिसका आपको उपयोग करना चाहिए, जैसे, sudo chmod 775 -Rपेट-अप जाना होगा, इसलिए इस उत्तर पर टिकें ।
kayleeFrye_onDeck

35

* डिफ़ॉल्ट रूप से छिपी हुई फ़ाइलों को शामिल नहीं करता है, लेकिन यदि आप विवाद में हैं, तो आप इसके साथ कर सकते हैं:

shopt -s dotglob

बैश के builtinमैनुअल में इसके बारे में और पढ़ें :

यदि सेट किया जाता है, तो बैश में `से शुरू होने वाले फ़ाइल नाम शामिल हैं। ' फ़ाइल नाम विस्तार के परिणामों में।

*इसमें छिपी हुई फाइलें भी शामिल होंगी ।

chmod -R 775 *

इसे अक्षम करें:

shopt -u dotglob

2
इसमें कैसे करें zsh?
कुछ भी नहीं-विशेष-यहाँ


2

एक अन्य विकल्प यह है कि findमैं इसे पसंद करता हूँ क्योंकि आप इस पर बहुत ही महीन दाने लगा सकते हैं।

find <path to start from> -exec chown <options> {} \+

find -path '<path to include>' -exec chown <options> {} \+

केवल नकारात्मक पक्ष यह है कि findविभिन्न संस्करणों पर अलग-अलग वाक्यविन्यास हैं।


2

वर्तमान निर्देशिका की सभी फाइलें, छिपी हुई फाइलों सहित, पुनरावर्ती रूप से:

chmod 755 -R ./* ./.[!.]*

वर्तमान निर्देशिका में सभी फ़ाइलें , छुपी हुई फ़ाइलों सहित पुनरावृत्ति नहीं :

chmod 755 ./* ./.[!.]*

यह 2 डॉट्स से शुरू होने वाले अपवाद फ़ाइल नाम को नहीं बदलेगा, उदाहरण के लिए, "./..thisonescapesunharmed.txt"

इसके अलावा, "x" बिट को हटाने के लिए लापरवाह न हों, अन्यथा आपकी सभी निर्देशिकाएं सुलभ नहीं होंगी (एक एक्सर को dir में cd करने की आवश्यकता है)।

इस चेतावनी को याद रखें: नंगे का उपयोग कभी नहीं *लेकिन ./*बजाय।

निर्देशिकाओं पर अनुमतियाँ सेट करने में समस्याओं से बचने के लिए, findइसके बजाय उपयोग करें ।

find . -type f -exec chmod `VALUE` {} \;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.