বেশিরভাগ সময় কমান্ডের আউটপুট নিউলাইন চরিত্রের সাথে শেষ হয়। তবে কখনও কখনও এটি হয় না, সুতরাং পরবর্তী শেল প্রম্পট আউটপুট সহ একই লাইনে মুদ্রিত হবে।
উদাহরণ:
মূল @ হোস্টনাম [~] # প্রতিধ্বনি-হ্যালো
হেলোরুট @ হোস্টনাম [~] #
আমি সবসময় এটি খুব বিরক্তিকর খুঁজে পেয়েছি।
এখন, আমি পিএস 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]\$ '