বাশ কমান্ড লাইনে * কীভাবে প্রসারিত করা যায়


34

আমি বুঝি যে যদি আপনি টাইপ ls *এটি আসলে প্রসারিত হয় ls a b cযখন বর্তমান সরাসরি ফাইলের নামে আছে a, bএবং c

আমি ভাবছিলাম আমি প্রবেশের আগে এটিকে প্রসারিত করার কোনও উপায় আছে কিনা? Ctrl + X কীভাবে কাজ করে বা ট্যাব সম্পূর্ণরূপে কাজ করে তার অনুরূপ to

তাই নিজেকে পরিষ্কার করতে

$ ls *
<press magic key>
$ ls a b c

একইভাবে:

$ ls ~/
<press tab>
$ ls /home/username

আমি ভেবেছিলাম আমি এটি আগে দেখেছি তবে আমার ভুল হতে পারে।


ঠিক আছে, আমি খুব কম জানি তবে সবচেয়ে ভাল আমি জানি $ প্রতিধ্বনি * <সেন্টার> আপনি ls * কমান্ডের আগে এটি করতে পারতেন। এটি অবশ্যই কোনও ট্যাব বা শর্টকাটকে আঘাত করার মতো নয় এটি অবশ্যই প্রসারিত করতে।
বার্লপ

তবে সম্ভবত লিনাক্স ব্যবহারকারীরা এলএস * অনেক বেশি পছন্দ করেন না কারণ এটি সম্ভবত এলএসের সাথে প্রয়োজনীয় নয়, তবে গ্লোব্বিংও বিভিন্ন শেলের উপর আলাদাভাবে আচরণ করে যাতে এটি পোর্টেবল হয় না, তবে সুবিধাজনক হলে জরিমানা হয়। তবে এলএস ক্ষেত্রে, প্রয়োজনীয় নয়। ls * / ডিরেক্টরিগুলি তালিকাভুক্ত করে তবে ls কী করতে ডিজাইন করা হয়েছে তা তেমন নয়।
বারলপ

উত্তর:


19

আপনি glob-expand-wordমানুষের কাছ থেকে ফাংশনটি ব্যবহার করতে পারেন bash:

পয়েন্টের আগে শব্দটি পথের নামের জন্য একটি নিদর্শন হিসাবে বিবেচনা করা হয়
সম্প্রসারণ, এবং ফাইলের নামের সাথে তাল মিলিয়ে তালিকার তালিকাটি প্রবেশ করানো হয়েছে,
শব্দ প্রতিস্থাপন। যদি একটি সংখ্যার যুক্তি সরবরাহ করা হয়, একটি
পথের নাম প্রসারণের আগে তারকাচিহ্ন যুক্ত করা হয়।

আপনার এ জাতীয় কিছু যুক্ত করুন ~/.inputrc:

Control-x: glob-expand-word

আপনার $ ls *অনুসরণ করে এরপরে Ctrl-Xপ্রসারিত হবে $ ls a b c


8
এটি ইতিমধ্যে আবদ্ধ করা উচিত। এবং Ctrl-x ইতিমধ্যে একগুচ্ছ স্টাফের উপসর্গ হিসাবে আবদ্ধ। কি bind -p | grep 'C-x'তাদের দেখতে।
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

ঠিক আমি যা খুঁজছিলাম! ধন্যবাদ
ব্র্যাম্প

@ ডেনিস, এটি ইতিমধ্যে আবদ্ধ ছিল না, তবে এটি আমার .inputrc এ যুক্ত করেছে। আমি অনুমান করি যে এটি ডেবিয়ানের ডিফল্ট।
ব্র্যাম্প

3
@ ডেনিস: এটি C-x*আমার সিস্টেমে আবদ্ধ ।
সিউরাস

23

ব্যাশে, পঠনক্ষমতাটি কল করা হয় glob-expand-wordএবং এটি CtrlX*ডিফল্টরূপে আবদ্ধ হয় ।


11

আপনি যখন viমোডে থাকবেন ( set -o vi) তখন "ম্যাজিক কী" হয় Esc*। এটি bashএবং উভয়ের সাথেই কাজ করে ksh


শুধু ভিমারদের কাছে পরিষ্কার হওয়ার জন্য, প্রথমে কমান্ড লাইনটি সাধারণত টাইপ করার সময় অ্যাসিস্ট্রিকটি টাইপ করুন, তারপরে সম্পাদনা মোডের বাইরে চলে যান, তাত্ক্ষণিকভাবে পালিয়ে গেলে কর্সারটি নক্ষত্রের সন্ধান করবে এবং তারপরে অবস্থিত কার্সারটি দিয়ে গ্রহাণুটি আঘাত করবে এবং গ্লোব হবে আপনাকে প্রসারিত করুন এবং আবার সম্পাদনা মোডে ফেলে দিন।
নীলজি

4
ind বাইন্ড-কিউ গ্লোব-এক্সপেনড-শব্দ
গ্লোব-প্রসারিত শব্দটি "\ Cx *" এর মাধ্যমে আহ্বান করা যেতে পারে।

$ বাইন্ড-কিউব সন্নিবেশ-সম্পূর্ণকরণ
সন্নিবেশ-সম্পূর্ণকরণগুলি "\ ই *" এর মাধ্যমে প্রার্থনা করা যেতে পারে।

সুতরাং এই ব্যবহার করতে আমরা করতে পারেন

ls * Ctrl+ +x *

অথবা

ls * Esc *

প্রবেশের আগে হিট করার আগে জটিল রেখাগুলি প্রসারিত করুন


এটি সেরা উত্তর কারণ এটি সঠিক কী-বাইন্ডিং সন্ধান করে যা বিভিন্ন পরিবেশে ভিন্ন হতে পারে।
উইসবাকী

0

গ্লোব-প্রসারণ-শব্দের (\ Cx *) বিকল্প একটি সন্নিবেশ-সম্পূর্ণকরণ (\ ই *)। এটি শেষে একটি তারকাচিহ্ন ছাড়াই কাজ করে তবে এতে লুকানো ফাইলগুলির মতো অন্যান্য পরিপূর্ণতাও রয়েছে। আমি উভয়ই ~ / .inputrc এ রিবাউন্ড করেছি:

# insert glob results (\C-x* by default)
"\C-g": glob-expand-word

# insert completion list (\e* by default)
"\ei": insert-completions

উল্লিখিত glob-সম্পূর্ণ শব্দ (\ যেমন) উদাহরণস্বরূপ রূপান্তর করতে ব্যবহার করা যেতে পারে /System/Library/Launch*/*Finderথেকে /System/Library/LaunchAgents/com.apple.Finder.plist

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