पुशडाउन टर्मिनल आउटपुट


16

क्या टर्मिनल आउटपुट के आउटपुट ऑर्डर को रिवर्स करने का एक मानक तरीका है, अर्थात:

~/Developer $ command0 
-bash: comman0: command not found 
~/Developer $ command2 
-bash: command2: command not found 
~/Developer $ command3 
-bash: command3: command not found 
~/Developer $ 

के रूप में प्रदर्शित किया जाएगा:

~/Developer $ 
-bash: command3: command not found 
~/Developer $ command3 
-bash: command2: command not found 
~/Developer $ command2 
-bash: comman0: command not found 
~/Developer $ comman0

मुझे लगता है कि तल पर हमेशा आपका संकेत होने के कारण उत्पादन क्रम को उलटने के लिए आउटपुट वाउड को प्रस्तुत करने का अधिक प्रभावी तरीका है। मैं इसे लागू करने के बारे में कैसे जा सकता हूं? विशेष रूप से जहां OSX टर्मिनल प्रोग्राम के आउटपुट भाग को परिभाषित किया गया है?


यह मुझे भ्रमित करेगा, लेकिन मैं आपके प्रयासों की सराहना करता हूं। लाइनक्स / यूनिक्स / ओपन सोर्स प्रमुख लेसंस पर यह है कि वन साइज डोंट नॉट फिट ऑल।
ब्रूस एडगर

मुझे लगता है कि यह तब तक संभव नहीं है जब तक आप शेल के स्रोत कोड को नहीं बदलते (उदाहरण के लिए bash)।
रेनन

5
आपको केवल शेल से अधिक हैक करने की आवश्यकता होगी। टर्मिनलों को इस तरह से स्क्रॉल किया गया है क्योंकि वे विद्युत थे। बहुत कम से कम, मैं कहूंगा कि आपको एक टर्मिनल एमुलेटर हैक करने की आवश्यकता होगी, शायद एक शेल भी।
एलेक्सिओस

यह वास्तव में काउंटर सहज है। क्या आपने ENTER कुंजी तीर देखा है? यह नीचे की रेखा को इंगित करता है, ऊपर नहीं।
18

क्या टर्मिनल से बाहर रखी वस्तुओं को हथियाने का एक तरीका है, मेरा विचार कुछ प्रकार के रैपर बनाना है जो इन आउटपुट वस्तुओं में से प्रत्येक को पकड़ता है, उनमें से प्रत्येक के साथ इसी तरह व्यवहार करता है कि कैसे शीर्ष पर हमेशा नए के साथ ट्वीट पोस्ट किए जाते हैं Wrapper UI के शीर्ष पर इनपुट प्रॉम्प्ट चिपका देना।
रुडोल्फ

जवाबों:


6

बैश में यह शीर्ष पर वर्तमान प्रॉम्प्ट / कमांड और इसके आउटपुट को नीचे प्रदर्शित करेगा, लेकिन बिना स्क्रॉल या पिछले कमांड के साथ:

PROMPT_COMMAND='tput cup 0 0; tput el; tput el1'

यह फ़ंक्शन पिछली कमांड को नीचे रखेगा, लेकिन आपको प्रत्येक और प्रत्येक कमांड को अलग-अलग पाइप करना होगा। दुर्भाग्य से, exec > >(f)यह इसके साथ मदद नहीं कर सकता क्योंकि यह व्यक्तिगत आदेशों को नहीं, बल्कि पूरे बैश को पुनर्निर्देशित करता है। यहाँ समारोह है:

f () { tee ~/.STDIN | wc -l | xargs expr 1 + | xargs tput il && cat ~/.STDIN; }

फिर हर कमांड को चलाएं जैसे:

command args |f

यह आउटपुट को बचाता है, लंबाई + 1 के बराबर कई खाली लाइनें बनाता है, फिर आउटपुट को वापस अंदर लाता है। आप अंत में एक लाइन को टैग कर सकते हैं जो यदि आप चाहें तो एक नकली संकेत या क्षैतिज नियम प्रदर्शित करेंगे। उदाहरण के लिए

printf '%*s' $COLUMNS | tr ' ' _;

इस पूरे कार्य के लिए एक बकवास लेकिन स्वचालित विकल्प के रूप में, हम अपने पहले के $ PROMPT_COMMAND के अंत में एक कमांड जोड़ सकते हैं जो कुछ हद तक मनमानी 11 लाइनों को साफ करता है:

PROMPT_COMMAND='tput cup 0 0; tput el; tput el1; tput il 11'

आप tput -Sकई बाइनरी कॉल से बचने के लिए भी उपयोग कर सकते हैं।


मुझे https://github.com/swirepe/alwaysontop$PROMPT_COMMAND से मिला ।


6

दुर्भाग्य से, यह काफी मुश्किल होगा। अनुप्रयोगों और OS-X टर्मिनल के बीच प्रोटोकॉल VT100 / ANSI टर्मिनल नियंत्रण प्रोटोकॉल का एक प्रकार है , विशेष रूप से XTerm प्रोटोकॉल।

इसमें स्क्रीन पोजिशन, आदि के बारे में मान्यताओं का एक समूह शामिल है, जो एक ऐसी दुनिया के लिए रीमैप करने के लिए चुनौतीपूर्ण होगा जहां प्रदर्शन उलट गया था।

इससे भी बदतर, आपके सभी टर्मिनल एमुलेटर को "इस स्थिति में इस चरित्र को डाल दें" टाइप कमांड्स की एक स्ट्रिंग है। कमांड प्रॉम्प्ट और इसके द्वारा चलाए गए कमांड के आउटपुट के बीच कोई अंतर नहीं है, इसलिए आप दोनों हिस्सों के लिए एक काम नहीं कर सकते हैं - कम से कम, शेल के नीचे से सहयोग के बिना नहीं।

शेल, और प्रोग्राम, मान लेते हैं कि स्क्रीन ऊपर की ओर बढ़ती है - सबसे नीचे नया डेटा, और नीचे की ओर हमेशा के लिए ले जाता है।

आप कम से कम सैद्धांतिक रूप से, अपने टर्मिनल एमुलेटर को संशोधित कर सकते हैं ताकि यह रिवर्स ऑर्डर में लाइनों को प्रदर्शित करे - पहले "नीचे" लाइन, और इसलिए स्क्रीन के नीचे "शीर्ष" लाइन तक।

हालांकि कमांड आउटपुट में लाइनों के क्रम को उलट दिया जाएगा, इसलिए बाकी सामग्री भी पीछे की तरफ बाहर निकल जाएगी। यदि आप "डाउन" चलाने के लिए कमांड्स (जैसे: ls, कैट) चाहते थे, लेकिन जीवन को "ऊपर" ले जाने का संकेत देते हैं, तो यह कठिन है।

मैं किसी भी सॉफ्टवेयर को नहीं जानता जो इसे लागू करता है। (... लेकिन एक लिंक के लिए इस पर JdeBD की टिप्पणी देखें।) :)



6

हालांकि यह बिल्कुल उल्टा उत्पादन नहीं करेगा, यह आपके संकेत को सबसे ऊपर रखेगा:

https://github.com/swirepe/alwaysontop

इसे चलाने के लिए उपयोग करें:

git clone https://github.com/swirepe/alwaysontop.git
cd alwaysontop/
source alwaysontop.sh

यदि आप इसे पसंद करते हैं, तो आप इसे अपने .bash_profile स्रोत में कुछ इस तरह से पसंद करते हैं:

echo "source ~/alwaysontop/alwaysontop.sh" >> ~/.bash_profile

1
यह एक छोटा सा बग्गी है (जैसे टैब-स्वतः पूर्ण और इतिहास के साथ) लेकिन यह बहुत अच्छा डेमो है कि यह यूआई कैसा महसूस कर सकता है यदि इसे ठीक से लागू किया गया था। मुझे लगता है कि यह उसके लिए मूल्यवान है - लोगों को यह जानने में मदद करने के लिए कि क्या वे इसे चाहते हैं या नहीं!
scipilot
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.