এটি চালানোর আগে সাবশেলটি প্রসারিত করবেন?


11

আমি প্রায়শই সাবসেলগুলি ব্যবহার করে কমান্ডগুলি চালিত করি এবং কখনও কখনও কিছু চালানোর আগে সাবশেলগুলি প্রসারিত করতে চাই This

উদাহরণস্বরূপ, নীচের কমান্ড লাইনটি চালানোর আগে আমি কীভাবে প্রসারিত করতে পারি, তাই আমি সাব-শেলের ফলাফলগুলি সম্পাদনা করতে পারি?

যেমন

$ find -name "test.txt" 
/tmp/test.txt

$ mv $(!!) /tmp/new.txt

কমান্ড চালানোর আগে আমি সাবশেলটি প্রসারিত দেখতে চাই , এরকম:

$ mv /tmp/test.txt /tmp/new.txt

এই কাজ করতে কিছু উপায় আছে কি?


1
zsh এটি করতে পারে, তবে আমি মোটামুটি নির্দিষ্ট ব্যাশ করতে পারি না। Zsh এ যদি প্যারামিটারে আপনার কার্সার থাকে এবং টিএবিতে আঘাত করে তবে এটি এটি প্রসারিত করবে
প্যাট্রিক

আমি যেহেতু স্যুইচ করেছি zshএবং এটি দুর্দান্ত এবং এটি করার জন্য , আপনার পরামর্শ অনুসারে ... দুর্দান্ত টিপ! আমি আসল উত্তরটি এখানে রেখে দেব, কারণ এটি একটি bashপ্রশ্ন ছিল ।
ব্র্যাড পার্কগুলি

উত্তর:


5

shell-expand-line( \e\C-e) বাশনে কমান্ড বিকল্পগুলি প্রসারিত করে।

$ bind -p|grep shell-ex
"\e\C-e": shell-expand-line

$(!!)\e\C-e পূর্ববর্তী কমান্ডটি আবার চালানো হবে এবং আউটপুট প্রবেশ করানো হবে:

"\eo": "$(!!)\e\C-e"

এটি অন্যান্য কমান্ড বিকল্পগুলিও প্রসারিত করে তবে এর মতো কোনও আদেশ নেই shell-expand-word

৪.০ বা তার পরে বাশে আপনি সক্ষম করতে globstar, টাইপ করতে এবং ( ) বা ( ) **/file.txtব্যবহার করতে পারেন ।glob-complete-word\egglob-expand-word\C-x*


2

এখানে একটি সহজ কৌশল - এই লাইনটি ~ / .inputrc এ যুক্ত করুন (প্রয়োজনে ফাইল তৈরি করুন):

কন্ট্রোল-এক্স: শেল-প্রসারিত-লাইন

দ্রষ্টব্য আপনি কেবলমাত্র ইতিহাস বা আপনার উপাধি বা উভয়ই প্রসারিত করতে নিম্নলিখিতগুলির মধ্যে দুটিও করতে পারেন:

নিয়ন্ত্রণ-এক্স: ইতিহাস-প্রসারিত-রেখা line

অথবা

নিয়ন্ত্রণ-এক্স: ওরফে-প্রসারিত-রেখা line

অথবা

কন্ট্রোল-এক্স: ইতিহাস-এবং-উপাধি-প্রসারিত-রেখা

এটি এই ব্লগটি থেকে প্রকাশিত হয়েছিল এবং সুপারউসারে এই প্রশ্নটি যা খুব মিল:

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