এই বাশ কমান্ড-লাইনটি সাফ করার জন্য কেন আমাকে 12 টি অক্ষর প্রবেশ করানো দরকার?


14

আমি একটি এক্সটার্ম টার্মিনাল খুলি (80 টি কলাম x 24 লাইন), তারপরে চালান $ bash --norc --noprofile, এবং তারপরে $ ttyটার্মিনালের ফাইলের নাম পেতে: আউটপুট হয় /dev/pts/9

আমি চালিত অন্য টার্মিনাল থেকে:

$ printf foo >/dev/pts/9

fooপ্রথম টার্মিনালে শেল কমান্ড-লাইনে মুদ্রিত হয়।
আমি C-uচালানোর জন্য টিপলে unix-line-discard(প্রদত্ত ফাংশনের নাম $ bind -P | grep -i c-u), fooসরানো হয় না।
যদি আমি 11 টি স্পেস sertোকান এবং টিপই C-u, স্পেসগুলি সরিয়ে ফেলা হয় তবে তা নয় foo
যদি আমি 12 টি স্পেস sertোকান এবং টিপই C-u, স্পেসগুলি পাশাপাশি সরিয়ে ফেলা হয় foo

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

আমি কেন অপসারণ করতে পারি না fooC-uআমার কার্সারটি ঠিক পরে থাকার পরে আমি চাপ দিলে এবং কেন এটি মুছতে আমার 12 টি অক্ষর সন্নিবেশ করা দরকার?


পরিবেশ:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.6 LTS
Release:        16.04
Codename:       xenial

$ bash --version | head -n1
GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)

$ xterm -version
XTerm(322)

উত্তর:


19

যখন অন্য কিছু প্রোগ্রাম প্রিন্ট করে foo/dev/pts/9যোগাযোগের জন্য করে ttys এর মধ্যে থাকে, তখন শেলটি এক্সচেঞ্জে অংশ নেয় না, এটি কতটা অক্ষর মুদ্রিত হয়েছিল বা কোনও অক্ষর মুদ্রিত হয়েছিল সে সম্পর্কে সচেতন হতে পারে না। শেলটি এখনও বিশ্বাস করছে যে মুছে ফেলার জন্য কোনও অক্ষর নেই। আসলে আপনি যদি fooটার্মিনালে মুদ্রণ করেন এবং ব্যাকস্পেস দিয়ে মুছে ফেলার চেষ্টা করেন এটি কার্যকর হয় না। শেলটি যা বিশ্বাস করে যে এটি নেই তা মুছে ফেলার চেষ্টা করে না।

টার্মিনালটিতে চেষ্টা করুন যেখানে আপনি --norc --noprofile কমান্ডটি ব্যবহার করেছেন:

bash-4.3$ printf 'some text'

পেতে:

some textbash-4.3$

এই মুহুর্তে ব্যাকস্পেস কিছুই মুছে ফেলবে না। এছাড়াও ctrl-uকিছু কিছুই মুছে ফেলবে না। আপনি যদি কিছু অক্ষর ctrl-uটাইপ করেন (তার মধ্যে 11 টি পর্যন্ত) কেবল যা টাইপ করা হয়েছিল তা সরিয়ে ফেলবে (ব্যাকস্পেসের মতো)। তবে যখন 11 টিরও বেশি অক্ষর রয়েছে, তখন কমান্ডটি ctrl-uতার লাইনের শুরুটিকে বিশ্বাস করে এমনটিতে ফিরে যাবে (অনেকগুলি অক্ষর মুছে ফেলার একটি দ্রুত উপায়) যা এই প্রম্পটটি ছেড়ে দেবে:

some textb

এটি একটি বাগ আইএমও হিসাবে বিবেচনা করা যেতে পারে (এখনও বাশ 5.0 উপস্থিত রয়েছে)। তবে বাশ -5 এ 20 (অপের জন্য 18) টির জন্য পরিবর্তন হয়--norc --noprofile বিকল্পগুলি ব্যবহার না করা অপিটির জন্য 18) টির করুন (আমি কারণ খুঁজে বের করার চেষ্টা করিনি, যেমন একটি গুরুত্বপূর্ণ সমস্যা আইএমএনএসও নয়)।


উত্তরের জন্য ধন্যবাদ. দ্বিতীয় বাগ সম্পর্কিত, এর সাথে $ printf 'some text', আমি --norc --noprofile17 টি অক্ষর বা তার বেশি সন্নিবেশ না করেই ব্যাশ 5.0 এ পুনরুত্পাদন করতে পারি।
ব্যবহারকারী 938271

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