আমি পূর্বে ব্যবহৃত আদেশগুলির জন্য কীভাবে আমার কমান্ড-লাইন ইতিহাস অনুসন্ধান করব?


186

ইতিহাস দেখা ছাড়াও কি আমার ইতিহাস ফিল্টার করার উপায় আছে?

বলুন যে আমি "ssh" দিয়ে শুরু হওয়া একটি আদেশ সন্ধান করতে চাই?

উত্তর:


271

প্রেস Ctrl+ + Rলিখুন sshCtrl+ Rসর্বাধিক সাম্প্রতিক কমান্ড থেকে পুরানোটিতে (বিপরীত অনুসন্ধান) অনুসন্ধান শুরু করবে। আপনি একাধিক কমান্ড যা দিয়ে শুরু হয় থাকে তাহলে ssh, প্রেস Ctrl+ + Rপর্যন্ত বারবার আপনি মিল খুঁজে।

মিলটি পেয়ে গেলে আপনি Enterকমান্ডটি প্রয়োগ করতে চাপতে পারেন বা কমান্ডের পাঠ্যটি নির্বাচন করতে বাম / ডান কার্সারটি চাপতে পারেন ।

অনুসন্ধানের দিকটি উল্টানোর জন্য Ctrl+ এর জন্য কোনও ডিফল্ট বিপরীত বিকল্প নেই Rতবে এখানে আপনি এটি সম্পর্কে কিছু পরামর্শ পাবেন।


90

আপনি যদি কেবল নিজের ইতিহাস অনুসন্ধান history | grep sshকরতে চান তবে আপনি যা কিছু অনুসন্ধান করতে চান তার জন্য ssh প্রতিস্থাপন করে ব্যবহার করতে পারেন।


আমি এই পদ্ধতিটি ব্যবহার করি, কারণ আমি আমার ফিল্টারটির সাথে মিলিত প্রতিটি কমান্ডের তালিকাতে লিঙ্ক করেছি।
পিসু

15

আমি উপরের একটি সামান্য প্রকরণটি করি, আমার পক্ষে ভাল কাজ করে (যদি আপনি আপনার বাশ ইতিহাসের উল্লেখ করছেন

আমার বাড়ির ফোল্ডারে আমি একটি ফাইল তৈরি করি

.inputrc

ভিতরে এটি যায়

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

দ্রষ্টব্য: উপরের 14.04 এ আর কাজ করবে বলে মনে হয় না তাই এটি একই কাজ করে -

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

তারপরে পূর্বের কমান্ডটির বেশিরভাগটি টাইপ করলেও আমি ইচ্ছুক এবং পৃষ্ঠাটি / পৃষ্ঠা ডিএন বোতাম ব্যবহার করে ইতিহাস সন্ধান করে, সর্বদা পৃষ্ঠা আপ দিয়ে শুরু করে


যদি আপনার কাছে রুট অনুমতি থাকে তবে আপনি সম্পাদনা করতে পারবেন / ইত্যাদি / ইনপুটসিআর এই সমস্ত ব্যবহারকারীর জন্য কাজ করবে।
ওল্ফি

1
@ ডগ, হুম .. আমি উবুন্টু 15.04 পেয়েছি। এই সমাধানটি কাজ করে তবে Ctrl + LeftArrow / Ctrl + RightArrow কীগুলিকে গণ্ডগোল করে। ইস্যুটি .inputrc ফাইল তৈরির সাথে দেখে মনে হচ্ছে এটিতে প্রবেশের সাথে নয়।
রবি

.Inputrc আবার চালু করতে বা টার্মিনালটি বন্ধ করতে ভুলবেন না
ডেভিড

14

Ctrl+ টিপুন R"রিভার্স-আই-অনুসন্ধান" মোড শুরু করবে, "ssh" টাইপ করলে আপনার ইতিহাস অনুসন্ধান করবে "ssh" কমান্ডগুলির জন্য।


9

এখানে ক্লাসিক কমান্ডগুলি ব্যবহার করে (ডিস্ট্রোস জুড়ে কাজ করার সম্ভাবনা বেশি) আরও একটি পদ্ধতি। কমান্ডের ইতিহাস .bash_historyআপনার হোম ডিরেক্টরিতে ফাইলে সংরক্ষণ করা হয় , সুতরাং আপনি এটি করতে পারেন:

grep "ssh" ~/.bash_history

-iআপনার যদি কেস সংবেদনশীল অনুসন্ধানের প্রয়োজন হয় তবে পতাকাটি ভুলবেন না ।


history | grep sshকেবলমাত্র অস্থায়ী সেশনের এসএসএস প্রদর্শিত হবে তাই আমি এই উত্তরের জন্য যাব।
ইনিরাভপেটেল

3

আমি নিম্নলিখিত ফাংশনটি ইন্টারনেটে কোথাও খুঁজে পেয়েছি এবং এটি দুর্দান্ত প্রভাব হিসাবে ব্যবহার করেছি। এটি আপনার মধ্যে রাখুন ~/.bashrc:

hgrep () { 
    history | egrep --color=auto --recursive "$@" | egrep --color=auto --recursive -v "hgrep $@"
}

এখন আপনার শেল পুনরায় লোড: exec bash। আপনার কাছে এখন একটি নতুন কমান্ড রয়েছে, যা আপনি এটির মতো ব্যবহার করতে পারেন:

hgrep ssh

এটি আপনাকে আপনার ইতিহাস থেকে মিলিত কমান্ডগুলির একটি তালিকা প্রদর্শন করবে। কমান্ড চালানোর !জন্য কমান্ড নম্বর অনুসরণ করুন। এখানে একটি উদাহরণ:

~:$ hgrep scp
  207  tn scp foreign-teachers __HOST__:unity.log __HOST__:compiz.log .
  421  tn scp scott-laptop __HOST__:Scott\ Severance.asc .
  422  tn scp scott-laptop __HOST__:'Scott\ Severance.asc' .
  468  tn scott-desktop scp -r Backgrounds/* __HOST__:Pictures/Backgrounds
  469  tn scott-laptop scp -r Backgrounds/* __HOST__:Pictures/Backgrounds
  470  scp -r Backgrounds/* 192.168.1.2:Pictures/Backgrounds
~:$ !207

আমি এই পদ্ধতিকে Ctrl+ এর চেয়ে ভাল পছন্দ করি Rকারণ এটি আরও বেশি নমনীয় অনুসন্ধানগুলিকে মঞ্জুরি দেয় এবং আমি একবারে একাধিক ফলাফল দেখতে পারি।




1

ইতিহাস ভাল কিন্তু সীমাবদ্ধ নয় - আমি যাতে আমি লগ ইন করুন আমার ব্যাশ পরিবেশ সেট আপ করার জন্য পছন্দ করা সব । কমান্ড আমি কখনো ফেলেছেন এর ডিরেক্টরির যা তারা মধ্যে চালানো হয়েছে ছাড়াও তারপর আমি কমান্ড তালিকা সমস্ত কমান্ড চালানোর আমি বর্তমান ডিরেক্টরিটি চালিয়েছি, যা আমি গ্রেপ ইত্যাদিতে পাইপ করতে পারি - এটি 'ডিশ' বলে দেখুন:

https://github.com/wolfwoolford/dish

আপনি যদি তাড়া করতে চান তবে কেবল আপনার .bashrc এ এটি উত্স করুন ( https://github.com/wolfwoolford/dish/blob/master/dishrc )

'ডিশগ' - বা ডিশ গ্লোবাল - এর জন্য নিখরচায় একটি কার্যকর কমান্ড পাওয়া যায় যা ডিরেক্টরি নির্বিশেষে প্রতিটি কমান্ড প্রিন্ট করে দেয়। স্পষ্টতই এই শুধুমাত্র গ্রিপ এবং লেজ ইত্যাদির সাথে ব্যবহার করার সময় দরকারী ...

আমি বহু বছর ধরে এটি ব্যবহার করে আসছি এবং আমি যখনই কোনও নতুন বাক্স সেটআপ করি তখন এটি আক্ষরিক অর্থেই প্রথম জিনিস। এটি কোনও লুকানো ডিরেক্টরিতে (~ / .dish) টেক্সট ফাইলগুলিতে চালিত কমান্ডগুলিকে লগ করে দেয় .. ডিস্কের স্পেস নিয়ে আমার কোনও সমস্যা হয়নি ...


0

এটি @ এসএমআই- তে একটি মন্তব্য হিসাবে লিখতে চেয়েছিলেন তবে সহযোগিতা করার জন্য মন্তব্যটিতে বিন্যাসটি পেতে পারেন নি।

ইতিহাসের সাথে অনুসন্ধানের পরে history | grep sshআপনি তার আদেশটি বিস্মৃত চিহ্ন দিয়ে প্রম্পেন্ড করে টাইপ করে আপনার ইচ্ছা অনুযায়ী আদেশটি কার্যকর করতে পারেন !42

উদাহরণ:

$ ইতিহাস | গ্রেপ এসএসএস
  5 ssh me@someserver.net
 13 ssh me@someotherserver.net
 42 এসএসআই মেইথথিসোন ডট কম
42! 42
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.