শর্টকাট কী চাপলে কীভাবে শেলের মধ্যে একটি স্ক্রিপ্ট কার্যকর করা যায়


14

একটি শর্টকাট কী চাপলে আমি কীভাবে শেলের মধ্যে একটি স্ক্রিপ্ট কার্যকর করতে পারি।

মূলত আমার যা প্রয়োজন তা হল যখন একটি শর্টকাট কী টিপানো হয় স্ক্রিপ্টটি কোনও ফাইল থেকে পড়তে হবে এবং টার্মিনালে সেই সামগ্রীটি প্রদর্শন করা উচিত।


আপনি যে পদ্ধতিটি ব্যবহার করেছেন আমি চেষ্টা করেছি bind '"\e[24~":"airmon-ng start wlan0\n"'কিন্তু আমি টার্মিনালটি বন্ধ করার পরে জিনিসটি পুনরায় সেট হয়ে গেছে এবং সমস্ত হটকিগুলি চলে গেছে বলে মনে হচ্ছে

উত্তর:


20

bindকীবোর্ড শর্টকাট মানচিত্র করতে আপনি বিল্টিন কমান্ডটি ব্যবহার করতে পারেন যাতে এটি একটি কমান্ড / শেল স্ক্রিপ্ট কার্যকর করে।

উদাহরণ

বলুন যে আমরা কমান্ডটি চালাতে চাই pwd, যখন আমরা F12কী টিপবো।

$ bind '"\e[24~":"pwd\n"'

এখন যখন আমি টিপতে F12আমার প্রম্পটে, $:

$ pwd
/home/saml

কীবোর্ড শর্টকাট নির্ধারণ করা হচ্ছে

প্রদত্ত কীবোর্ড শর্টকাটের জন্য এসকেপ কোড নির্ধারণ করতে আপনি নিম্নলিখিত কৌশলটি ব্যবহার করতে পারেন। বেশিরভাগ সিস্টেমে Ctrl+ চাপুন V, ছেড়ে দিন এবং তারপরে আপনার কোডটি চাওয়ার জন্য চাপুন। কিছু অন্যান্য সিস্টেম রয়েছে যার Mপরিবর্তে এটি কাজ করবেV

উদাহরণ

টিপলে Ctrl+ + Vতারপর উভয় মুক্তি Ctrlএবং Vএবং পরিশেষে প্রেস F12একটি টার্মিনাল উইন্ডোর এই ফেরৎ:

$ ^[[24~

এই আউটপুটটি নিম্নলিখিত হিসাবে ব্যাখ্যা করা যায়, ^[এটিই Escমূল। সুতরাং যখন আমরা এই নির্দিষ্ট কীটি bindকমান্ডটি ব্যবহার করে নির্দিষ্ট করতে চাই আমাদের উপরের সমস্ত কিছু অনুসরণ করে কীটি \eনির্দেশ করতে একটি ব্যবহার করতে হবে Esc। সুতরাং bindভালো কমান্ড দেখায়:

$ bind '"\e[24~":"....."'

মাঝখানে একটি কমান্ড কার্যকর করা হচ্ছে

bind -xপ্রম্পটে আপনি কিছু টাইপ করার মাঝখানে থাকাকালীন কমান্ডগুলি চালিত হবে এমন কীবোর্ড শর্টকাটগুলি সেটআপ করতেও আপনি ব্যবহার করতে পারেন এবং এই কমান্ডগুলির আউটপুট প্রদর্শিত হবে তবে প্রম্পটে আপনি যা যা টাইপ করেছিলেন তা অক্ষত থাকবে।

$ bind -x '"\eW":"..."'

দ্রষ্টব্য: এই পদ্ধতিটি কেবল কীবোর্ড শর্টকাটগুলির সাথে কাজ করে যা 1 অক্ষরের আউটপুট দেয়, সুতরাং F12এখানে কাজ করবে না।

উদাহরণ

এর কীবোর্ড শর্টকাট Alt+ Shift+ করা যাক W

$ bind -x '"\eW":"who"'

বলুন আমি আদেশটি টাইপ করছি finger:

$ finger

এখন আমি কীবোর্ড শর্টকাট Alt+ Shift+ হিট করেছি W:

saml     tty1         2013-09-01 11:01 (:0)
saml     pts/0        2013-09-01 11:03 (:0.0)
saml     pts/1        2013-09-01 11:05 (:0.0)
saml     pts/2        2013-09-01 11:05 (:0.0)
saml     pts/5        2013-09-03 22:45 (:0.0)
$ finger

কী হচ্ছে হয় bindকমান্ড সংজ্ঞায়িত চলমান, whoতার আউটপুট গ্রহণ এবং প্রম্পট সামনে ঢোকাতে। আপনি যদি এটির পুনরাবৃত্তি করেন তবে আপনি যা দেখতে পাচ্ছেন তা এখানে থেকে আমার কাছে আউটপুট 2 বার মারবে:

saml     tty1         2013-09-01 11:01 (:0)
saml     pts/0        2013-09-01 11:03 (:0.0)
saml     pts/1        2013-09-01 11:05 (:0.0)
saml     pts/2        2013-09-01 11:05 (:0.0)
saml     pts/5        2013-09-03 22:45 (:0.0)
saml     tty1         2013-09-01 11:01 (:0)
saml     pts/0        2013-09-01 11:03 (:0.0)
saml     pts/1        2013-09-01 11:05 (:0.0)
saml     pts/2        2013-09-01 11:05 (:0.0)
saml     pts/5        2013-09-03 22:45 (:0.0)
$ finger

তোমার সমস্যা

সুতরাং একটি ধারণা bind -xহ'ল উপরের পদ্ধতিটি ব্যবহার করা এবং catআপনার প্রম্পটে এই পাঠ্য ফাইলটি প্রদর্শন করা:

$ bind -x '"\eW":"cat someinfo.txt"'

এখন যখন আমি কমান্ডগুলি চালিত করি তখন আমি এই ফাইলটি দেখতে পাচ্ছি:

This is text from some 
multi-line file reminding
me how to do some 
stuff
$ finger 

ফাইলের আউটপুট someinfo.txtউপরের আমার fingerকমান্ডের উপরে প্রদর্শিত হচ্ছে ।

তথ্যসূত্র


আমার কেবল বিষয়বস্তু প্রদর্শন করতে হবে, এটি সম্পাদন করার জন্য নয়।
ব্যবহারকারী 3539

সুতরাং বিষয়বস্তু প্রদর্শন করে এমন একটি স্ক্রিপ্টের সাথে আবদ্ধ করুন।
লার্স রোহরবাচ

1
Ctrl + m আমার পক্ষে কাজ করছে না। এটি এমনভাবে কাজ করে যে আমি সবেমাত্র এন্টার টিপলাম। আমার মনে হয় এমন একটি বিকল্প (আমি বাশ নবাগত) টাইপ করতে হবে echo ' (একক-উদ্ধৃতির পরে স্থান), তারপরে Ctrl + v টিপুন, তারপরে আপনার চাবিটি এবং তারপরে স্পেস, একক-উদ্ধৃতি ... এখানে বর্ণিত রয়েছে । উদাহরণ:echo ' ^[OD '
আলিরাটালমাইন্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.