উদাহরণ: আমি F12কমান্ডের চাবিটি echo "foobar"
এমনভাবে বাঁধতে চাই যে প্রতিবারই F12"foobar" বার্তাটি হিট করে পর্দায় মুদ্রণ করা হবে। আদর্শভাবে এটি কোনও বিল্টইনস নয়, কোনও যথেচ্ছ শেল কমান্ড হতে পারে। কিভাবে এই সম্পর্কে যায়?
উত্তর:
কমান্ড লাইনে Ctrl- vকমান্ড লাইনে চাপ দিয়ে কী দ্বারা নির্গত অক্ষরের অনুক্রমটি নির্ধারণ করতে পারেন , তারপরে আপনার আগ্রহী কীটি টিপুন my আমার সিস্টেমে F12, আমি পেয়েছি ^[[24~
। ^[
প্রতিনিধিত্ব করে Esc। বিভিন্ন ধরণের টার্মিনাল বা টার্মিনাল এমুলেটরগুলি একই কী এর জন্য বিভিন্ন কোড নির্গত করতে পারে।
বাশ প্রম্পটে আপনি কী ম্যাক্রো সক্ষম করতে এরকম একটি কমান্ড প্রবেশ করতে পারেন যাতে আপনি এটি ব্যবহার করে দেখতে পারেন।
bind '"\e[24~":"foobar"'
এখন, আপনি চাপলে F12, আপনি আরও সম্পাদনার জন্য প্রস্তুত কমান্ড লাইনে "ফুবার" পাবেন। আপনি যদি কমান্ডটি তত্ক্ষণাত একটি কমান্ড প্রবেশ করানোর জন্য কী-স্ট্রোক চান, আপনি একটি নতুন লাইন যুক্ত করতে পারেন:
bind '"\e[24~":"pwd\n"'
এখন আপনি যখন টিপুন F12, আপনি প্রেস না করে বর্তমান ডিরেক্টরিটি প্রদর্শিত পাবেন Enter। আপনি যদি ইতিমধ্যে লাইনে কিছু টাইপ করেছেন এবং আপনি এটি ব্যবহার করেন যা স্বয়ংক্রিয়ভাবে কার্যকর হয়? এটা অগোছালো হতে পারে। তবে আপনি আপনার ম্যাক্রোর অংশ হিসাবে লাইনটি সাফ করতে পারেন:
bind '"\e[24~":"\C-k \C-upwd\n"'
স্পেসটি নিশ্চিত করে যে ঘণ্টাটি বাজানো থেকে বাড়াতে Ctrl- uমুছার জন্য কিছু আছে।
একবার আপনি যেভাবে চাইছেন ম্যাক্রোটি কাজ করার পরে আপনি এটি আপনার ~/.inputrc
ফাইলে যুক্ত করে স্থির করতে পারেন । bind
কমান্ড বা একক উদ্ধৃতিগুলির বাইরের সেটটির প্রয়োজন নেই :
"\e[24~":"\C-k \C-upwd\n"
সম্পাদনা করুন:
আপনি একটি কী বাঁধাইও তৈরি করতে পারেন যা বর্তমান কমান্ড লাইনটি বিঘ্নিত না করে কিছু কার্যকর করবে।
bind -x '"\eW":"who"'
তারপরে আপনি একটি কমান্ড টাইপ করার সময় একটি ব্যবহারকারীর নাম প্রয়োজন, উদাহরণস্বরূপ, এবং আপনাকে যে লগ ইন করা হয়েছে তাদের নামগুলি জানা দরকার, আপনি টিপতে পারেন Alt- Shift- Wএবং আউটপুট who
প্রদর্শিত হবে এবং প্রম্পটটি পুনরায় জারি করা হবে আপনার আংশিক কমান্ড অক্ষত এবং লাইনে একই অবস্থানে কার্সার সহ।
দুর্ভাগ্যক্রমে, এটি কীগুলির জন্য সঠিকভাবে কাজ করে না F12যা দুটি অক্ষরের বেশি আউটপুট দেয়। কিছু ক্ষেত্রে এটি প্রায় কাজ করা যেতে পারে।
কমান্ড ( who
এই ক্ষেত্রে) যে কোনও নির্বাহযোগ্য - একটি প্রোগ্রাম, স্ক্রিপ্ট বা ফাংশন হতে পারে।
bind '"\C-q": menu-complete'
উদাহরণস্বরূপ (অথবা আপনার ~/.inputrc
: "\C-q": menu-complete
)। stty -ixon
আপনার ~/.bashrc
প্রবাহ নিয়ন্ত্রণ অক্ষম করতে এবং ^ এস এবং ^ কিউ উপলব্ধ করার প্রয়োজন হতে পারে ।
^[
উপস্থাপন করে esc
এবং তারপরে আপনি এটির \e
উদাহরণ হিসাবে দেখিয়েছেন। কেন আপনি দয়া করে ব্যাখ্যা করতে পারেন?
^[
এটি আউটপুট প্রতিনিধিত্ব করে। \e
(এক পথ প্রবেশ হয় ^[
যে জন্য কাজ করে না)।
আপনি এতে বাশ কী বাইন্ডিংগুলি সংজ্ঞায়িত করতে পারেন ~/.inputrc
(জিএনইউ রিডলাইন লাইব্রেরির জন্য কনফিগারেশন ফাইল)। বাক্য গঠনটি হ'ল
<কিজিয়াম বা কী নাম>: ম্যাক্রো
উদাহরণ স্বরূপ:
Control-o: "> output"
ম্যাক্রো তৈরি করবে যা "> আউটপুট" সন্নিবেশ করান যখন আপনি টিপুন ControlO
"\e[11~": "echo foobar"
একটি ম্যাক্রো তৈরি করবে যা "আপনি ইকো ফুবার" সন্নিবেশ করান যখন আপনি টিপবেন F1... আমি জানিনা কীগুলির কীসিমটি F11হাতছাড়া।
সম্পাদনা করুন:
.inputrc
\n
লাইনফিডের জন্য পালানোর ক্রমটি বোঝে , তাই আপনি ব্যবহার করতে পারেন
"\e[11~": "echo foobar\n"
যা কমান্ড জারি হওয়ার পরে কার্যকরভাবে 'এন্টার টিপুন'।
Alt
, ব্যবহার \e
, যেমন "\eo": "> output"
।
এই সমাধানটি এক্স 11 এনভায়রনমেন্টের সাথে সুনির্দিষ্ট এবং ব্যাশের সাথে কিছুই করার নেই তবে নিম্নলিখিতটি আপনার .Xmodmaps এ যুক্ত করুন
% loadkeys
keycode 88 = F12
string F12 = "foobar"
%
F12 টি চাপলে টার্মিনালে "foobar" স্ট্রিংটি প্রেরণ করবে।
আমি Ctrl+B
একটি আদেশ আবদ্ধ করতে চেয়েছিলেন । উপরের উত্তরের দ্বারা অনুপ্রাণিত হয়ে আমি ব্যবহারের চেষ্টা করেছি bind
তবে বুঝতে পারি না যে ক্রিপ্টিক স্কুইগলস ( \e[24~
?) এর কোন সিরিজে অনুবাদ হয়েছে Ctrl+B
।
একটি ম্যাকের উপর, টার্মিনাল অ্যাপ্লিকেশানের সেটিংসে যান, প্রোফাইলগুলি -> কীবোর্ড -> +
তারপরে আপনার পরে থাকা কীবোর্ড শর্টকাটটি টিপুন এবং এটি বেরিয়ে আসে। আমার জন্য Ctrl+B
ফলাফল \002
যা আমি সফলভাবে কমান্ড করতে বাধ্য
bind '"\002":"echo command"'
এছাড়াও, আপনি যদি কমান্ডটি সরাসরি-সম্পাদন করতে চান (কেবলমাত্র প্রম্পটে সন্নিবেশ করা হয়নি), আপনি আপনার কমান্ডের শেষে এন্টারটি যুক্ত করতে পারেন:
bind '"\002":"echo command\015"'