Chciałbym wiedzieć, którego polecenia najczęściej używam w wierszu poleceń. Chciałbym wiedzieć, żebym mógł lepiej korzystać z wiersza poleceń. Jeśli wiem, którego polecenia najczęściej używam, mogę przeczytać więcej na jego temat i znaleźć lepsze sposoby ich użycia.
Wiem, że historia przechowuje listę wszystkich poprzednich poleceń, które wpisałem. Jak miałbym to przetworzyć, aby wyświetlić listę 10 lub 20 najczęściej używanych poleceń.
linux
command-line
history
nelaaro
źródło
źródło
Odpowiedzi:
Właśnie widziałem ten post na http://linux.byexamples.com/
Zasadniczo używasz prostego skryptu awk o jednym wierszu
Pełne wyjaśnienie można znaleźć pod linkiem powyżej.
Przykład wyjścia umieszczonego na moim komputerze to:
źródło
Polecenie awk wyświetli pierwszy ciąg z ~ / .bash_history (nie pokazuje opcji poleceń ani argumentów), następnie sort sortuje wszystkie wiersze alfabetycznie, następnie „uniq -c” usunie zduplikowane wiersze (twoje wpisane polecenia) i policzy je, i ostatni sort posortuje twoje polecenia według liczby zliczeń zwróconej przez uniq.
źródło
-r
na końcu polecenia, aby posortować je w odwrotnej kolejności i| head -10
ograniczyć liczbę wyników.Możesz użyć
hash
polecenia w swoim terminalu, który przechowuje hash każdego polecenia, którego używasz wraz z liczbą trafień i na podstawie trafień możesz je uporządkować i przetworzyć.Sprawdź ten artykuł, aby uzyskać więcej informacji.
źródło
Aby uzyskać bardziej ogólną odpowiedź, włącz „ rozliczanie procesów ” w systemie. Możesz uzyskać nie tylko częstotliwość użycia, ale także zagregować statystyki procesora, pamięci i operacji we / wy.
źródło
Skrypty w pozostałych odpowiedziach liczą tylko pierwsze polecenie wykonane w każdym wierszu poleceń; nie obejmują poleceń wykonywanych po potokach (tj. „|”). Na przykład, jeśli sama linia była w twojej historii bash:
następnie w zwróconym zestawieniu najczęściej wykonywanych poleceń „sort” i „uniq” oraz drugie „sort” nie byłyby uwzględnione, ponieważ nie były pierwszym tokenem w linii.
Opierając się na odpowiedzi od nelaar, wystarczy najpierw podzielić linie w historii bash na każdej rurze:
źródło
Zabawnym dodatkiem byłby wykres słupkowy zliczeń:
Wynik:
Długie polecenia wyrównają odstępy.
źródło
printf
lubsprintf
zamiastprint
.Użyj,
$ history | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n10
aby uzyskać listę 10 najlepszych poleceń.Przykład:
źródło
Możesz
awk
przekształcić powyższą odpowiedź z @nelaar w ładny skrypt bash:źródło
Cóż, to jest zmodyfikowana wersja polecenia „Неделчо Христов” skopiowana i wklejona tutaj ... jeśli zabezpieczyłeś lub opatrzyłeś datą swoją historię bashów, będziesz miał błędne wyjście
Zrobisz to lepiej, używając tego:
źródło