শেলের ইতিহাস অনুসন্ধানের সেরা উপায়


78

গ্রীপের চেয়ে কমান্ডের জন্য আমার ইতিহাসের ফাইলটি অনুসন্ধান করার আরও ভাল উপায় আছে কি? কমান্ডটি কী হিসাবে শুরু হবে তা সম্পর্কে আমার কিছু ধারণা আছে তবে আমি জানি না এটি ইতিহাসে কতটা পিছিয়ে রয়েছে।

আপডেট: পূর্বে zsh নির্দিষ্ট ছিল তবে ওভারল্যাপিংয়ের কারণে উত্তরগুলি এখানে কোনও শেল (বা মোড (vi / emacs)) এর জন্য নির্দ্বিধায় উত্তর দিতে পারে, কেবল এটি নির্দিষ্ট কিনা তা লক্ষ্য করুন।

উত্তর:


73

Ctrl+ ডেস্ক্রিপ্টরR যেমন বলেছিলেন তেমনি সর্বোত্তম উপায় । আপনি এটিও ব্যবহার করতে পারেন !stringযা সর্বশেষতম কমান্ডটি দিয়ে শুরু হয় stringবা !?string?যা সর্বাধিক সাম্প্রতিক কমান্ডটি চালায় string

(আমি মনে করি এটিই কেবল এই প্রশ্নের সাথে প্রাসঙ্গিক, তবে আমি এই উত্তরে ইতিহাসের অনেকগুলি আদেশ কভার করেছি )


4
আপনি কীভাবে 'ctrl + r' দেখতে দেখতে পছন্দ করেন?
xenoterracide


আমি বুঝতে পারিনি যে এসই ইঞ্জিন কোনও এইচটিএমএল ধন্যবাদ গ্রহণ করেছে।
xenoterracide

আমি জানতাম না যে কেবিডি কীওয়ার্ডটি "ctrl" এবং "+" সঠিকভাবে ব্যাখ্যা করবে! আমি প্রতিটি কী আলাদাভাবে ট্যাগ করতাম। ধন্যবাদ!
অলিভিয়ার ডুলাক

2
@ অলিভিয়ারডুলাক দুঃখের বিষয় এটি নয়, আমি কী কী ফর্ম্যাট করতে ব্যবহার করেছি ঠিক সেভাবেই; তাদের পৃথক কীগুলি তৈরি করার জন্য পরে কেউ আমার উত্তর সম্পাদনা করেছে
মাইকেল মরোজেক

30

ব্যাশ ব্যবহার করার সময়, টাইপ করুন Control- Rএবং তারপরে টাইপ করা শুরু করুন। টাইপিং Control- Rবারবার কিছু পাঠ্য ইনপুট দেওয়ার পরে আপনাকে কমান্ড লাইনের সাথে মিলিয়ে ফিরিয়ে আনবে।


18

এটি সাহায্য করবে কিনা তা নিশ্চিত নয় তবে আমি ব্যবহার করতে পছন্দ করি ctrl- rএবং তারপরে কমান্ডটি টাইপ করা শুরু করুন। এটি আপনার ইতিহাসের মধ্য দিয়ে যাওয়া উচিত এবং আপনাকে প্রথম ম্যাচের সাথে উপস্থাপন করা উচিত। ম্যাচগুলির মাধ্যমে টগল করতে কেবল হিট করুন ctrl- rআবার।


2
দুঃখিত, zsh সম্পর্কে ভুলে গেছেন। আপনার এই কী-বাইন্ডিংটি আপনার ~ / .zshrc: বাইন্ডকি 'al আর' ইতিহাস-বর্ধিত-অনুসন্ধান-পশ্চাদপটে
ডিক্রিপ্টর

17

আপনি যদি নিম্নলিখিতটি যোগ করেন ~/.inputrc

"\e[5~": history-search-backward
"\e[6~": history-search-forward

এবং ব্যাশ পুনর্সূচনা আপনাকে টাইপ করা শুরু করতে পারেন, এবং তারপর ব্যবহার Page Upএবং Page Downঅনগ্রসর সরানো এবং একই উপসর্গ আপনি শুধু টাইপ করা দিয়ে শুরু লাইনের ইতিহাস মাধ্যমে ফরোয়ার্ড করতে।

(কিছু ব্যবহার করতে পছন্দ করতে পারে \e[Aএবং \e[B, যা নতুন কীগুলি বাঁধার পরিবর্তে স্বাভাবিক Upএবং Downক্রিয়াগুলি প্রতিস্থাপন করবে ))


আমি এই কমান্ডগুলিতে Alt + Upএবং ম্যাপ করতে পছন্দ করি Alt + Down। কীবোর্ড অনুকরণের উপর নির্ভর করে টার্মিনাল অনুকরণগুলি এই সংমিশ্রণগুলি ব্যবহার করে \E[Aএবং \E[A(যেমন লিনাক্স কী বাইন্ডিং সহ কে। ডি। কনসোল) অথবা \E[1;3Aএবং \E[1;3B(যেমন এক্স ফ্রি 4 বাইন্ডিং সহ এক্সএফসিইসি টার্মিনাল বা কে.ডি. কনসোল ) ম্যাপ করা যেতে পারে ।
খ্রিস্টান হেরেনজ

9

ইন্টারেক্টিভ প্রম্পট দ্বারা আহবান করা Ctrl- Rযা ইতিমধ্যে উল্লিখিত ছিল, সবচেয়ে সুবিধাজনক উপায়। অতিরিক্তভাবে এটি কমান্ড লাইনে একটি উপসর্গের জন্য ইতিহাস অনুসন্ধান করতে পুনরায় তৈরি করা Upএবং Downতীর কীগুলি জনপ্রিয় however তবে এর জন্য ফাইলটিতে কিছু পরিবর্তন~/.inputrc প্রয়োজন ।

ক্লাসিক এবং কম ইন্টারেক্টিভ সমাধান হ'ল শেল ইতিহাস সম্প্রসারণ ব্যবহার করা। টাইপিং

!foo

গত কমান্ড যে দিয়ে শুরু হয় চালানো হবে fooএবং

!?foo

রয়েছে এমন সর্বশেষ কমান্ড কার্যকর করবে foo। আপনার শেলটি বাশ বা সামঞ্জস্যপূর্ণ বলে ধরে নিলে বাশ রেফারেন্স ম্যানুয়ালিতে ইতিহাসের প্রসারণ সম্পর্কে আরও তথ্য পাওয়া যাবে ।


6

আপনি যোগ তাহলে stty -ixonআপনার টু ~/.bashrcফাইল Ctrl- sবিপরীত দিক যেতে হবে Ctrl- r


আমি C-sএই উদ্দেশ্যে ব্যবহার করতে চেয়েছিলাম , তবে আমার টার্মিনাল হিমশীতল হয়ে গেছে ; হুঁশিয়ার! (ঠিক আছে, আমি এখনও কোনও নিয়োগ stty ixon
নিইনি,

3
@ আইএমজেড: C-q" বাতিল হবে" " এটি এবং C-sস্বাভাবিক সফ্টওয়্যার প্রবাহ নিয়ন্ত্রণের অক্ষরগুলি যা ধীরে ধীরে সিরিয়াল সংযোগগুলি ব্যবহৃত হয় তখন আউটপুট প্রবাহকে ম্যানুয়ালি বাধা দেয় (বিরতি দেয়) useful এখন আউটপুট বেশিরভাগ ক্ষেত্রে এত দ্রুত হয় যে আপনি যখন চাপবেন তখন আপনি যা দেখতে চান C-sতা ইতিমধ্যে স্ক্রোল হয়ে গেছে। stty -ixonসফ্টওয়্যার প্রবাহ নিয়ন্ত্রণ বন্ধ করে দেয়।
ডেনিস উইলিয়ামসন

ফ্যান্টাস্টিক! এইভাবে ইতিহাসে এগিয়ে যাওয়ার জন্য আমি বছরের পর বছর অনুসন্ধান করেছি।
মার্য়ার

3

আপনি যদি টাইপ করেন !lsতবে বাশ আপনার ইতিহাস সন্ধান করবে এবং "ls" দিয়ে শুরু হওয়া সর্বাধিক সাম্প্রতিক কমান্ড কার্যকর করবে


2

zsh নির্দিষ্ট হতে পারে। গবেষণায় এই উত্তর আমি খুঁজে পাওয়া যায় নি vi-history-search-backward যা এক সঙ্গে অনুসন্ধান করতে পারবেন /(যা আমি ছিলাম উল্লেখ না) ষষ্ঠ মোডে তারপর আপনি ব্যবহার করতে পারেন nএবং Nযথাক্রমে ফরোয়ার্ড এবং অনগ্রসর অনুসন্ধান করতে (টিপে পরে enter)।


2

আমি অবাক হয়েছি এটির উল্লেখ নেই - তবে আপনি এটি করে বাশ বা কেএসআইতে ভিআই-মোড নির্বাচন করতে পারেন:

set -o vi

... বা বিষয়বস্তু হিসাবে এটি ব্যবহার ~/.inputrc(যেমন বাশ যেমন প্রোগ্রামগুলিতে ব্যবহৃত জিএনইউ পাঠ্যক্রমের জন্য):

set editing-mode vi

তারপরে, আপনি কমান্ড মোডেEsc প্রবেশ করতে এবং ইতিহাসে ফিরে যেতে এবং এগিয়ে যেতে ব্যবহার করতে পারেন । আপনি সাধারণত অনুসন্ধান করতে, এবং বিপরীতে অনুসন্ধান করতেও অনুসন্ধান করতে পারেন ।kj/?

আপনি যদি ব্যবহার করেন ~/.inputrcতবে এটি কেবল জিএনইউ ব্যাশে নয়, জিএনইউ রিডলাইন যেমন CLISP এবং সম্ভবত মাইএসকিউএল কমান্ড শেল এবং সিপিএএন শেলের মতো প্রোগ্রাম ব্যবহার করে।


2

বিপরীত অনুসন্ধান (সিটিআরএল-আর কমান্ড সহ) ব্যবহার করার সময় এগিয়ে যেতে:

  1. আপনার .bashrc ফাইলটি খুলুন:
    sudo gedit ~/.bashrc

  2. এই লাইনটি যুক্ত করুন ("f" অক্ষরটি অন্য কোনও সিস্টেমের দ্বারা ব্যবহৃত না হয়ে প্রতিস্থাপন করা যেতে পারে)

    bind '"\C-f": forward-search-history' 
  3. আপনার ফাইলটি বন্ধ করুন এবং আপনার .bashrc আপডেট করুন (বা অন্য একটি টার্মিনাল খুলুন) কমান্ড সহ:
    source ~/.bashrcবা. ~/.bashrc

এখনই আপনি শর্টকাটের সাথে ইতিহাসে অগ্রবর্তী হতে পারেন: Ctrl + f

উবুন্টু 18.04 এলটিএসে কাজ করা


1

আমি বেশিরভাগ সময় নিম্নলিখিত দুটি ব্যবহার করি।
তবে দয়া করে দুজনেই অক্ষর শুরু করার জন্য অনুসন্ধান করুন note

  1. tcsh শেল তাহলে কমান্ডের কিছু কয়েক charecters টাইপ Esc+ + pএটা পূর্ববর্তী কমান্ডের যে কী অনুক্রম প্রেস আবার এটা অন্য কমান্ড দেখাবে দিয়ে শুরু প্রদর্শন করবে।
  2. ksh : এটি ব্যবহার করুন fc -e - <SPACE> <first few char for your previous >এই ক্রমের সাথে মিল রেখে শেষ কমান্ড চালাবে।

আমি আমার ksh এবং tcsh এর জন্য বাশের মতো Ctrl+ কিছু খুঁজে পাচ্ছিলাম না R


3
Ctrl + r বাশের চেয়ে ksh এ কিছুটা আলাদাভাবে কাজ করে। Ctrl + r টিপুন এবং তারপরে আপনার সন্ধান করা স্ট্রিংটি টাইপ করুন এবং এন্টার টিপুন । একই জিনিসটি অনুসন্ধান করতে, Ctrl + r টিপুন এবং স্ট্রিংটি পুনরায় টাইপ না করে প্রবেশ করুন। এটি set -o emacsউপায় হয়।
ডেনিস উইলিয়ামসন

@ ডেনিস: +1 :-)
হেমন্ত

1

Tcsh সহ Ctrl- ব্যবহার করার একটি উপায় আছে । আপনার মধ্যে নিম্নলিখিত যোগ করুন :R~/.cshrc

bindkey "^r" i-search-back (এটি কেবল একটি ক্যারেট সাইন এবং চিঠি আর)

এটা আমার জন্য সবচেয়ে বড় সময় বাঁচাবার।


1

@ পেফিয়েন্টের অনুরূপ উত্তর, তবে আপনি আপনার .bashrc এ রাখতে পারেন

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

এবং বাক্যাংশের অংশটি টাইপ করুন এবং তারপরে মেলে এমন সাম্প্রতিক বিকল্পগুলি ব্রাউজ করতে উপরে / ডাউন তীরটি ব্যবহার করুন। এটি মাতলাবের ডিফল্ট আচরণ।

বেশিরভাগ লোকের জন্য, আপনি যদি নিজের সেটিংসকে একটি নতুন সিস্টেমে পোর্ট করতে চান, তবে আপনার কেবল ~/.bashrcতখনই মনে রাখবেন যে আপনাকে এটি ছিনিয়ে নিতে হবে~/.inputrc


0

হ্যাঁ এটি বিদ্যমান, কমপক্ষে যদি আপনি zsh ব্যবহার করছেন। কমান্ডটি টাইপ করা শুরু করুন এবং তারপরে M-p( ESC p) টিপুন এবং এটি পূর্ববর্তী কমান্ডগুলি সন্ধান করবে যা আপনার টাইপের সাথে মেলে। পরের ম্যাচটি খুঁজতে এটি আবার চাপুন।


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