2010-09-30 10 views
18

में शेल कमांड का उपयोग करके फ़ाइलों और फ़ोल्डर के लिए रिकर्सिवली अनुमति के लिए अनुमति की अनुमति लिनक्स में हम फ़ाइलों और फ़ोल्डरों के अनुमति मोड को बदलने के लिए निम्न आदेश का उपयोग कर सकते हैं।मैक

"/ उपयोगकर्ता/टेस्ट/डेस्कटॉप/पाथ" -exec * chmod 777 {} \;

मैं मैक के लिए ऐसा कैसे कर सकता हूं क्योंकि मुझे निम्न त्रुटि दोहराई जा रही है।

खोज: TEST_FILE: ऐसी कोई फ़ाइल या निर्देशिका

उत्तर

21

तुम बस आर (पुनरावर्ती) ध्वज का उपयोग कर सकते हैं।

chmod -R 777 /Users/Test/Desktop/PATH 
32

मुद्दा है, कि * अपने खोल से व्याख्या हो रही है और अपने वर्तमान कार्यशील निर्देशिका में होने वाला TEST_FILE नाम की एक फ़ाइल के लिए विस्तार हो रहा है, ताकि आप आदेश TEST_FILE नामित निष्पादित करने के लिए find कह रहे हैं जो अस्तित्व में नहीं है मुझे यकीन नहीं है कि आप उस * के साथ पूरा करने का प्रयास कर रहे हैं, आपको बस इसे हटा देना चाहिए।

इसके अलावा, आपको -exec program '{}' \; के बजाय idiom -exec program '{}' \+ का उपयोग करना चाहिए ताकि find प्रत्येक फ़ाइल के लिए एक नई प्रक्रिया को फोर्क न करे। ; के साथ, प्रत्येक फ़ाइल के लिए एक नई प्रक्रिया को फोर्क किया जाता है, जबकि + के साथ, यह केवल एक प्रक्रिया को फोर्क करता है और एक ही कमांड लाइन पर सभी फ़ाइलों को पास करता है, जो chmod जैसे सरल कार्यक्रमों के लिए अधिक कुशल है।

अन्त में, chmod, -R ध्वज के साथ अपने आप ही पुनरावर्ती परिवर्तन ऐसा कर सकते हैं जब तक आप विशिष्ट फ़ाइलों के लिए खोज करने की जरूरत है, तो बस इस कार्य करें: के लिए

:

chmod -R 777 /Users/Test/Desktop/PATH 
5

CHMOD का उपयोग कर हाँ तक पुनरावर्ती फ़ाइल:

chmod -R 777 foldername or pathname 

गैर पुनरावर्ती के लिए:

chmod 777 foldername or pathname 
+0

वे दो समान दिखते हैं। O_o –

+0

यदि मैक ऑपरेशन के बारे में शिकायत नहीं करता है, तो सुडो –

3

मैं नहीं एक मैक OSX मशीन पर लेकिन लिनक्स पर बैश में मैं केवल निर्देशिका chmod के लिए निम्न की तरह कुछ का उपयोग यह परीक्षण करने के लिए है:

find . -type d -exec chmod 755 {} \+ 

लेकिन यह भी एक ही बात करता है:

chmod 755 `find . -type d` 

और इसलिए इस करता है:

chmod 755 $(find . -type d) 

पिछले दो रों के विभिन्न रूपों का उपयोग कर रहे ubcommands। पहला बैकटीक्स (पुराना और अवमूल्यित) और अन्य $() उप-कॉमांड वाक्यविन्यास का उपयोग कर रहा है।

तो मुझे लगता है कि आपके मामले में निम्नलिखित आप जो चाहते हैं वह करेंगे।

chmod 777 $(find "/Users/Test/Desktop/PATH") 
+1

के साथ निष्पादित करें, मुझे लगता है कि यह एक बेहतर उत्तर है क्योंकि ज्यादातर मामलों में फ़ाइलों और निर्देशिकाओं में समान अनुमति नहीं होगी। लेकिन मुझे लगता है कि '।' संदर्भ खतरनाक है - यदि आप गलत निर्देशिका में हैं तो आप आसानी से गड़बड़ कर सकते हैं। अगर तर्क सूची बहुत लंबी है तो 2 और 3 उत्तर भी काम नहीं करते हैं। – mrtnmgs