आईडीई के रूप में यूनिक्स: फाइलें

आईडीई की महत्वपूर्ण विशेषताओं में से एक एकीकृत फ़ाइल प्रबंधन प्रणाली है। इसमें बुनियादी सुविधाओं को शामिल करना चाहिए, जैसे नाम बदलना, हटाना, हिलना, और अधिक विकास-विशिष्ट वाले: संकलन और वाक्यविन्यास जाँच। इसके अलावा, आकार, विस्तार या मुखौटा द्वारा खोज करने के लिए फ़ाइलों के समूहों के साथ काम करना सुविधाजनक होगा। इस पहले लेख में, मैं आपको किसी परियोजना में फ़ाइलों के समूहों के साथ काम करने के लिए किसी भी लिनक्स उपयोगकर्ता के लिए परिचित उपकरणों के कई उपयोग दिखाऊंगा।


फ़ाइल सूची


प्रशासक, एलएस कमांड के साथ परिचित हो जाता है, जो पहले इसका इस्तेमाल डायरेक्टरी कंटेंट की एक साधारण सूची को देखने के लिए करता है। कई प्रशासक यह भी जानते हैं कि सभी फ़ाइलों को सूचीबद्ध करने के लिए -a और -l स्विच का उपयोग कैसे किया जाता है, जिसमें '.' भी शामिल है '.' और '..' , और कॉलम द्वारा क्रमशः अधिक विस्तृत फ़ाइल जानकारी प्रदर्शित करने के लिए।

Ls के लिए कई और कुंजियाँ हैं, जिनका उपयोग कुछ हद तक कम किया जाता है, लेकिन प्रोग्रामिंग उद्देश्यों के लिए बहुत उपयोगी है:


चूंकि फ़ाइलों की सूची सादा पाठ है, इसलिए आप इसकी स्ट्रीम को विम पर निर्देशित कर सकते हैं, जहां आप प्रत्येक फ़ाइल में स्पष्टीकरण जोड़ते हैं, और फिर पाठ को एक सूची के रूप में सहेज सकते हैं या इसे README में जोड़ सकते हैं:

 $ ls -XR | vim - 


इस तरह की चीजों को बिना अधिक प्रयास के भी स्वचालित किया जा सकता है, जिसकी चर्चा मैं इस श्रृंखला के एक अन्य लेख में करूंगा।

फ़ाइल खोज


ताज्जुब की बात है, आप बिना किसी तर्क के " ढूंढ " लिखकर, सापेक्ष पथ सहित फाइलों की एक पूरी सूची प्राप्त कर सकते हैं, हालांकि क्रमबद्ध तरीके से उन्हें व्यवस्थित करना आमतौर पर सबसे अच्छा होता है:

 $ find | sort . ./Makefile ./README ./build ./client.c ./client.h ./common.h ./project.c ./server.c ./server.h ./tests ./tests/suite1.pl ./tests/suite2.pl ./tests/suite3.pl ./tests/suite4.pl 


यदि आप ls जैसी फ़ाइलों को सूचीबद्ध करना चाहते हैं, तो आप -ls जोड़ सकते हैं:

 $ find -ls | sort -k 11 1155096 4 drwxr-xr-x 4 tom tom 4096 Feb 10 09:37 . 1155152 4 drwxr-xr-x 2 tom tom 4096 Feb 10 09:17 ./build 1155155 4 -rw-r--r-- 1 tom tom 2290 Jan 11 07:21 ./client.c 1155157 4 -rw-r--r-- 1 tom tom 1871 Jan 11 16:41 ./client.h 1155159 32 -rw-r--r-- 1 tom tom 30390 Jan 10 15:29 ./common.h 1155153 24 -rw-r--r-- 1 tom tom 21170 Jan 11 05:43 ./Makefile 1155154 16 -rw-r--r-- 1 tom tom 13966 Jan 14 07:39 ./project.c 1155080 28 -rw-r--r-- 1 tom tom 25840 Jan 15 22:28 ./README 1155156 32 -rw-r--r-- 1 tom tom 31124 Jan 11 02:34 ./server.c 1155158 4 -rw-r--r-- 1 tom tom 3599 Jan 16 05:27 ./server.h 1155160 4 drwxr-xr-x 2 tom tom 4096 Feb 10 09:29 ./tests 1155161 4 -rw-r--r-- 1 tom tom 288 Jan 13 03:04 ./tests/suite1.pl 1155162 4 -rw-r--r-- 1 tom tom 1792 Jan 13 10:06 ./tests/suite2.pl 1155163 4 -rw-r--r-- 1 tom tom 112 Jan 9 23:42 ./tests/suite3.pl 1155164 4 -rw-r--r-- 1 tom tom 144 Jan 15 02:10 ./tests/suite4.pl 


ध्यान दें, इस मामले में मुझे 11 वें आउटपुट कॉलम के आधार पर क्रमबद्ध करना था, यानी फ़ाइल नामों से; इसके लिए -k स्विच का उपयोग किया जाता है।

इनलाइन फिल्टर के लिए सुंदर जटिल सिंटैक्स का पता लगाएं । निम्न उदाहरण कुछ सबसे उपयोगी दिखाते हैं जिनका उपयोग आप उन फ़ाइलों की सूची प्राप्त करने के लिए कर सकते हैं जिनकी आपको आवश्यकता है:


उपरोक्त सभी को जोड़ा जा सकता है। उदाहरण के लिए, पिछले 2 दिनों में संपादित सी स्रोत कोड खोजने के लिए, हम लिखते हैं:

 $ find -name '*.c' -mtime -2 

ढूँढें मिली हुई फ़ाइलों पर विभिन्न क्रियाएं कर सकती हैं। डिफ़ॉल्ट रूप से, यह सूची को मानक आउटपुट पर निर्देशित करता है, लेकिन कई अन्य विकल्प हैं:


अन्य फ़ाइल खोज



और फिर भी, बाहरी विशेषताओं की तुलना में अधिक बार, आपको उनकी सामग्री के आधार पर फ़ाइलों की खोज करने की आवश्यकता है, और यहां grep और विशेष रूप से grep -R मदद करने की जल्दी में है। यह कमांड किसी भी निर्दिष्ट पाठ से मेल खाने वाली वर्तमान निर्देशिका में खोज करता है:

 $ grep -FR 'someVar' . 


केस-असंवेदनशील झंडे को मत भूलना, क्योंकि grep डिफ़ॉल्ट रूप से केस-संवेदी है।

 $ grep -iR 'somevar' . 


आप मेल से मेल खाने वाली फ़ाइलों को भी मेल कर सकते हैं बिना grep -l का उपयोग किए हुए लाइनों के मिलान के। पाठ संपादक में आगे संपादन के लिए फ़ाइलों की सूची बनाते समय यह फिर से सुविधाजनक है:

 $ vim -O $(grep -lR 'somevar' .) 


यदि प्रोजेक्ट संस्करण नियंत्रण का उपयोग करता है, तो सभी मेटाडेटा आमतौर पर .svn , .hg .git या .hg । निश्चित स्ट्रिंग ( grep -F ) के साथ तुलना करके आप आसानी से ( grep -v ) अनावश्यक तत्वों को समाप्त कर सकते हैं:
 $ grep -R 'someVar' . | grep -vF '.svn' 

एक बहुत लोकप्रिय grep विकल्प है जिसे ack कहा जाता है, जो डिफ़ॉल्ट रूप से सभी समान भूसी को समाप्त कर देता है। एके आपको कई हैकर्स द्वारा प्यारे-संगत नियमित अभिव्यक्तियों (पीसीआरई) का उपयोग करने की अनुमति देता है। स्रोत कोड के साथ काम करने के लिए उसके पास बहुत सुविधाजनक साधन हैं। इस तथ्य के बावजूद कि अच्छे पुराने grep के साथ कोई समस्या नहीं है, क्योंकि यह हमेशा हाथ में है, मैं अत्यधिक संभव होने पर Ack को स्थापित करने की सलाह देता हूं। सभी लोकप्रिय यूनिक्स प्रणालियों के लिए, मानक रिपॉजिटरी में एक संबंधित पैकेज है।

मौलिक यूनिक्स प्रशंसक ग्रीप के इस तरह के अपेक्षाकृत नए विकल्प के उल्लेख से सबसे अधिक परेशान हैं, और यहां तक ​​कि पर्ल स्क्रिप्ट के रूप में भी। हालाँकि, मैं यह नहीं सोचना चाहूंगा कि यूनिक्स दर्शन और, विशेष रूप से, यूनिक्स को आईडीई के रूप में उपयोग करने के विचार का अर्थ है कि आधुनिक दिखने वाले विकल्पों को छोड़ देना जो वर्तमान समस्याओं को हल कर सकते हैं।

फ़ाइल मेटाडेटा



फ़ाइल उपयोगिता एक्सटेंशन, हेडर और अन्य विशेषताओं के आधार पर फ़ाइल के बारे में एक पंक्ति सारांश जानकारी प्रदर्शित करती है। अपरिचित फ़ाइलों के समूहों का पता लगाने के लिए खोज और xargs के साथ उपयोग किए जाने पर यह बहुत आसान है:
 $ find | xargs file .: directory ./hanoi: Perl script, ASCII text executable ./.hanoi.swp: Vim swap file, version 7.3 ./factorial: Perl script, ASCII text executable ./bits.c: C source, ASCII text ./bits: ELF 32-bit LSB executable, Intel 80386, version ... 

पैटर्न खोज


इस नोट को समाप्त करने के लिए, मैं आपको सलाह दूंगा कि आप टेम्पलेट द्वारा खोज और बैश कोष्ठक के प्रकटीकरण पर करीब से नज़र डालें। यह मेरे अलग लेख का विषय है।

उपरोक्त सभी प्रोग्राम लिखते समय यूनिक्स शेल को काफी शक्तिशाली फ़ाइल प्रबंधन टूल देता है।

जारी रखने के लिए ...

आईडीई के रूप में यूनिक्स: परिचय
आईडीई के रूप में यूनिक्स: फाइलें
आईडीई के रूप में यूनिक्स: टेक्स्ट के साथ कार्य करना
आईडीई के रूप में यूनिक्स: संकलन

Source: https://habr.com/ru/post/In151064/


All Articles