জেডএসএইচ কেন একটি হাইলাইটেড শতাংশ প্রতীক সহ একটি লাইন শেষ করে?


46

আমি বিভিন্ন অ্যাপ্লিকেশন সহ উপলক্ষে এই লক্ষ্য করেছি। আমি প্রায়শই ভেবেছিলাম কারণ এটি আউটপুট শুরুর আগে বাতিল হয়েছিল (সিটিআরএল + সি, উদাহরণস্বরূপ) বা অনুরূপ কিছু, এবং zsh একটি নতুন লাইনের চরিত্র পূরণ করছে। তবে এখন কৌতূহলটি আমার সেরা হয়ে উঠেছে, যেহেতু এটি ব্যাশ করে বলে মনে হয় না।

zsh

zsh

সজোরে আঘাত

এখানে চিত্র বর্ণনা লিখুন

Sequenceপ্রোগ্রাম কিছু আমি একটি বই থেকে টানা যখন জাভা সার্টিফিকেশন উপর পড়া এবং মাত্র যদি এটা কম্পাইল এবং চালানো হবে দেখতে চেয়েছিলেন হয়। আমি যে বিজ্ঞপ্তি ব্যবহার করে না করেনি println()থেকে পদ্ধতি System.outপ্যাকেজ / বর্গ। পরিবর্তে এটি সাধারণ প্লেইন ব্যবহার করে print()

নতুন লাইন চরিত্রের অভাব কি এই প্রতীকটি পাবার কারণ?

উত্তর:


57

হ্যাঁ, এটি ঘটে কারণ এটি একটি "আংশিক রেখা"। এবং ডিফল্টভাবে zsh প্রম্পটের সাথে এটি আবরণ এড়াতে পরবর্তী লাইনে যায়

আংশিক লাইনটি সংরক্ষণ করা হলে, ডিফল্টরূপে আপনি আংশিক লাইনের শেষে একটি বিপরীত + সাহসী চরিত্র দেখতে পাবেন: সাধারণ ব্যবহারকারীর জন্য একটি "%" বা মূলের জন্য "#"। যদি সেট করা থাকে তবে শেল প্যারামিটার PROMPT_EOL_MARK কীভাবে আংশিক লাইনের শেষ প্রদর্শিত হবে তা কাস্টমাইজ করতে ব্যবহার করা যেতে পারে।


3
এটি পরীক্ষা করার জন্য: print -n "this is a test"তারপরেprint "this is a test"
সেরজিওআরাউজো

5
PROMPT_EOL_MARK=''কমান্ড আউটপুটে না পেছনে থাকা নতুন লাইনের মধ্যে পার্থক্য লুকানোর জন্য আমি এখন আমার .zshrc এ রেখেছি।
geekQ

14

এটি আপনাকে একটি কমান্ডের আউটপুটে পরিষ্কারভাবে নিরবচ্ছিন্ন রেখাগুলি দেখতে দেওয়া zsh(এবং এখন fishপাশাপাশি) এর একটি নির্দিষ্ট বৈশিষ্ট্য ।

গতানুগতিক শেলগুলিতে, যদি কোনও কমান্ড শেষ নিউলাইন চরিত্রের পরে কিছু তথ্য আউটপুট দেয় বা অন্য কথায়, এটি যদি টার্মিনাল কার্সারটিকে লাইনের শুরুতে না ছেড়ে দেয় তবে শেলটির পরবর্তী প্রম্পটটি শেষ বিরামবিহীন লাইনে যুক্ত হবে যেমন হিসাবে:

bash-4.4$ printf XXX
XXXbash-4.4$

এটি প্রম্পটটি ম্যাঙ্গাল করে এবং খুব সহজেই এটি মিস করা সহজ হয় XXXবিশেষত যদি আপনি এরকম কোনও ফ্যানসিয়ার প্রম্পট পেয়ে থাকেন। এটি কার্সার অবস্থানকেও প্রভাবিত করে যা কার্সারকে চারপাশে সরিয়ে নেওয়ার সময় ডিসপ্লে গ্ল্যাচগুলি সৃষ্টি করে causes

zshআশেপাশে কাজ করে, আউটপুটটিতে গা %bold ় এবং বিপরীত ভিডিওতে একটি অক্ষর সহ একটি নির্বিঘ্নিত লাইন রয়েছে এবং পরবর্তী লাইনের শুরুতে পরবর্তী প্রম্পটটি ইস্যু করে:

zsh-5.1.1$ printf XXX
XXX%
zsh-5.1.1$

এটি এটি করে যে প্রতিটি কমান্ডের %শেষে (প্রতিটি প্রম্পটের আগে) বিপরীত ভিডিওটি আউটপুট করে , কিন্তু তারপরে 79৯ টি স্পেস (একটি 80 টি অক্ষরের প্রশস্ত টার্মিনাল ধরে নেওয়া), একটি সিআর অক্ষর (প্রথমটি কার্সারকে ফিরে যাওয়ার কারণ দেয়) কলাম) এবং লাইনটির শেষে এবং তারপরে প্রম্পটটি মুছার ক্রম।

এইভাবে, যদি একটি নির্ধারিত লাইন থাকে, যেহেতু কার্সার প্রথম অবস্থানে নেই, সেই 80 টি অক্ষর কার্সারটিকে পরবর্তী লাইনে নিয়ে যাবে (এবং এটি %থাকবে)। যদি তা না হয় তবে তা %এবং সেই 79 টি স্পেস এক লাইনে থাকবে যা পরে মুছে ফেলা হবে।

এখন, এটি কেবলমাত্র যদি টার্মিনালটি মোড়ক রেখাগুলি করে (উদাহরণস্বরূপ, এটি পরে সঠিকভাবে কাজ করবে না tput rmam) কাজ করে । আপনার যদি ধীরে ধীরে টার্মিনাল থাকে (যেমন 96৯০০ বাউড সিরিয়াল লাইনের মতো), আপনি অবশ্যই %প্রতিটি কমান্ডের পরে এগুলি প্রদর্শিত এবং তারপরে অপসারণ করা দেখতে পাচ্ছেন , সুতরাং zshআপনাকে সেই বৈশিষ্ট্যটি অক্ষম করতে দিন:

unsetopt prompt_cr prompt_sp

এইভাবে, zshপ্রচলিত শাঁসের মতো আরও আচরণ করে।

আপনি $PROMPT_EOL_MARKভেরিয়েবলের সাহায্যে সেই চিহ্নটিও পরিবর্তন করতে পারেন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.