कैसे बनाने के लिए नहीं लपेटो उत्पादन करने के लिए बैश?


33

जब भी कुछ कमांड आउटपुट के रूप में लंबी लाइनें उत्पन्न करता है (उदाहरण के लिए, जब ls -lएक फ़ोल्डर जिसमें लंबे नाम वाली फाइलें होती हैं), तो लंबी लाइनें अगली पंक्ति में लिपट जाती हैं, इस प्रकार स्तंभ संरचना को गड़बड़ कर देती है।

क्या इससे बचने का कोई तरीका है? 'Nowrap' विम विकल्प के लिए कुछ समान?


अद्यतन करें

मैंने स्वीकार किए गए उत्तर के साथ एक मुद्दे पर ध्यान दिया:
अगर मैं एक उपनाम बनाता हूं जैसे: alias ll="tput rmam; ls -l; tput smam"
और फिर इसे आउटपुट करने का प्रयास करें: ll | grep foo
यह अभी भी सभी फ़ाइलों को प्रिंट करेगा , जैसे कि बिना grep।

मैंने जो हल ढूंढा है वह पूरे उर्फ ​​के आसपास कोष्ठक लगाने का है:
alias ll="(tput rmam; ls -l; tput smam)"



संबंधित superuser.com/q/600677/105108
ks1322

जवाबों:


27

ध्यान दें कि इसका बैश से कोई लेना-देना नहीं है (एक बार जब आपने कमांड लॉन्च किया है, तो बस इसे खत्म करने के लिए इंतजार करना चाहिए) और टर्मिनल के साथ सब कुछ करना है।

अधिकांश टर्मिनल एमुलेटर डिफ़ॉल्ट रूप से सही मार्जिन पर लपेटते हैं। लेकिन यह उचित नियंत्रण अनुक्रम का उपयोग करके बंद किया जा सकता है , अगर टर्मिनल एमुलेटर इसका समर्थन करता है; फिर लंबी लाइनों को केवल काट दिया जाता है:

printf '\033[?7l'
ls -l /a/folder/that/contains/files/with/long/names
printf '\033[?7h'

हाँ, यह वही है जिसकी मैं तलाश कर रहा था, धन्यवाद गिल्स!
मिहाई रोटारू

12
अधिक सुस्पष्ट रूप से:tput rmam; ls -l longname; tput smam
अगली सूचना तक

और भी बेहतर; लेकिन [rs] मैम कहाँ से आई? मैंने ट्रूप और टर्मपैक मैनुअल की खोज की, लेकिन उनके बारे में कुछ भी नहीं पाया?
मिहाई रोटारू

2
@ मिहाई: टर्मिनेट प्रलेखन ( man 5 terminfoलिनक्स पर) का प्रयास करें ।
गिल्स एसओ- बुराई को रोकें '

वास्तव में, यह वहाँ है
मिहई रोटारू


5

आप एक फ़ंक्शन का उपयोग कर सकते हैं:

nowrap() 
{ 
   cut -c-$(tput cols); 
}

ध्यान रखें कि आपको कमांड का उपसर्ग करना होगा nowrapया जो भी आप फ़ंक्शन का नाम देंगे।


यह काम करता है, लेकिन मैं रंग कोडिंग खो देता हूं; संरक्षण के किसी भी तरह के रूप में अच्छी तरह से?
मिहाई रोटारू

3

आप किसी फ़ंक्शन को ओवरराइड कर सकते हैं ताकि यह स्वचालित रूप tput rmamसे आपके grep से पहले और tput smamबाद में चले:

function grep () {
  tput rmam;
  command grep "$@";
  tput smam;
}

ड्रॉप करें कि आपके .bash_profileऔर जब भी आप चलाते हैं grep, यह बिना लाइन रैपिंग के grep होगा।

यह भारी रूप से संपादित किया गया है, टिप्पणीकारों के लिए माफी।


sleep 20अद्भुत :-) है
सिरो Santilli新疆改造中心法轮功六四事件

2

पाइप के साथ इसे कम करें -S स्विच:

ls -l | less -S

फिर आप स्क्रॉल करने के लिए तीर छोड़ें / नीचे / बाएं / दाएं का उपयोग कर सकते हैं और छोड़ने के लिए q टाइप कर सकते हैं।


1

इसे इस्तेमाल करे

function nowrap { export COLS=`tput cols` ; cut -c-$COLS ; unset COLS ; echo -ne "\e[0m" ; }

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