বাশ ইতিহাসের একটি ব্যাপ্তি দেখুন


30

historyসব আউট কমান্ড তালিকা বর্তমান সেশনের জন্য ইতিহাস। ভালো লেগেছে:

1 ls 
2 cd /root
3 mkdir something
4 cd something
5 touch afile
6 ls
7 cd ..
8 rm something/afile
9 cd ..
10 ls
11 history

জন্য সুদের আইটেম অনুসন্ধান করতে, আমি নল করতে পারেন historyসঙ্গে grepমত

history | grep ls
1 ls
6 ls
10 ls

আমি সর্বশেষ 3 টি কমান্ডও দেখতে পারি যেমন:

history 3
11 history
12 history | grep ls
13 history 3

তবে আমি কীভাবে ইতিহাসের একটি নির্দিষ্ট পরিসীমা পেতে পারি? উদাহরণস্বরূপ যেমন:

history range 4 7
4 cd something
5 touch afile
6 ls
7 cd ..

আপনি শেষ xকমান্ডগুলির তালিকা করতে পারেন তারপরে পাইপ করুন head
ব্র্যাচলে

@ ব্র্যাচলে: এর জন্য আমাকে জানতে হবে শেষ কমান্ডে যেতে হবে। এটি বিবেচনা করুন, ইতিহাসে history | grep somethingসংখ্যাযুক্ত কমান্ডগুলির ফলাফলগুলি দেখায় 123 234 345এবং আমি শেষ আদেশের সংখ্যা নির্ধারণ করতে পারি না ( historyএই ক্ষেত্রে)। আমার শেষ কমান্ডটি 400, 500 বা যাই হোক না কেন নম্বরযুক্ত হতে পারে। সুতরাং প্রথমে আমাকে সেই নম্বরটি পরীক্ষা করতে হবে, পার্থক্যটি বের করতে হবে, শেষ xআদেশগুলি তালিকাভুক্ত করতে হবে এবং তারপরে পাইপটি করতে হবেhead
স্লার্টিবার্টফেষ্ট

উত্তর:


52

পরিবর্তে history, আপনি ব্যবহার করতে পারেন fc, যা আপনাকে পরিসীমা নির্বাচন করতে দেয়:

fc -l 4 7

4
এমনকি এটি শেষ থেকে গণনা করতে পছন্দ করে fc -l -16 -10
ফ্রাঙ্কলিন ইউ

হুম, অবাক করে কেন আমাদের আসল কমান্ডের পক্ষে যুক্তি না দিয়ে সম্পূর্ণ নতুন কমান্ডের প্রয়োজন ...
রিঙ্গো

10

যদি আপনার অবশ্যই হিস্ট্রি কমান্ডটি ব্যবহার করা হয় তবে সেড বা অ্যাজকের মাধ্যমে পাইপ করুন:

history | sed -n '10,20p'

history | awk 'NR >= 10 && NR <= 20'

অন্যথায় কুওনলমের উত্তরটি আরও ভাল বিকল্প।


6
যেহেতু আমরা খারাপ বিকল্পের মধ্যে আছি, একটি সংমিশ্রণ headএবং tailআরও কম মার্জিত উপায়ে এই সমস্যাটি সমাধান করবে। 10-> 25 ব্যাপ্তির জন্য আপনাকে ব্যবহার করতে হবে history | head 25 | tail 15
হারুন

1

আমি যে কমান্ডটি সন্ধান করছি তার চারপাশে লাইন নম্বরগুলিতে গ্রেপ সহ ইতিহাস ব্যবহার করা আমার পক্ষে সবচেয়ে ভাল কাজ করে।

উদাহরণস্বরূপ আমি প্রায় যা করেছি তার সন্ধান করছি ping mybox, কম-বেশি 20 লাইন।

$ history | grep "ping mybox" 20325 ping mybox

এই লাইন 20325তাই আমি [20320..20339]রেঞ্জের একটি সংখ্যা দ্বারা শুরু লাইন গ্রেপ করতে হবে ।

$ history | grep ^203[2-3][0-9]


(1) আপনি "কম বেশি 20" বলছেন তবে আপনার উদাহরণটি −5 এবং +14 দেখায়। (২) এটি আমার পক্ষে কাজ করে না, কারণ ইতিহাসের সংখ্যাগুলিতে শীর্ষস্থান রয়েছে বলে মনে হয়।
স্কট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.