ইতিহাস অনুসন্ধান, আংশিক + আপ-তীর


146

আমি অনুসন্ধান করেছি, কিন্তু এটিতে কিছুই পাইনি। আমি টার্মিনালটি ব্যবহার করে ব্যাশে একটি কার্যকারিতা খুঁজছি।

ফিরে আসার সময়, আমার একটি ডেবিয়ান সিস্টেমে একজন ব্যবহারকারী ছিল এবং একটি বন্ধু আমাকে একটি সুবিধাজনক ইতিহাস অনুসন্ধান বৈশিষ্ট্য সহ সেট আপ করেছিল (আমি বিশ্বাস করি যে আমি তখন tcsh ব্যবহার করেছি), যেখানে আমি আগের কমান্ডটির প্রারম্ভ টাইপ করব, হিট আপ-এ্যারো, এবং এটি আংশিক স্ট্রিংয়ের উপর ভিত্তি করে একটি অনুসন্ধান করবে।

যেমন যদি আমার ইতিহাস হয়:

./script.pl
./script.pl arg1
cat output
cat output | grep yada

এবং আমি টাইপ ., এবং প্রেস আপ-তীর, এটা আমাকে দেখাও হবে: ./script.pl arg1। এটি আবার টিপুন এবং এটি প্রদর্শিত হবে ./script.pl, ইত্যাদি।

এটি অনেকটা পছন্দ করে grep। এই কার্যকারিতাটি পাওয়ার কোনও উপায় আছে কি?



1
@ মার্সেল দেখে মনে হচ্ছে এটি একই উত্তর হতে পারে, আমি অনুসন্ধানে দেখেছি কিন্তু এটি আইপিথন এবং শেল কীওয়ার্ডগুলির সাথে আমার প্রশ্নের সাথে সংযুক্ত হয়নি।
টিএলপি

এর মতো শব্দগুলি - github.com/zsh-users/zsh-autosuggestions
slm

উত্তর:


197

আপনার নীচের লাইনগুলি রাখুন ~/.inputrc:

## arrow up
"\e[A":history-search-backward
## arrow down
"\e[B":history-search-forward

লাইন দিয়ে শুরু #মন্তব্যগুলি। আমি পিছনে এবং কি এগিয়ে তা মনে করতে পারছি না। এটি নিয়ে পরীক্ষা নিরীক্ষা করুন। হতে পারে আপনাকে পিছনে এবং এগিয়ে যেতে হবে।


কিছুটা পটভূমি তথ্য:

প্রম্পটটি পরিচালনা করতে বাশ রিডলাইন ব্যবহার করছে । ~/.inputrcপঠনের জন্য কনফিগারেশন ফাইল। মনে রাখবেন যে এটি অন্যান্য সফ্টওয়্যারটিতে রিডলাইন গ্রন্থাগার ব্যবহার করে কার্যকর হবে, উদাহরণস্বরূপ আইপিথন

রিডলাইন সম্পর্কে আরও তথ্যের জন্য বাশ ম্যানুয়াল পড়ুন । সেখানে আপনি আরও ইতিহাস সম্পর্কিত রিডলাইন কমান্ডগুলি সন্ধান করতে পারেন ।

তীর কীগুলির জন্য পালানোর কোডগুলি পেতে আপনি নিম্নলিখিতটি করতে পারেন:

  1. catএকটি টার্মিনাল থেকে শুরু করুন (ঠিক cat, আর কোন যুক্তি নেই)।
  2. কীবোর্ডে কী টাইপ করুন, আপনি ^[[Aআপ তীর এবং ^[[Bডাউন তীরের মতো জিনিসগুলি পাবেন ।
  3. ^[সঙ্গে প্রতিস্থাপন \e

1
দুর্দান্ত, তবে এই সমাধানটি সিআরটিএল-বাম / সিআরটিএল-ডান শর্টকাটগুলি অক্ষম করে।
আইয়াল

যে কেউ আমাকে কীভাবে বলতে পারেন যে আমি কীভাবে একইভাবে এটি তৈরি করতে পারি
হিতেশ কুমার

@ লেসমানা, আমি একা বিড়ালের অংশের জন্য অতিরিক্ত পয়েন্ট দেব
মাইক ডি

দ্বিতীয় আইয়াল, আমার কীভাবে এটি থাকতে পারে সে সম্পর্কে কারও কাছে পরামর্শ আছে তবে সিটিআরএল-বাম / সিআরটিএল-ডান শর্টকাট সংরক্ষণ করতে পারেন?
kbrose

6
সমস্ত ডিফল্ট যুক্ত রাখার $include /etc/inputrcজন্য প্রথম লাইনে অগ্রাধিকার দিন।
তুলিও ক্যাসাগ্রান্ডে

31

নিম্নলিখিত বিষয়বস্তু দিয়ে /etc/profile.d/ এ 644 মোডের সাথে setup_readline.sh নামের একটি ফাইল তৈরি করুন, লগইন করুন এবং আপনার পছন্দসই কীগুলি পরীক্ষা করুন:

bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'

আমি মনে করি এটি করার সর্বোত্তম উপায়। বেশিরভাগ ক্ষেত্রে যদি আপনি কনফিগারেশন ম্যানেজমেন্ট সিস্টেম যেমন শেফ, পুতুল ইত্যাদি ব্যবহার করেন

এবং সিস্টেম কনফিগারেশন এখনও অপরিবর্তিত!


4
অদ্ভুতভাবে ~ / ইনপুটসিআর আমার পক্ষে কাজ করে নি - তবে এই কমান্ডগুলি .bash_profile এ রেখেছিল।
জো

1
.inputrc আমার বাড়ির ফোল্ডারে বিদ্যমান নেই এবং আমি .bashrc এ যাই হোক না কেন এই ধরণের সেটিংস রাখতে পছন্দ করি যাতে আমি আমার সেটিংসের জন্য কেবল একটি ফাইল নিয়ে যেতে পারি। সুতরাং এটি সম্ভবত এটির চেয়ে ভাল উত্তর তবে গ্রহণযোগ্য একটি।
শীতল শাহ

.inputrc আমার পক্ষে কল্পিতভাবে কাজ করে, তবে আমি লোড করার পরে না screen। অদ্ভুত জিনিসটি হ'ল, অন্যান্য .inputrc শর্টকাটগুলি কাজ করে, তবে এগুলি হয় না। সুতরাং আমি এখন উভয় সমাধান ব্যবহার করি।
ওড়ওলোফিল

এটি অতি সহায়ক যখন উদাহরণস্বরূপ, আপনি জিনিসগুলি করতে কোনও সার্ভারে লগইন করেন এবং এগুলির মধ্যে হ্যাকটি মিস করছেন এবং সার্ভারে and / .inputrc সম্পাদনা এবং পুনরায় লোড করতে চান না।
ড্যানম্যাকটফ

13

Ctrl + R আপনাকে এই ধরণের কার্যকারিতা দেবে। একটি আংশিক কমান্ড টাইপ করা শুরু করুন এবং এটি পুরানোগুলি নিয়ে আসবে যা আপনি উপরে এবং ডাউন তীরগুলির সাহায্যে নেভিগেট করতে পারবেন। আরও তথ্য: http://www.nuxified.org/blog/ctrl_r_in_t_Bash_hell


2
আপনার উত্তর দেওয়ার জন্য ধন্যবাদ. হ্যাঁ, আমি চেষ্টা করেছি, তবে আমি এটি কিছুটা ... চতুর দেখতে পেলাম। এটি আংশিক দিয়ে শুরু করে কমান্ডগুলির মাধ্যমে আমাকে স্ক্রোল করার অনুমতি দেবে না, এটি কেবল প্রথমটি দেখায়। এটি অক্ষরটির জন্য পুরো কমান্ডটি অনুসন্ধান করে যা একরকম অকেজো।
টিএলপি

5
@ টিএলপি, পুনরায় হিট করুনCtrl+r
আকোস্টাডিনভ

4

আমার বিশ্বাস "১৪.০৪" এর অধীনে যে "~ / .inputrc" তৈরি করা উচিত সে সম্পর্কে লেসমানার জবাবটি সম্পূর্ণ করতে, "~ / .bashrc" এ যাচাই করুন / যুক্ত করুন (প্রথম লাইনটি আমার "~ / .bashrc" তে ইতিমধ্যে বিদ্যমান):

shopt -s histappend  
PROMPT_COMMAND='history -a'  

এটি ইতিমধ্যে https://doc.ubuntu-fr.org/terminal?&#pour_completer_les_commandes_a_partir_de_l_historique এ ফরাসী ভাষায় ব্যাখ্যা করা হয়েছে ।


2
এই কমান্ডটি প্রাথমিকভাবে অধিবেশন শেষ হওয়ার অপেক্ষার পরিবর্তে ইতিহাস ফাইলটিতে তাত্ক্ষণিকভাবে কমান্ড যুক্ত করার জন্য বাশকে নির্দেশ দেয়। এটি দরকারী যদি আপনার প্রচুর টার্মিনাল খোলা থাকে এবং একের মধ্যে ইতিহাস looseিলা করতে না চান তবে অন্যথায় প্রয়োজন হয় না। ডিজিটালওশন.com/কমিনিউটি / টিউটোরিয়ালস / …
শীতল শাহ

3

সম্ভবত আপনি https://github.com/dvorka/hstr চেষ্টা করতে পারেন যা বাশ ইতিহাসের সরল এবং বহু-লাইন সরল ফিল্টারিং সরবরাহ করে যা একটি মেট্রিকের ভিত্তিতে (কখন, কত সময় এবং কমান্ডের দৈর্ঘ্যের ক্ষেত্রে গুরুত্বপূর্ণ) - আপনি ব্যবহার করতে পারেন ইতিহাসটি সহজেই নেভিগেট করতে তীর কীগুলি:

এখানে চিত্র বর্ণনা লিখুন

এটা সহজেই করা যায় আবদ্ধ করার Ctrl-rএবং / অথবাCtrl-s


0

নিম্নলিখিত সমাধানটি উপরে উল্লিখিত কয়েকটি পদ্ধতির সাথে একত্রিত হয়ে প্রসারিত: নিম্নলিখিত আচরণ অর্জনের ~/.bash_aliasesজন্য আপনার ফাইলটিতে নিম্নলিখিত রেখা যুক্ত করুন (প্রয়োজন নেই ~/.inputrc):

  1. ইতিহাসে উপরে / নীচে সরান (কেবল একই উপসর্গের সাথে কেবল প্রবেশ) সিটিটিআর + আপ এবং সিটিআরএল + ডাউন টিপুন। এটি কেবল ইউপি এবং ডাউন এর মাধ্যমে সম্পূর্ণ ইতিহাসে উপরে / নিচে চলে যাওয়ার মানিক কার্যকারিতার সহাবস্থান করতে পারে
  2. CTRL + RIGHT এবং CTRL + LEFT টিপে একটি কমান্ডলাইনে পরবর্তী / পূর্ববর্তী শব্দে ঝাঁপুন
bind '"\e[1;5A":history-search-backward'
bind '"\e[1;5B":history-search-forward'
bind '"\e[1;5C":forward-word'
bind '"\e[1;5D":backward-word'

source ./bash_aliasesপরিবর্তনগুলি প্রয়োগ করতে শেলটিতে পুনরায় লগইন করুন (বা রান করুন )।

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