मैं पुनरावर्ती रूप से chmodया chownछिपी फ़ाइलों के लिए कैसे निष्पादित करूं?
sudo chmod -R 775 * छिपी हुई फ़ाइलों पर काम नहीं करता है।
एक ही बात के लिए चला जाता है sudo chown -R user:group।
मैं पुनरावर्ती रूप से chmodया chownछिपी फ़ाइलों के लिए कैसे निष्पादित करूं?
sudo chmod -R 775 * छिपी हुई फ़ाइलों पर काम नहीं करता है।
एक ही बात के लिए चला जाता है sudo chown -R user:group।
जवाबों:
यदि आप ठीक भी वर्तमान निर्देशिका chmod'ing कर रहे हैं, कि करते -Rहैं और भारी उठाने करते हैं। -Rछिपी हुई फ़ाइलों को अनदेखा नहीं करता है।
sudo chmod -R 775 .
lsअप्राप्य है; इसे पार्स करने की कोशिश करना मुसीबत के लिए पूछ रहा है। उचित दृष्टिकोण शेल ग्लोबिंग का उपयोग करना है।
sudo chmod 775 -Rपेट-अप जाना होगा, इसलिए इस उत्तर पर टिकें ।
* डिफ़ॉल्ट रूप से छिपी हुई फ़ाइलों को शामिल नहीं करता है, लेकिन यदि आप विवाद में हैं, तो आप इसके साथ कर सकते हैं:
shopt -s dotglob
बैश के builtinमैनुअल में इसके बारे में और पढ़ें :
यदि सेट किया जाता है, तो बैश में `से शुरू होने वाले फ़ाइल नाम शामिल हैं। ' फ़ाइल नाम विस्तार के परिणामों में।
*इसमें छिपी हुई फाइलें भी शामिल होंगी ।
chmod -R 775 *
इसे अक्षम करें:
shopt -u dotglob
zsh?
(D)chmod -R 775 *(D)
एक अन्य विकल्प यह है कि findमैं इसे पसंद करता हूँ क्योंकि आप इस पर बहुत ही महीन दाने लगा सकते हैं।
find <path to start from> -exec chown <options> {} \+
find -path '<path to include>' -exec chown <options> {} \+
केवल नकारात्मक पक्ष यह है कि findविभिन्न संस्करणों पर अलग-अलग वाक्यविन्यास हैं।
वर्तमान निर्देशिका की सभी फाइलें, छिपी हुई फाइलों सहित, पुनरावर्ती रूप से:
chmod 755 -R ./* ./.[!.]*
वर्तमान निर्देशिका में सभी फ़ाइलें , छुपी हुई फ़ाइलों सहित पुनरावृत्ति नहीं :
chmod 755 ./* ./.[!.]*
यह 2 डॉट्स से शुरू होने वाले अपवाद फ़ाइल नाम को नहीं बदलेगा, उदाहरण के लिए, "./..thisonescapesunharmed.txt"
इसके अलावा, "x" बिट को हटाने के लिए लापरवाह न हों, अन्यथा आपकी सभी निर्देशिकाएं सुलभ नहीं होंगी (एक एक्सर को dir में cd करने की आवश्यकता है)।
इस चेतावनी को याद रखें: नंगे का उपयोग कभी नहीं *लेकिन ./*बजाय।
निर्देशिकाओं पर अनुमतियाँ सेट करने में समस्याओं से बचने के लिए, findइसके बजाय उपयोग करें ।
find . -type f -exec chmod `VALUE` {} \;
* .*) इसे करने का सबसे सुरक्षित तरीका नहीं है। विशेष रूप से, यह मूल निर्देशिका में पुनरावृत्ति करेगा, जिसका अर्थ है कि यहchmodवर्तमान निर्देशिका के भाई बहन भी हैं। उचित तरीका होगा* ..?* .[^.]*या, और भी बेहतर होगा (वाइल्डकार्ड किसी भी फाइल से मेल नहीं खा सकता है)$(ls -A)।