বাশে read -eরিডলাইন ব্যবহার করে। এটি প্রস্থান স্থিতি সহ প্রস্থান করবে 1যখন Ctrl+ Dকেবলমাত্র ইনপুট। সুতরাং আমরা যদি Escট্রিগার তৈরি করতে kill-whole-lineএবং তারপরে প্রেরণ করতে পরিচালিত হই \C-d, তবে এটি কৌশলটি করা উচিত।
আমি এই দুটি জিনিস ক্রমানুসারে একমাত্র কীস্ট্রোক করতে পারি না। আমি তবে kill-whole-lineঅন্য কীস্ট্রোকের সাথে আবদ্ধ হতে পারি এবং কীস্ট্রোকটি Escপ্রেরণ করতে পারি এবং \C-d:
set -o emacs
bind '"\C-w": kill-whole-line'
bind '"\e": "\C-w\C-d"'
read -e
আপনি যদি পরে readপ্রস্থান স্থিতি ফিরে পেতে চান তবে দ্বিতীয় বাঁধাইটি হ'ল:0Esc
bind '"\e": "\C-w\C-j"'
অথবা আপনি ইনপুট হিসাবে কিছু নির্দিষ্ট স্ট্রিং পাস করতে চয়ন করতে পারেন:
bind '"\e": "\C-w---interrupted---\C-j"'
বা Escসহজভাবে কাজ করুন Enter(ইনপুট গ্রহণ করুন):
bind '"\e": "\C-j"' # no prior \C-w binding required for this
নোট করুন যে একাধিক দ্রুত Escস্ট্রোক কেবল কয়েকজন পালানোর চেয়ে বেশি । কিছু লোক দ্রুত Escগর্ভপাত বন্ধ করতে কয়েকবার চাপ দেয় । এই কারণে আপনি "\e\e"একই স্ট্রিংয়ের সাথে আবদ্ধ হতে চাইতে পারেন "\e"।
এবং যদি read -eপ্রস্থানের পরে এই জাতীয় কয়েকটি স্ট্রোক "বাম" থাকে তবে সেগুলি পরে "ব্যবহার" করা হবে। আপনি সম্ভবত এটি চান না, সুতরাং স্ট্যান্ডিন থেকে অতিরিক্ত ক্যারেক্টারটি এই আদেশ দিয়ে ফেলে দিন:
read -st 0.1 -n 1000000
আপনি যদি প্রথমটির ঠিক পরে চালিত হন তবে readসমস্ত স্ট্রোক ধরার জন্য আরও সময়সীমা বিবেচনা করুন Esc, অধিকতর উত্তেজক ব্যবহারকারী কীটি স্ট্রোক করা বন্ধ করবে prior
পুরো স্ক্রিপ্টটি দেখতে এটির মতো হতে পারে:
#!/bin/bash
set -o emacs
bind '"\C-w": kill-whole-line'
bind '"\e": "\C-w\C-d"'
bind '"\e\e": "\C-w\C-d"'
IFS= read -rep "Enter name (ESC to exit): " || {
printf '\nAborting\n'
read -st 1 -n 1000000
exit 1
}
printf 'The input was %s\n' "$REPLY"
স্ক্রিপ্ট (উত্সাহিত না হওয়া) তার নিজস্ব শেলের মধ্যে চলে তাই এই বাঁধাইগুলি আপনি যে শেলটিটি দিয়েছিলেন সেটিকে প্রভাবিত করবে না। আনবাইন্ড করার দরকার নেই, যদি না স্ক্রিপ্ট নিজেই চালিয়ে যায় এবং এক পর্যায়ে বাইন্ডিংগুলি কোনও বিষয়ে হস্তক্ষেপ করে।
read <press ESC then ENTER>;[ "$REPLY" = "$(echo -e '\033')" ] && echo ESC