আপনার বাশ স্ক্রিপ্টের শেষে এই লাইনগুলি যুক্ত করুন:
MY_COMMAND="ls"
MY_PARAMS=()
read -a MY_PARAMS -p $MY_COMMAND
exec $MY_COMMAND ${MY_PARAMS[@]}
এটি ধরে নিয়েছে যে আপনি যে আদেশটি কার্যকর করতে চান তা হ'ল ls , এটি আপনার উপযুক্ত অনুসারে এটি পরিবর্তন করুন। আপনি যা প্রবেশ করেন তা এমওয়াইপাআরএএমএস নামে একটি অ্যারে হিসাবে সঞ্চয় করা হয়, প্রথম লাইনের মাধ্যমে আরম্ভ করা; কমান্ডটি তারপরে অ্যারে ভেরিয়েবলের সম্প্রসারণের পরে কমান্ডটি পুনরুক্ত করে কার্যকর করা হয়, যার অর্থ এর সমস্ত উপাদান। উপরেরটি আপনার কমান্ডে কতগুলি উপাদান অতিক্রম করে তার থেকে পৃথক। এক্সিকিউট শেল কমান্ড শেলটি প্রদত্ত কমান্ডের সাথে প্রতিস্থাপন করে, কার্যকরভাবে আপনার স্ক্রিপ্টটি সমাপ্ত করে।
সম্পাদনা :
আপনি যদি আপনার স্ক্রিপ্টে পূর্ণ কমান্ড সম্পাদনার ক্ষমতা যুক্ত করতে চান তবে পঠন- পাঠকের যা যা রয়েছে তার চেয়ে অনেক বেশি , আপনি নিম্নলিখিতটি করতে পারেন: rlwrap ইনস্টল করুন , তারপরে আপনার বাশ স্ক্রিপ্টের নীচে নীচের কোডটি যুক্ত করুন:
stty -ixon
MYINPUT=()
HISTORY=$HOME/.bash_history
MYCOMMAND="ls"
MYINPUT=$(rlwrap -H $HISTORY -P $MYCOMMAND sh -c 'read REPLY && echo $REPLY')
stty ixon
exec sh -c "${MYINPUT[@]}"
rlwrap একটি প্রোগ্রাম যা সমস্ত বৈশিষ্ট্য ব্যবহার করতে সক্ষম হয় readline , খুব দরিদ্র ব্যাশ অসদৃশ -e পড়া বিকল্প। এটি আপনাকে এমন ফাইল সুনির্দিষ্ট করতে দেয় যেখানে সম্ভাব্য পরিপূর্ণতাগুলি অনুসন্ধান করতে হবে (আমি উপরে বাশ ইতিহাস, OME হোম / .বাশ_ইস্ত্রি ব্যবহার করেছি, তবে আপনি নিজের ফাইলটি লিখতে পারেন)। এছাড়াও এটিকে কনফিগার করা যেতে পারে (দেখুন inputrc অধ্যায় readline ম্যানুয়াল ) আপনি মধ্যে নির্বাচন করতে পারবেন এ গিয়ে Emacs -style এবং ষষ্ঠ -style সম্পাদনা, এবং আপনি এগিয়ে মিলের জন্য অনুসন্ধান করতে পারবেন ( Ctrl+ + r) অথবা অনুন্নত ( Ctrl+ + sইতিহাস ফাইলের মধ্যে), কমান্ডগুলি সম্পাদনা করুন এবং আরও অনেক কিছু।
আমি stty -ixon / set ixon বিকল্পগুলি যুক্ত করেছি কারণ বেশিরভাগ টার্মিনাল এমুলেটরগুলি নিয়ন্ত্রণ সিক্যুয়েন্স Ctrl+ rএবং Ctrl+ এবং আরও কিছুগুলিকে বাধা দেয় sএবং এটি এই সময়ের জন্য এই বৈশিষ্ট্যটি অক্ষম করে।
এছাড়াও, কমান্ড ইচ্ছা (আমি ব্যবহার ম অর্থবোধক উদ্দেশ্যে জন্য) লোড করা হয়, এবং মৃত্যুদন্ড কার্যকর করা যেতে পারে হিসাবে (আগমন আঘাত দ্বারা) অথবা পরিবর্তিত মাধ্যমে readline ক্ষমতার rlwrap ।
উপরেরটি যা করতে পারে না তা হ'ল সম্ভাব্য ম্যাচের একটি তালিকা প্রদর্শন করা, যা আপনাকে আপনার কীপ্যাডের মাধ্যমে চয়ন করতে দেয়। এর জন্য কিছু BASH প্রোগ্রামিং প্রয়োজন ( ডার্ক্টের উত্তর দেখুন)।
enter
নিশ্চিত করতে চাপতে পারে (তারপরে স্ক্রিপ্টটি এটি কার্যকর করবে এবং প্রস্থান করবে) বা বাধা (সিটিআরএল) -সি) বা সংশোধন / মুছুন (এটি একটি নতুন কমান্ড কার্যকর করা হবে বা কিছুই না)?