ইতিহাস থেকে আদেশগুলি কার্যকর করার কোনও উপায় আছে কি?


99

উদাহরণ স্বরূপ:

[root@ip-10-0-7-125 ~]# history | grep free
  594  free -m
  634  free -m | xargs | awk '{print "free/total memory" $17 " / " $ 8}'
  635  free -m
  636  free -m | xargs | awk '{print "free/total memory" $9 " / " $ 10}'
  736  df -h | xargs |  awk '{print "free/total disk: " $11 " / " $9}'
  740  df -h | xargs |  awk '{print "free/total disk: " $11 " / " $8}'
  741  free -m | xargs | awk '{print "free/total memory: " $17 " / " $8 " MB"}'

আমি কেবল ভাবছি যে 63৩6 কমান্ডটি আবার টাইপ না করে চালানোর কোনও উপায় আছে, কেবল কিছু plus৩6 বা কিছু যেমন ইতিহাস 63 636 বা কিছু লিখুন something



1
হ্যাঁ, আমি এটি জানি তবে আমি যা চাই তা ঠিক তা নয়।
ওয়ান

উত্তর:


170

বাশ, ঠিক !636আছে ঠিক আছে।


12
In Linux- কোনও ব্যক্তি যে শেলটি চালাচ্ছেন (ব্যাশ, জ্যাশ, ইত্যাদি) এর সাথে এর আরও বেশি সম্পর্ক রয়েছে তারপরে আপনি যে ওএসটি চালিয়ে যাচ্ছেন। ইতিহাসের সমর্থন ছাড়াই লিনাক্সে শেল রয়েছে।
জোরডাচি

@ জোরেদাচে এবং একইভাবে, উইন্ডোজটিতে ব্যাশের বেশিরভাগ বাস্তবায়নে এটি সূক্ষ্মভাবে কাজ করে।
আজেদী 32

1
অবশ্যই কেবল বাশ নয়, অন্যান্য শেলগুলিও - সিএসএস সহ।
ড্র হয়েছে

5
যদি আপনি একটি কমান্ড পেয়ে থাকেন যা আপনি চালাতে চান তার সাথে খুব সমান হয় :p, !636:pউদাহরণস্বরূপ , আপনি কমান্ডটি না চালিয়ে মুদ্রণ করতে যুক্ত করতে পারেন । যার অর্থ আপনি উপরের তীরটি টিপে আপনার ইতিহাস থেকে সহজেই এটি আবার নির্বাচন করতে পারেন এবং আপনি যে ছোটখাট পরিবর্তন চান তা করতে পারেন
এজেফেরিস

78

হ্যাঁ, এটিকে "ইতিহাস সম্প্রসারণ" বলা হয়। দেখা

LESS='+/^HISTORY EXPANSION' man bash

সম্পূর্ণ বিশদ জন্য।

একটি সংখ্যার পরে একটি বিস্ময়বোধক বিন্দু ব্যবহার তর্কযোগ্যভাবে সহজ ব্যবহার:

!636

তবে আপনি এর শেষ নম্বরটি না জেনে সরাসরি শেষ সম্পাদিত কমান্ডটি চালাতে পারেন:

!!

অথবা আপনি দুটি কমান্ড ফিরে যেতে পারেন:

!-2

তবে আমি যে ফর্মটি প্রায়শই ব্যবহার করি তা হ'ল শেষ কমান্ডের শেষ যুক্তির পুনরাবৃত্তি:

echo this text goes into a file > /tmp/afile.txt
cat !$

অথবা, ধরুন আমি কোনও ফাইল পরিদর্শন করছি। ট্যাব সমাপ্তি ব্যবহার করে, আমি নিম্নলিখিতগুলি করতে পারি:

ls -l /really/long/path/to/some/file
less !$

আবার আরও তথ্যের জন্য ম্যান পৃষ্ঠাটি পড়ুন :

LESS='+/^HISTORY EXPANSION' man bash

25
ইন্টারেক্টিভভাবে, এর Alt-.চেয়ে আরও সুবিধাজনক হতে পারে !$। এটি লাইনে সর্বশেষ কমান্ড ভার্ব্যাটিমের সর্বশেষ যুক্তি সন্নিবেশ করায়
ulidtko

2
@ জুলিদকো কোথায় এই বিশেষ পলায়নের নথিভুক্ত হয় (আমি জানতাম !$, তবে কখনও শুনিনি Alt-.)? আপনি কি এটির একটি লিঙ্ক পোস্ট করবেন, দয়া করে?
এডিএমজেড

5
LESS="+/DEFAULT KEY BINDINGS" man 3 readline, /etc/inputrc, ~/.inputrc। বাশ ছাড়াও অনেক প্রোগ্রাম লাইব্রেডলাইন ব্যবহার করে; যারা করেন তাদের জন্য, আপনি একই বৈশিষ্ট্যগুলি যেমন Alt-., Ctrl-X-U(পূর্বাবস্থায় ফেলা), Ctrl-/(শর্টকাট বর্ণনা করুন), ট্যাব-সমাপ্তি ইত্যাদি - বিনামূল্যে পান। উদাহরণস্বরূপ, কেবল তিন লাইন এর PYTHONSTARTUPএক ট্যাব-সম্পূর্ণতে এবং ইতিহাস সক্ষম করতে পারেন স্টক পাইথন REPL । যা বাশ-এর ​​মতো (বেশিরভাগ ক্ষেত্রে) একইভাবে কাজ করবে, যেহেতু এটি জিএনইউ রিডলাইন গ্রন্থাগারটি কাজ করে। রিডলাইনটির ম্যানপেজ বৈশিষ্ট্যগুলি বিশদভাবে বর্ণনা করে।
ulidtko

2
এছাড়াও, Ctl-UpArrow (বা বাশ উপর AltUpArrow) ইতিহাস তালিকার মাধ্যমে পিছনে স্ক্রোল করবে। কয়েকটি অক্ষর টাইপ করলে আপআরও কেবলমাত্র সেই অক্ষর দিয়ে শুরু হওয়া কমান্ডগুলি পায়, যেমন "ফ্রি (সিটিএল-আপ)" ওপির তালিকার সমস্ত "ফ্রি ..." কমান্ডের মাধ্যমে স্ক্রোলগুলি। এটি রিডলাইন ব্যবহার করে এমন gnuplot এবং gdb এর মতো জিনিসগুলিতেও কাজ করে।
জামেস্কফ

2
@ আজেদী 32, আমার উত্তরে চূড়ান্ত সাহসী রেখাটি দেখুন। :) সত্যই এই উত্তরটি ইতিহাসের বিস্তৃতি কী করতে পারে তা সবেমাত্র একটি স্বাদ । মনে রাখবেন যে এটি শেলের স্তরে রয়েছে, আপনি যে কমান্ডটি কল করছেন তা নয়; অতএব echo {1..5}তারপরে কেবল একটি নয়, পাঁচটি ফাইল touch !$স্পর্শ করবে । সুতরাং কঠোরভাবে বলতে গেলে এটি শেষ যুক্তি নয় তবে সেই লাইনের শেষ শেল শব্দ। ( অনুসরণ করার চেষ্টা করুন। echo hello >tempecho goodbye !$
ওয়াইল্ডকার্ড

14

খুব সুন্দর, যদি আপনি প্রথম ইতিহাসটি না চান, সংখ্যাটি নোট করুন ইত্যাদি:

ব্যাশে (এবং সম্ভবত অন্যরা):

ctrl-r something 

( ctrl-r= "ইন্টারেক্টিভ অনুসন্ধান রিভার্স") ( something= পূর্ববর্তী কমান্ডের একটি অংশ)

এটি আপনাকে ধারণ করে সর্বশেষ ইতিহাসের লাইনটি প্রদর্শন করবে something। এর আগে একটি পেতে, পুনরায় ctrl-r (একা) করুন, প্রতিবার এটি পূর্ববর্তী লাইনটি পাবে।

উদা:

ctrl-r  10

'10' সম্বলিত সর্বশেষতম ইতিহাসের লাইনটি দেখানোর জন্য ( $10আপনার উদাহরণটিতে লাইনটি উদাহরণ হিসাবে দেখানোর জন্য ), এবং ctrl-rযতক্ষণ না আপনি ইতিহাসের রেখাটি সন্ধান করছেন ততক্ষণ

যখন লাইন আপনি চেয়েছিলেন প্রদর্শিত শুধু Enterএটি চালানোর জন্য (অথবা আপনার কাছে এটি সম্পাদনা করতে পারে ব্যবহার arrow keys, backspaceএবং ctrl-aলাইনের শুরুতে যেতে ctrl-e, শেষ পেতে ctrl-k: কার্সার থেকে লাইনের শেষে থেকে "বধ" থেকে (= মুছে ফেলা + এটি একটি বাফারে সংরক্ষণ করে) ctrl-y,: পুনরুদ্ধার করতে, বাফার থেকে, পূর্বে নিহত বিট ইত্যাদি etc.

আপনি যদি এগিয়ে (সিটিআরএল) অনুসন্ধান করতে চান তবে আপনাকে প্রথমে এক্সোনকে অক্ষম করতে হবে : https://stackoverflow.com/a/791800/1841533 দেখুন :

"কেবল চালিয়ে XON / XOFF অক্ষম করতে

stty -ixon

"(এবং তারপরে আপনি টার্মিনাল স্থির না করেই সিটিআরএল-গুলি ব্যবহার করতে সক্ষম হবেন)


আমি যদি এটি করি এবং ঘটনাক্রমে একসময় অনেকগুলি সিআরটিএল-টি টিপতে টিপতে টিপছি, ইতিহাসে আবার অনুসন্ধান করার কোনও উপায় আছে কি?
ক্যাস্পার্ড

@ ক্যাস্পার্ড: হ্যাঁ আপনি পারেন। এস এ অনেক উত্তর এটিকে নির্দেশ করে: সিআরটিএল-গুলি সামনের দিকে অনুসন্ধানের জন্য।
অলিভিয়ার ডুলাক

দুর্ভাগ্যক্রমে ctrl-s টার্মিনাল হিম করার জন্য ব্যবহৃত হয়, এবং ব্যাশ তা অক্ষম করে না, যাতে এটি ডিফল্ট কনফিগারেশনে কাজ করে না। (অন্যান্য প্রোগ্রাম - যেমন ইমাসস - টার্মিনাল হিমায়িত করার জন্য কী-বাইন্ডিংটি অক্ষম করে যেমন
সিটিআরএল

@ ক্যাস্পার্ড: হ্যাঁ, এর আগে উল্লেখ না করায় দুঃখিত (আমি "অনেক উত্তর" দেখিয়েছি কারণ তারা সুনির্দিষ্টভাবে এটি করে তবে আমি মন্তব্যটিতে এটি টাইপ করতে বা একটি লিঙ্ক দেওয়ার জন্য সময় নিইনি ... (আমি আমার ব্যবহার করছিলাম ফোন)। আমি এখন বাসায় ফিরে এসে উপরের উত্তরে এটি সম্পাদনা করতে পারলাম। বাশ ইতিহাস অনুসন্ধানের জন্য সিটিআরএল-গুলি আপনাকে প্রথমে স্টিক্স-সিক্সন করা দরকার
অলিভিয়ার ডুলাক

এই কমান্ডটি সিআরটিএল-এর সাধারণ ব্যবহার ভঙ্গ করতে চলেছে, সুতরাং এটি আসলে কোনও বিকল্প নয়।
ক্যাস্পার্ড

7

আপনি শেল বিল্টিন এফসি ব্যবহার করতে পারেন :

fc -s 636

2
এটি আসলে গৃহীত উত্তরের চেয়ে ভাল তবে আপনাকে -sসুবিধাগুলি সরিয়ে নিতে হবে remove আপনি যদি চালনা করেন তবে fc 636আপনি বাফারে আপনার ইতিহাস থেকে 636 কমান্ড সহ একটি সম্পাদক খুলবেন এবং আপনি সংরক্ষণ এবং প্রস্থান করার সময় কমান্ডটি (পরিবর্তিত বা না) চালানো হবে। এবং আরও ভাল, এটি পসিক্স-সম্মতিযুক্ত
ওয়াইল্ডকার্ড

ধন্যবাদ স্টিভেনপেনি এবং হ্যাঁ, আমি পসিক্স কী তা জানি, যদিও আমি প্রাসঙ্গিকতা দেখছি না। নির্বিশেষে, কিছু সহজে অ্যাক্সেস করা এবং অন্তর্ভুক্ত ডকুমেন্টেশন সুন্দর হবে।
ফাহিম মিঠা

@ ফাহিমমিঠ চেষ্টা করুন "সহায়তা এফসি।"
ওয়াইল্ডকার্ড

@ উইল্ডকার্ড পসিক্স helpনয় - এটি করতে man dashবা একই রকম হতে পারে
স্টিভেন পেনি

@ উইল্ডকার্ড ধন্যবাদ আমি helpবিদ্যমান ভুলে যেতে ঝোঁক । আরেকটি শেল বিল্টিন এবং অচেতন ব্যবহারকারীদের জন্য বিস্মিত হয়ে যারা নতুন সিস্টেমের সাথে সাহায্য চাইতে পারে, তবে পরিবর্তে গীবতী প্রবাহের মুখোমুখি। :-(
ফাহিম মিঠা

3

রয়েছে HSTR- hhজন্য ইন্টারেক্টিভ bashএবং zshইন্টারেক্টিভ কমান্ড নির্বাচন, Ctrl-R বিপরীত অনুসন্ধানের চেয়ে ভাল:

hh ইন্টারেক্টিভ ইতিহাস কমান্ড উদাহরণ

এটির ইন্টারেক্টিভ, সুতরাং এটি কার্যকর করার আগে আপনি কমান্ডটি সন্ধান করতে এবং সম্পাদনা করতে পারবেন।

উবুন্টুতে, আপনি hhনিম্নলিখিত ওয়ান-লাইনার দিয়ে ইনস্টল করতে পারেন :

sudo add-apt-repository ppa:ultradvorka/ppa && sudo apt-get update && sudo apt-get install hh && hh --show-configuration >> ~/.bashrc

বা ধাপে ধাপে:

sudo add-apt-repository ppa:ultradvorka/ppa
sudo apt-get update
sudo apt-get install hh

hhফেডোরা, আরএইচইএল বা সেন্টোস এ ইনস্টল করুন:

sudo dnf|yum install hstr -y

এর সাথে ম্যাকওএসে homebrew:

brew install hh

... তারপরে এটি কনফিগার করুন:

hh --show-configuration >> ~/.bashrc

এটি ডিফল্ট Ctrl-R আচরণ প্রতিস্থাপন করবে।

চালান hh --show-configurationকোনটি আপনার ব্যাশ প্রোফাইল যোগ করা হবে।

প্রকল্পের হোমপেজে আরও কনফিগারেশন বিকল্পগুলি গিথুব এ উপলব্ধ: https://github.com/dvorka/hstr str

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