
명령줄에서 내가 가장 많이 사용하는 명령이 무엇인지 알고 싶습니다. 명령줄 사용을 개선할 수 있도록 알고 싶습니다. 내가 가장 많이 사용하는 명령이 무엇인지 안다면 해당 명령에 대해 더 자세히 읽고 더 나은 사용 방법을 찾아볼 수 있습니다.
나는 기록이 내가 입력한 모든 이전 명령의 목록을 유지한다는 것을 알고 있습니다. 가장 많이 사용되는 상위 10개 또는 20개의 명령 목록을 보려면 어떻게 처리해야 합니까?
답변1
방금 이 글을 봤는데http://linux.byexamples.com/
기본적으로 간단한 한 줄 awk 스크립트를 사용합니다.
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
전체 설명은 위 링크에서 보실 수 있습니다.
내 컴퓨터의 출력 예는 다음과 같습니다.
1 211 21.1% ls
2 189 18.9% sudo
3 58 5.8% man
4 52 5.2% cd
5 43 4.3% ping
6 40 4% apropos
7 34 3.4% less
8 22 2.2% cat
9 18 1.8% which
10 18 1.8% aspell
답변2
awk '{print $1}' ~/.bash_history | sort | uniq -c | sort -n
awk 명령은 ~/.bash_history에서 첫 번째 문자열을 인쇄합니다(명령 옵션이나 인수는 표시하지 않음). 그런 다음 sort는 모든 줄을 알파벳순으로 정렬한 다음 "uniq -c"는 중복된 줄(입력한 명령)을 제거하고 개수를 계산합니다. 마지막 정렬은 uniq가 반환한 개수에 따라 명령을 정렬합니다.
답변3
hash
터미널에서 명령을 사용할 수 있습니다 . 이 명령은 사용하는 모든 명령의 해시 항목을 적중 수와 함께 유지하고 적중을 기반으로 정렬하고 처리할 수 있습니다.
확인하다이 기사자세한 내용은.
답변4
다른 답변의 스크립트는 각 명령줄에서 실행된 첫 번째 명령만 계산합니다. 파이프(예: ' | ') 다음에 실행되는 명령은 포함되지 않습니다. 예를 들어, 다음 줄 자체가 bash 기록에 있었다면:
awk '{print $1}' ~/.bash_history | sort | uniq -c | sort -n
그런 다음 가장 많이 실행된 명령의 반환된 요약에 'sort' 및 'uniq'와 두 번째 'sort'는 해당 줄의 첫 번째 토큰이 아니기 때문에 포함되지 않습니다.
nelaar의 답변을 바탕으로 먼저 모든 파이프에서 bash 기록의 줄을 분할하는 것으로 충분합니다.
sed 's/|/\n/g' ~/.bash_history | awk '{CMD[$1]++;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