क्या `` `का उपयोग करने का कोई कारण है जब आपने` कम` प्राप्त किया है?


59

मैं catफ़ाइलों को देखने के लिए उपयोग करता था। तब मुझे पता चला कि lessआमतौर पर बेहतर होता है, और यह जरूरी है कि फाइल कुछ दर्जन पंक्तियों से लंबी हो।

मेरा प्रश्न: क्या catइसके बजाय उपयोग करने का कोई कारण है less? क्या कोई ऐसी स्थिति है जहां catएक बेहतर समाधान है?


17
lessऔर catविभिन्न समस्याओं को हल करते हैं और वे अपने स्वयं के समस्या डोमेन में एक दूसरे की तुलना में बेहतर हैं
डेविड हेफर्नन

2
मैं केवल catइसे lessबाद में आउटपुट करने के लिए पाइप का उपयोग करता हूं ।
19 फरवरी को फ़ूजएक्सएक्सएल

1
मैं अक्सर catबहुत कम फ़ाइलों को कंसोल, फाइलों में /procऔर /sysबहुत अच्छे उम्मीदवारों को प्रिंट करने के लिए उपयोग करता हूं । इस तरह मैं एक साथ कई फाइलों की सामग्री देख सकता हूं।
7

जवाबों:


20

मैं व्यक्तिगत रूप viewसे स्थिर सामग्री या tail -fगतिशील सामग्री के लिए पसंद करता हूं ।

हालांकि यह आपके सवाल का जवाब नहीं देता है। एक कहावत है "यदि आपके पास कम है तो अधिक उपयोग क्यों करें" ;-)

लेकिन ऐसे मामले हैं जहां मैं बिल्ली को कम पसंद करता हूं: मैं आमतौर पर एक्स 11-विंडोज़ के साथ काम करता हूं। इन विंडो में एक स्क्रॉल-बफर है जिसे कुछ सौ लाइनों पर सेट किया जा सकता है।

के लिए करना cat- मान लीजिए कि 200 रेखाएँ हैं और फिर स्क्रॉल-बार के साथ माउस का उपयोग करना मेरे लिए lessइन मामलों में उपयोग करने से अधिक आरामदायक है ।


4
तक viewआप हमेशा की तरह मतलब vim -Rहै, या आपको लगता है कि नाम के साथ कुछ और है?
मैनटवर्क

नहीं - केवल vi (या vim) केवल पढ़ने के लिए मोड में। CentOS डिफ़ॉल्ट रूप से उस उपनाम को सेट करता है। सुरक्षित निर्देशिका में फ़ाइल देखने पर यह HIDS को ट्रिगर नहीं करेगा।
नेल्स

2
less +Fक्या tail -fकरता है।
लीजेंड्स 2k

2
वास्तव में, viewएक उपनाम नहीं है; यह एक कड़ी है ( viया vim)। यह शुरू होने viपर देखता है argv[0](यह देखने के लिए कि इसे किस नाम से जाना जाता था) और, यदि वह है viewया rview, यह केवल पढ़ने के लिए मोड सेट करता है (जैसे कि आपने टाइप किया था vim -R)।
जी-मैन

91

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

कम अधिक की क्षमताओं का विस्तार करता है । उत्तरार्द्ध एक समय में एक स्क्रीनफुल फ़ाइल की सामग्री को देखने के लिए बनाया गया था। कम पिछड़े आंदोलनों और बेहतर स्मृति प्रबंधन जैसी सुविधाओं को जोड़ता है (पहली पंक्तियों को देखने में सक्षम होने से पहले पूरी फ़ाइल को पढ़ने की आवश्यकता नहीं है)।

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

आपके प्रश्न पर वापस, बिल्ली को एक स्वायत्त लिपि में पसंद किया जाएगा, जिसमें बिना किसी बातचीत के पूरी तरह से (या संक्षिप्त रूप से) पढ़ने वाली फाइलों की आवश्यकता हो। फ़ाइल देखने के संदर्भ में, मुझे लगता है कि यह स्वाद का सवाल है।


4
lessहमेशा फ़ाइल के भीतर खोज करने की अनुमति देता है, जो catनहीं करता है।
बर्नहार्ड

@ बर्नहार्ड: कैट आउटपुट पर एक grep करने के बारे में क्या?
user3527975

23

मैं आमतौर पर उपयोग करता catहूं जब मुझे फ़ाइल में कुछ के आधार पर एक कमांड टाइप करने की आवश्यकता होती है। catजब आप शेल प्रॉम्प्ट तक पहुँचते हैं, तो आप फ़ाइल को देख सकते हैं (यदि यह छोटा है) तो अधिक सुविधाजनक है। यह पाइप लाइनिंग के लिए भी अनुमति देता है।


3
एक फ़ाइल के लिए, मानक इनपुट को पुनर्निर्देशित करना भी संभव है और अक्सर बेहतर होता है।
एपीग्रामग्राम

17
क्या कोई ऐसी स्थिति है जहां बिल्ली एक बेहतर समाधान है?

जब आप अधिक से अधिक एक फ़ाइल के साथ काम कर रहे हैं और उन्हें संक्षिप्त करना चाहते हैं।

मैन पेज से:

cat f - g
        Output f's contents, then standard input, then g's contents.

15

वहाँ लोग हैं, जो हिंसक तर्क है कि का एकमात्र उद्देश्य हैं catचुनाव के लिए है बिल्ली Enate फ़ाइलें। हर दूसरे उपयोग के लिए, more(या less) है।

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

एक और कारण है जब आप एक फ़ाइल बनाना चाहते हैं। मैं अक्सर इस तरह की फ़ाइल में वेब से पाठ को कॉपी-पेस्ट करता हूं (कमांड प्रॉम्प्ट दिखाया गया है):

$ cat > filename
<Cmd-V>
<Ctrl-D>
$

यही है, मैं filenameलिखने की पहुंच के लिए एक फ़ाइल खोलता हूं , सामग्री को पेस्ट करता हूं और दबाकर स्ट्रीम बंद कर देता हूं Ctrl- D। न तो वह कर सकता है, और न lessही moreसंपादक खोलने से ज्यादा तेज।


4
यदि आप एक शेल के रूप में zsh का उपयोग करते हैं, तो आप इसे सेट कर सकते हैं ताकि $<filename(जहाँ $शीघ्र हो) $ PAGER से जुड़े हुए स्टोक्स को आमंत्रित करता है filename। कि तुलना में टाइप करने के लिए भी कम अक्षर है cat
केविन कैथकार्ट

@Kevin जानकर अच्छा लगा लेकिन मैं एक बैश उपयोगकर्ता हूं।
कोनराड रूडोल्फ

2
मैक ओएस एक्स पर, मैं उपयोग करता हूं pbpaste > filename, और मेरा मानना ​​है कि एक्स में कुछ समान है। मैं अभी भी catत्वरित फ़ाइल निर्माण के लिए उपयोग करता हूं , सिर्फ चिपकाने के लिए नहीं।
कोबाल

@ कोबाल हे, मैंने ऐसा कभी नहीं सोचा था, भले ही मैं अन्य उद्देश्यों के लिए उपयोग करता pbcopy/ करती हूं pbpaste
कोनराड रुडोल्फ

1
यह वास्तव में दो अक्षर कम है - आपको qबाहर निकलने के लिए प्रेस करना होगा less: D
मार्टिन वॉन विटिच

9

कभी-कभी आपको वह पृष्ठांकन नहीं चाहिए होता है जो आप चाहते lessहैं और पूरी फ़ाइल चाहते हैं, इसलिए आप इसका उपयोग करेंगे cat


4

मैं (एकाधिक) फ़ाइलों का उपयोग catकरता हूं grep

cat <filename1> [<filename2> <filename3>] | grep -i "string of interest"

मुझे पता grepहै कि फ़ाइल नाम का समर्थन करता है, लेकिन यदि आप एक ही फ़ाइल को अलग-अलग खोज शब्दों के लिए तैयार कर रहे हैं, तो एक कमांड को संपादित करना जहां खोज शब्द लाइन पर अंतिम चीज़ है, फिर लाइन के माध्यम से वापस ctrl + arrow-key करना आसान है।


4

cat कई बाइनरी फ़ाइलों को एक बड़े में समेटने के लिए इस्तेमाल किया जा सकता है:

cat data.001 data.002 data.003 > bigdata.dat

3

मैं उपयोग less -FXकरता हूं , जो तब करता lessहै catजब एक स्क्रीन पर एक फ़ाइल प्रदर्शित की जा सकती है। से less(1)मैनपेज:

-F or --quit-if-one-screen
       Causes less to automatically exit if the entire file can be dis-
       played on the first screen.

-X or --no-init
       Disables sending the termcap initialization and deinitialization
       strings  to  the  terminal.   This is sometimes desirable if the
       deinitialization string does something unnecessary, like  clear-
       ing the screen.

2

मुझे लगता है कि अब यूनिक्स वेरिएंट की ख़ासियत के कारण, बहुत से लोगों को अपने सिस्टम (एक अस्पष्टता के साथ) को संचालित करने की आवश्यकता नहीं है। जब चीजें ब्रेस्ट-अप हो जाती हैं, तो आप केवल रिबूट कर सकते हैं और अपने सिस्टम में प्रवेश कर सकते हैं जिसे प्रतिबंधित वातावरण कहा जाता है।

आपको एक कमांड लाइन मिलती है और जो उपयोगी कमांड समझा जाता है उसके एक छोटे से सेट तक पहुंच होती है जो छोटे और आमतौर पर स्टेटिक रूप से जुड़े होते हैं। आप एक संपादक या यहां तक ​​कि छोटे एड के रूप में vi प्राप्त कर सकते हैं, लेकिन emacs या vim नहीं। आपको बिल्ली मिलेगी, लेकिन कम नहीं। विचार यह है कि आप अपने संसाधनों को सुधारने के लिए अपने सिस्टम को ठीक करने के लिए पर्याप्त उपकरण दें क्योंकि उन संसाधनों को गलत तरीके से कॉन्फ़िगर किया जा सकता है, या सभी का उपयोग किया जा सकता है। कम कमांड ऑनर उन परिस्थितियों को कम नहीं करता है।


2

और lessसभी GNU / Linux वितरण पर पूर्व-स्थापित नहीं है। (जैसे। जेंटू) catहर जगह है, शायद।


2

catस्क्रीन पर रहता है। सब कुछ lessअस्त-व्यस्त।

वोल्कर सीगल द्वारा / के लिए स्पष्ट:

catस्क्रीन पर रहने का आउटपुट । सब कुछ lessबंद होने के बाद निराश होकर दिखाया ।


1

विशेषाधिकार वृद्धि के साथ कोई समस्या हो सकती है, क्योंकि 'कम' के भीतर आप किसी फ़ाइल या 'संपादन' के लिए 'v' दबा सकते हैं! एक शेल कमांड भेजने के लिए।

आप कुछ उपयोगकर्ताओं को एक ऐसी फ़ाइल देखने की अनुमति देना चाहते हैं जो केवल सुपरयुसर द्वारा पढ़ी जा सकती है, लेकिन उन उपयोगकर्ताओं को फ़ाइल को संपादित करने या सामान्य रूप से सुपरयुसर विशेषाधिकारों का उपयोग करने की अनुमति नहीं है। आप ऐसा कर सकते हैं '/ etc / sudoers' का संपादन करके उन्हें 'sudo / bin / cat / etc / importantfiff' का उपयोग करने की अनुमति दें। आप 'sudo / usr / bin / less / etc / importantfile' को अनुमति नहीं देना चाहेंगे, क्योंकि वे फ़ाइल को संपादित करने के लिए 'v' का उपयोग कर सकते हैं, या 'का उपयोग कर सकते हैं!' पूर्ण सुपरसुसर विशेषाधिकारों के साथ एक शेल लॉन्च करने के लिए।

बेशक, उपयोगकर्ता 'sudo / bin / cat / etc / importantfile का उपयोग कर सकते हैं सुरक्षा जोखिमों के बिना 'कम' और अभी भी 'कम' का उपयोग करें।


1

दोनों अलग हैं। lessएक गैर-मानक पेजर है ( moreमानक एक है), पाठ देखने के लिए उपयोग किया जाता है, जबकि catएक मानक उपयोगिता है, जिसका उपयोग किसी भी प्रकार और डेटा धाराओं की संख्या को एक में करने के लिए किया जाता है।

वे कुछ परिस्थितियों में एक ही काम करते दिखाई दे सकते हैं, लेकिन फिर फिर से, अन्य उपयोगिताओं के लिए।


0

सुविधा के लिए। बिल्ली में 3 वर्ण हैं जबकि अधिक / कम में 4 वर्ण हैं। और टाइपिंग कैट केवल आपके बाएं हाथ की आवश्यकता है।


1
केवल अपने बाएं हाथ का उपयोग क्यों कर रहा है? मैं टर्मिनल पर माउस का उपयोग नहीं करता ...
बर्नहार्ड

0

स्क्रीन पर पात्रों को कैसे दिखाया जाए, इसके संदर्भ में lessवह catकर सकता है जो कर सकता है; और भी बहुत कुछ।

लेकिन कुछ मामलों के लिए बिल्ली का उपयोग करने का एक बहुत अच्छा कारण है: बहुत सरल समस्याओं पर फेंकने के लिए
lessबस बहुत जटिल है। मेरे पास इतने सारे विकल्प हैं कि catसंबंधित पेज में संबंधित लोगों को ढूंढना मुश्किल है ।


टैब को एक में दिखाना चाहते हैं Makefile?

में man cat, पहला विकल्प है -A
वर्णन सहायक नहीं है -vET:।
लेकिन लंबे विकल्प का नाम सही लगता है --show-all:।

और cat -A Makefileमुझे जो चाहिए वो करता है।


अब, उस के लिए खोजें less


0

'कम' और 'अधिक' दोनों बिलकुल 'कैट' की तरह काम करेंगे यदि आउटपुट टर्मिनल (tty) नहीं है, जैसा कि पाइप और फाइल में होता है, तो वे दोनों किसी भी पेजिंग पर वापस नहीं लौटेंगे।

मुझे लगता है कि यह कहना सुरक्षित है कि 'बिल्ली' हमेशा किसी भी यूनिक्स-प्रकार की प्रणाली पर मौजूद होती है, जिसे आप कभी भी खोज पाएंगे। किसी भी प्रणाली पर 'कम' और / या 'अधिक' की उपस्थिति कम अनुमानित है।

लिपियों में इसलिए, यदि आपको केवल एक गैर-पृष्ठ पर अंकुश लगाने की आवश्यकता होती है, तो 'बिल्ली' का मौजूद होना निश्चित है जहां आपकी स्क्रिप्ट का उपयोग यूनिक्स-प्रकार प्रणाली पर किया गया है।


1
खैर, यह मान लेना सुरक्षित है कि moreयह एकल यूनिक्स विनिर्देश द्वारा अनिवार्य होने के कारण उपलब्ध होगा।
कुसलानंद

अफसोस की बात है, जबकि यह उस तरह जनादेश हो सकता है, लेकिन मेरे अनुभव में यह हमेशा मौजूद नहीं है। यह ध्यान देने योग्य है कि यूनिक्स जैसी कई प्रणालियाँ हैं जो यूनिक्स होने का दावा नहीं करती हैं। मुझे लगता है कि एक काफी विश्वास है कि या तो एक हो सकता है lessया एक moreउपस्थित रहेंगे, लेकिन मुझे लगता है कि एक एक विशेष रूप से एक विश्वास नहीं कर सकते, और न ही है कि यह एक 'सही' कार्यान्वयन है ... अक्सर एक दूसरे पर एलियास है, कभी कभी वे ' एक न्यूनतम हल्के संस्करण फिर से।
user208007

-1

गरारे के माध्यम से बिल्ली को भगाना उपयोगी है:

cat <filename> | grep -i "string of interest"

4
उल्लेख नहीं है कि grepएक तर्क के रूप में एक फ़ाइल नाम लेता है, या आप पुनर्निर्देशन का उपयोग कर सकते हैं। पाइप महंगा है।
क्रिस डाउन

25
बधाई हो, आप 'बिल्ली का बेकार उपयोग' पुरस्कार जीतते हैं!
ThatGraemeGuy 21

4
@TimKennedy - "जब आप मिल गए हैं less" प्रश्न शीर्षक में है ...
क्रिस डाउन

5
Upvoted। मैं नियमित रूप से ऐसा करता हूं। अगर मैं अलग-अलग खोज शब्दों के लिए एक फ़ाइल को कई बार पकड़ना चाहता हूं, तो यह आसान है। grep चाहता है grep [search term] [filename], इसलिए, यदि मैं टर्मिनल इतिहास का उपयोग कर रहा हूं, तो खोज शब्द को संपादित करने के लिए यह एक दर्द से अधिक है। Grep को पाइप करके, खोज शब्द लाइन पर अंतिम चीज़ है, और संपादित करने में आसान है।
नकली नाम

10
आपके पास अभी भी वह क्रम हो सकता है जिसे आप बिना उपयोग के चाहते हैं cat: < [filename] grep [search term]और < filename tail -n 1000 | grep pattern। पुनर्निर्देशन एक कमांड लाइन पर कहीं भी बहुत अधिक जा सकता है।
कैम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.