लाइन की गिनती के आधार पर `कैट` या` कम` का उपयोग कैसे करें?


12

जब फ़ाइलों की सामग्री को देखते हैं, तो मैं स्वचालित रूप से catछोटी फ़ाइलों को पसंद करना चाहता हूं, लेकिन lessवे स्क्रीन आकार से अधिक होती हैं। मैं कुछ का उपयोग कर सकता था wc -l, लेकिन क्या एक बेहतर तरीका है जो शायद खिड़की के आकार / वर्तमान में उपलब्ध लाइनों की मात्रा पर भी विचार करता है?


1
जबकि कई उपकरण ऐसा करते हैं, ध्यान दें कि यह उम्मीद को तोड़ता है। यानी उपयोगकर्ता पहले से नहीं जान सकता कि क्या होगा। मुझे यह कष्टप्रद उदाहरण लगता है git logजिसमें यह सटीक बात करता है। आप पहले से कभी नहीं जानते हैं कि आप क्या करने जा रहे हैं (क्या आपको हिट करना है q?)।
बिटमस्क

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

2
यदि आप टर्मिनल में सीधे फ़ाइल सामग्री देखने के लिए बिल्ली का उपयोग करने जा रहे हैं, cat -vतो कम से कम उपयोग करें ताकि यह विशेष पात्रों से बच जाए।
क्रिस पेज

@bitmask अच्छी बात है, इसीलिए मैंने पूछा कि स्प्लिट-स्क्रीन catआईएनजी संभव है? जो एक बेहतर समाधान हो सकता है
टोबीस किंजलर

@ChrisPage मेरा कीबोर्ड नहीं मारा गया था, लेकिन मुझे लगता है कि मैं कोडपेज को एक बार cat -v
खराब

जवाबों:


9

आपको वह सूत्र देने के लिए जिसमें wc-based जाँच शामिल है :

(($(wc -l<input_file)<=$(tput lines))) && echo 'will fit' || echo 'not enough'

एक $LINESशेल वैरिएबल है जिसका उपयोग भी किया जा सकता है:

(($(wc -l<input_file)<=LINES)) && echo 'will fit' || echo 'not enough'

लेकिन $LINESकेवल कमांड प्रॉम्प्ट पर अपडेट किया जाता है। यह समझने के लिए कि मेरा क्या मतलब है, इसे चलाएं और टर्मिनल विंडो का आकार बदलें sleep:

( sleep 3; echo $LINES; tput lines )

धन्यवाद, इसका यह फायदा है कि lessयदि स्क्रीन के 2/3 का उपयोग किया जाता है तो यह पहले से ही उपयोग करने के लिए ट्यून किया जा सकता है cat
टोबियास किंजलर

20

हो सकता है कि 'कम -F file_to_read' विकल्प हो: यह कम बाहर निकलता है यदि विंडो सभी फ़ाइल को प्रदर्शित करने के लिए पर्याप्त है, और पेजर पर प्रतीक्षा करें यदि यह मामला नहीं है


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

मैं सिर्फ 'कम -F / etc / passwd' आज़माता हूं और यह फ़ाइल को सही ढंग से (पेजर के साथ या बिना) प्रदर्शित करता है। आप सही हैं, दोनों मामलों में रिटर्न कोड 0 है।
डोम

11
वह आदेश अनुरोध के अनुसार काम करता है, लेकिन एक छोटी सी गड़बड़ के साथ: यह फ़ाइल को प्रदर्शित करने के बाद स्क्रीन को साफ करता है। -Xविकल्प जोड़ने से समाशोधन बंद हो जाएगा, इसलिए छोटी फ़ाइलों को प्रदर्शित किया जाएगा cat। दुर्भाग्य -Xसे स्क्रीन के साथ न तो साफ़ किया जाएगा और न ही लंबी, स्क्रॉल की गई फ़ाइलों को प्रदर्शित करने के बाद।
मैनेटवर्क

1
@manatwork बहुत बढ़िया है, धन्यवाद। स्क्रीन को साफ़ नहीं करना वास्तव में ठीक है, क्योंकि ऐसा तब होता है (नहीं) जब catभी कहा जाता है
टोबीस किन्ज़लर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.