টার্মিনালে সর্বাধিক ব্যবহৃত কমান্ডগুলির সাথে কীভাবে একটি তালিকা তৈরি করতে পারি?


13

টার্মিনালে সর্বাধিক ব্যবহৃত কমান্ডগুলির সাথে কীভাবে একটি তালিকা তৈরি করতে পারি?

আমি জানি যে আমাদের কারও কারও কাছে ভবিষ্যতের প্রস্তাবগুলির জন্য এই প্রশ্নটি অব্যবহার্য হতে পারে, তবে এমনকি এর মতো, তালিকাটি কার্যকর হতে পারে যখন আমরা অতীতে একবার বা কিছু সময় ব্যবহৃত একটি আদেশ মনে করি না, যখন আমরা অনুসন্ধান করতে পারি এই তালিকার শেষ।


কোন টার্মিনাল?
লেন

উত্তর:


20

এটি করার জন্য আমরা .bash_historyফাইল থেকে রেকর্ড ব্যবহার করব । পরবর্তী কমান্ড আপনাকে সমস্ত কমান্ডের একটি তালিকা দেবে যাতে আপনি সেগুলি প্রায়শই ব্যবহার করেছেন:

history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -nr

যদি আপনি কেবল শীর্ষ 10 চান, আপনাকে অবশ্যই headউপরের কমান্ডটিতে যুক্ত করতে হবে :

history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -nr | head

একটি নির্দিষ্ট শীর্ষ পেতে, উদাহরণস্বরূপ শীর্ষ 5, বিকল্পটি headসহ ব্যবহার করুন -n 5:

শীর্ষ 5 কমান্ড

যদি আপনি তালিকাটি বিপরীত ক্রমে চান (খুব কম ব্যবহৃত কমান্ড সহ শীর্ষে), rদ্বিতীয়টির জন্য ওপরিয়ন ব্যবহার করবেন না sort:

history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -n

এবং অবশেষে একবার ব্যবহার করা কমান্ডগুলির সাথে একটি তালিকা পেতে, ব্যবহার করুন grep ' 1 '( 1পছন্দসই সংখ্যার সাথে পরিবর্তন করুন ):

history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | grep ' 1 '

sudoকমান্ডগুলির সাথে ডিল করতে (যেমন sudo vim foo) কেবলমাত্র {print $3}awk কমান্ডের পরিবর্তে , ব্যবহার করুন:

{if($3 ~ /sudo/) print $4; else print $3}

সুতরাং পুরো কমান্ডটি দেখতে হবে:

history | awk 'BEGIN {FS="[ \t]+|\\|"} {if($3 ~ /sudo/) print $4; else print $3}' | sort | uniq -c | sort -nr

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

$ history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -nr | head
    284 vim
    260 git
    187 find
    174 man
    168 echo
    149 rm
    134 awk
    115 pac
    110 sudo
    102 l

$ history | awk 'BEGIN {FS="[ \t]+|\\|"} {if($3 ~ /sudo/) print $4; else print $3}' | sort | uniq -c | sort -nr | head
    298 vim
    260 git
    189 find
    174 man
    168 echo
    153 rm
    134 awk
    115 pac
    102 l
     95 cd

আপনার জন্য গন্য মধ্যে লাফ দেখতে পারেন vim, rmইত্যাদি


1
: আপনার উত্তর আপনার সোর্স ক্রেডিট করতে পারেন stackoverflow.com/a/68390/1210983
ohaal

3
@ ওহাল বিশ্বাস করুন বা না করুন, উপরের উত্স সম্পর্কে আমি জানতাম না; আন্তরিকভাবে এটি ছিল আইয়াসির কম্পিউটার সায়েন্সে পড়াশুনা করা এক বন্ধুর পরীক্ষাগার সমস্যা ।
রাদু রেডানু

@ মুরু আপনি সুডোর জন্য সম্পাদনাটি এমন কোনও কিছুর জন্য কাজ করে না sudo -iকারণ এটি আমাকে -iআদেশ হিসাবে দেয়
geek1011

1
@ geek1011 sudo -iএকটি নতুন শেল শুরু করে। সেই ইতিহাস আর আপনার শেলের ইতিহাসে নেই, তবে এর ইতিহাসে root। স্পষ্টতই এই আদেশগুলি অনেক ধরণের ক্ষেত্রে কাজ করে না; শেল ভাষার জন্য নিজের পার্সার না লিখে সমস্ত সম্ভাব্য কমান্ড মোকাবেলার কোনও উপায় নেই ।
মুড়ু

1
@ জিক ১০১০ নিশ্চিত, অন্য চেক যুক্ত করুন, এরকম কিছু:if ($3 ~ /sudo/ && $4 !~ /^-/)
মুরু

3

নীচে কমান্ডটি top 10প্রায়শই ব্যবহৃত টার্মিনাল কমান্ডগুলিও তালিকাভুক্ত করবে ,

history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head

টার্মিনালে প্রায়শই ব্যবহৃত হয় এমন সমস্ত কমান্ডের তালিকা করতে কমান্ড,

history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn

2

ফিশ এবং বাশ - প্রশ্নটি একটি নির্দিষ্ট শেল নির্দিষ্ট করে না, কেবল 'টার্মিনাল'। আপনি যে নম্বর চান তা মাথা বদলান।

মাছ

history | awk '{print $1}' | sort | uniq --count | sort --numeric-sort --reverse | head -10

517 git
314 drush
197 sudo
171 cd
115 man
103 echo
 95 vi
 81 dig
 67 set
 66 ls

এই ব্যাশটি কাজ করে বলে মনে হচ্ছে এবং অন্যান্য উত্তরের চেয়ে কিছুটা খাটো এবং বোঝা সহজ। আমি এই ধরণের উদাহরণগুলিতে পাঠযোগ্যতার জন্য দীর্ঘ বিকল্পগুলি পছন্দ করি।

সজোরে আঘাত

history | awk '{print $2}' | sort | uniq --count | sort --numeric-sort --reverse | head -10

73 drush
72 exit
65 sudo
46 g
40 echo
35 ll
34 tmux
30 history
30 fish
27 mux
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.