प्रकार (बैश बिल्डिंस) का उपयोग क्या है?


17

मुझे बैश स्क्रिप्ट में एक आदेश मिला जिसमें मैंने पाया:

find /var/log/abcd -type f

उपर्युक्त कमांड लॉग फाइलों की सफाई के संदर्भ में थी। मुझे पता है कि क्या findकरता है।

देखने के बाद -type f , मैंने इसके लिए मैनुअल पेज देखा। मुझे इसे BASH_BUILTINS (1) के मैन पेज में देखने को मिला

typeकमांड के तहत -f ध्वज का वर्णन है: -

The -f option suppresses shell function lookup, as with the command builtin.

निम्नलिखित मेरे प्रश्न हैं:

  1. का उपयोग क्या है type ?
  2. का क्या महत्व है -fध्वज ?
  3. के typeसाथ उपयोग करने का क्या फायदा हैfindकमांड के ?

[EDIT]: - अब तक की सभी टिप्पणियों और उत्तरों को पढ़ने के बाद, मैं -type option in command findVs की मेरी गलत व्याख्या के कारण का उल्लेख करना चाहूंगा type command। यह सब इसलिए हुआ क्योंकि मैं मान रहा था और आज तक findएक ही माइनस साइन '-' , उदाहरण के साथ केवल लघु विकल्प ( कमांड के मामले में टेस्ट ) देखा है ls -l। अधिकांश बार मैंने दोहरे माइनस साइन '-' , उदाहरण के साथ लंबे विकल्प देखे हैं ls --version


1
typeअंतर्निहित आदेश द्वारा नहीं किया जाता find। कुछ और -typeकरने का विकल्प find। देखें help typeऔर man findअपने जवाब पाने के लिए।

1
यह विशिष्ट गलत व्याख्या बहुत विशिष्ट है और एक प्रश्न के रूप में दूसरों की मदद करने की संभावना नहीं है
एंथन नोव

9
क्यों डाउनवोटिंग? हालांकि सवाल यह दिखाता है कि ओपी यूनिक्स के बारे में ज्यादा नहीं जानता है, लेकिन उन आधारों पर सवाल उठाना सही नहीं है। यहां तक ​​कि एक आदमी पेज को पढ़ने में भी अक्षय बहुत आगे निकल गए, जो ज्यादातर लोग यहां सवाल पूछते हैं।
स्टीफन चेज़लस

कृपया अपने प्रश्न के शीर्षक पर विचार करें, क्योंकि आपका वर्तमान शीर्षक ऐसे लोगों को रोक रहा है जो वास्तव में सटीक उत्तर प्राप्त करने से पहले बने 'प्रकार' में बैश के उपयोग की तलाश कर रहे हैं ..
सजुक

जवाबों:


21

इस मामले typeमें बने बैश का कोई लेना-देना नहीं हैtype , लेकिन बाद में उस पर और अधिक।

थोड़ा सा "टाइप" के

BASH अंतर्निहित typeकमांड आपको कमांड के बारे में जानकारी देता है। इस प्रकार:

$ type type
type is a shell builtin

वाक्य रचना है:

type [-tap] [name ...]
  • -t: यदि मिला हो तो ही टाइप करें
  • -a: दोनों अंतर्निहित और अन्य, कमांड की सभी घटनाओं को प्रिंट करें।
  • -p: उस डिस्क फ़ाइल को प्रिंट करें जिसे कॉल ऑन कमांड, या कुछ भी नहीं किया जाएगा।

यदि हम देखो time, killऔर catएक उदाहरण के रूप:

$ type time kill cat
time is a shell keyword
kill is a shell builtin
cat is /bin/cat

$ type -t time kill cat
keyword
builtin
file

$ type -a time kill cat
time is a shell keyword
time is /usr/bin/time
kill is a shell builtin
kill is /bin/kill
cat is /bin/cat

$ type -ta time kill cat
keyword
file
builtin
file
file

अब, यह निर्दिष्ट करता है कि यदि आप बैश शेल और प्रकार में हैं time some_cmd, तो बैश बिलिन timeका उपयोग किया जाता है। सिस्टम का उपयोग करने के लिए timeआप कर सकते हैं/usr/bin/time some_cmd

एक तरीका अक्सर यह सुनिश्चित करने के लिए उपयोग किया जाता है कि सिस्टम, और अंतर्निहित नहीं, कमांड का उपयोग करके किया जाता है which

tt=$(which time)

और फिर $ttकॉल सिस्टम का उपयोग करें time


प्रश्न में आज्ञा

इस मामले -typeमें कमांड के लिए एक विकल्प है find। विकल्प एक तर्क लेता है जिसके द्वारा इकाई का प्रकार निर्दिष्ट किया जाता है। उदाहरण

find . -type f  # File
find . -type d  # Directory

और भी हैं, man findबाकी की जाँच करें ।

आप कर सकते हैं विशिष्ट विकल्प की खोज करने के लिए (आदमी में)

/ ^ \ S * प्रकारEnter

तब का उपयोग nके लिए अगले आप इसे खोजने के लिए जब तक।


शेल कमांड के बारे में थोड़ा

यह व्यक्तिगत व्याख्या का एक सा है।

इस विशिष्ट मामले में कुछ चीजें ध्यान देने योग्य हैं, वे हैं कमांड, विकल्प, तर्क और पाइप।

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

  • कमांड: एक प्रोग्राम या बिल्ट-इन
  • पैरामीटर: कमांड शब्द के बाद एक इकाई।
  • विकल्प: एक वैकल्पिक पैरामीटर।
  • तर्क: एक आवश्यक पैरामीटर।

कमांड विनिर्देशन में वर्ग कोष्ठक विकल्पों को निर्दिष्ट करने के लिए उपयोग किया जाता है और, वैकल्पिक रूप से कम / अधिक तब, तर्क निर्दिष्ट करने के लिए उपयोग किया जाता है। इस प्रकार:

foo [-abs] [-t <bar>] <file> ...
foo [-abs] [-t bar] file ...

देता है -a -bऔर -sके रूप में वैकल्पिक पैरामीटर, और fileएक एक की आवश्यकता है। -tवैकल्पिक है, लेकिन यदि निर्दिष्ट आवश्यक तर्क लेता है bar। डॉट्स यह दर्शाते हैं कि यह कई फाइलें ले सकता है।

यह कोई सटीक विनिर्देश नहीं है, और यह सुनिश्चित करने के लिए अक्सर manया helpआवश्यक है।

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

chmod -R nick 722 foo
chmod nick 722 foo -R

दोनों कुछ प्रणालियों पर काम करते हैं, जबकि बाद वाले दूसरे पर नहीं।


आपकी सटीक कमांड में सभी पैरामीटर हैं find- इस प्रकार यदि आप किसी संपत्ति के बारे में आश्चर्य करते हैं तो man findदेखने के लिए सही जगह है। ऐसे मामलों में जहां आपको शेल आदि के लिए मैन पेज देखने की आवश्यकता होती है, जैसे:

find . $(some command)
find . `some command`
find . $some_var
find . -type f -exec some_command {} \;
find . -type f | some_command
...

-execएक विशेष एक जहाँ है -exec some_command {} \;सभी मापदंडों को दी हैं find, लेकिन some_command {} \;भाग के भीतर, विस्तार किया जाता है findकरने के लिए some_command string_of_found_entity


आगे

  • के हवाले
  • विस्तार
  • कमांड प्रतिस्थापन
  • और इतना अधिक

आपको यह उपयोगी लग सकता है


बहुत सूचनाप्रद।
फ्रेड्रिक गॉस 7

8

आप man findमें help typeया नहीं में दिखते हैं man bashtypeमें findक्या फ़ाइल आप टाइप निर्दिष्ट करेगा जरूरत:

   -type c
          File is of type c:

          b      block (buffered) special

          c      character (unbuffered) special

          d      directory

          p      named pipe (FIFO)

          f      regular file

          l      symbolic link; this is never true if the -L option or the
                 -follow option is in effect, unless the symbolic link  is
                 broken.  If you want to search for symbolic links when -L
                 is in effect, use -xtype.

          s      socket

          D      door (Solaris)

और बिल्टिन typeपूरी तरह से अलग चीज है और यह अंदर उपयोग नहीं किया गया है find


0

आपने गलत मैनुअल पेज पर देखा, यह type -fकमांड नहीं है, लेकिन find -type fविकल्प जो काफी अलग है, findउचित स्पष्टीकरण के लिए मैनुअल पर एक नज़र है ।


0

-type fबताता है कि टाइप एफ की केवल फाइलों को प्रिंट करें यानी सादे फाइलें, निर्देशिका नहीं, प्रतीकात्मक लिंक नहीं और डिवाइस फाइलें नहीं। man findफिर -fविकल्प खोजें।


0

यह सही मैनुअल पेज नहीं है जिसे आप देख रहे हैं। आपको उपयोग करना चाहिए

man find

है कि आप उस के साथ बता देंगे विधेय चयन केवल नियमित रूप से फ़ाइलें।-type f-type

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.