अधिकांश समय एक कमांड का आउटपुट न्यूलाइन वर्ण के साथ समाप्त होता है। लेकिन कभी-कभी यह नहीं होता है, इसलिए अगला शेल प्रॉम्प्ट आउटपुट के साथ एक ही पंक्ति में मुद्रित होता है।
उदाहरण:
रूट @ होस्टनाम [~] # इको-एन हेलो
हेलोरूट @ होस्टनाम [~] #
मैंने हमेशा पाया है कि बहुत कष्टप्रद है।
अब, मैं पीएस 1 चर की शुरुआत में सिर्फ एक "\ n" जोड़ सकता था, लेकिन अधिकांश समय जो एक अतिरिक्त पंक्ति को प्रिंट करेगा, जिसकी मुझे आवश्यकता नहीं है।
क्या यह जानना संभव है कि अंतिम कमांड का आउटपुट एक नई सीमा के साथ समाप्त हुआ या नहीं?
समाधान:
(डेनिस के लिए धन्यवाद)
PS1='$(printf "%$((`tput cols`-1))s\r")\u@\h [\w]\$ '
$()
एक स्थान पर उपयोग किया और दूसरे में बैकटिक्स। आप $()
दोनों में उपयोग कर सकते हैं ।
tput cols
क्योंकि यह सिर्फ वैसे भी COLUMNS वैरिएबल के मूल्य को आउटपुट करता है, और यह धीमा है क्योंकि यह शेल बिल्डिन नहीं है। आप सम्मिलित व्हाट्सएप को हटाने के \e[K
लिए (समतुल्य tput el
) शामिल करना चाहते हैं ताकि आपको डिफ़ॉल्ट मामले में कॉपी और पेस्ट करते समय व्हाट्सएप को पीछे करने का एक गुच्छा न मिले। अंत में, आपको इस सभी जादू के बीच संलग्न करने की आवश्यकता है \[
और \]
अन्यथा बैश आपके कर्सर की स्थिति का दूसरा अनुमान लगाने की कोशिश करेगा और जब आप अपने आदेश / इतिहास को संपादित करेंगे तो यह गड़बड़ हो जाएगा।
PS1='\[\e[7m%\e[m$( printf "%*s" "$((COLUMNS-1))" "" )\r\e[K\]\u@\h [\w]\$ '