你最常用的 Linux 终端命令是什么?

你使用的命令可以告诉我们一些关于你的工作,或者也许是你的热情,驱动你在终端上做什么。
228 位读者喜欢这篇文章。
3 warning flags of DevOps metrics

Opensource.com

几周前,我偶然发现了这个 Reddit 帖子,其中有一个简短的 Bash 代码片段,告诉我如何获取我最常用的终端命令列表。

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

细节不是特别重要,但基本上,它获取 history 命令的输出,将其汇总,并告诉你你的前十个命令是什么,以及每个命令的使用时间百分比。你可以很容易地对代码片段进行一些修改,以获得更长的列表,或者稍微更改格式。这是我从我最近刷新的笔记本电脑上得到的。

     1	138  25.0909%   sudo
     2	59   10.7273%   ls
     3	47   8.54545%   cd
     4	20   3.63636%   git
     5	19   3.45455%   grep
     6	13   2.36364%   vi
     7	10   1.81818%   lpstat
     8	9    1.63636%   find
     9	8    1.45455%   ps
    10	8    1.45455%   htop

其中唯一让我惊讶的项目是 lpstat (我最近一直在与打印机配置作斗争)。这些数字不是很大,而且一些细节隐藏在 sudo 后面(很可能其中很多是 dnf 更新)。所以出于好奇,我在我的台式机和我用于不同目的的几个虚拟机上运行了相同的命令,得到了非常不同的结果。

在我的台式机上,我花费更多时间使用 ssh。在虚拟机中,systemctl 和 docker 都进入了列表,并且 vi 升至榜首,因为我花费大量时间编辑配置文件。

你的前十名可能也反映了你的一些情况。你是开发人员吗?高级用户?你经常使用远程系统吗?你最喜欢的文本编辑器是什么?如果你愿意,请在下面的评论中分享你的前十名列表,或者仅仅是最常用的工具。你的列表让你感到惊讶吗?为什么?

标签
User profile image.
Jason 在 2013 年至 2022 年期间是 Opensource.com 的工作人员和红帽员工。此个人资料包含他当时的与工作相关的文章。其他贡献可以在他的个人帐户中找到。

18 条评论

那么用 'man' 来查找 man 手册呢?有这么多选项可以查找!

我认为,最流行的命令是 ''df-mh'' )

我的是 python,然后是 ls

这是我的前十名

1 105 21% git
2 61 12.2% cd
3 56 11.2% ls
4 41 8.2% docker
5 37 7.4% ssh
6 27 5.4% docker-compose
7 21 4.2% dig
8 21 4.2% curl
9 15 3% rm
10 12 2.4% less

这太酷了。如果你想查看 sudo 命令背后的内容,你可以在 history 之后添加一个 sed 命令,就像这样

$ history | sed 's/sudo // -g' | awk

在我登录服务器仅执行一两个命令的情况下,胜出者,以很大的优势,是 “exit”。

我的前 10 名
1 730 23.4425 % git
2 497 15.9602 % ll
3 219 7.03276 % brew
4 169 5.4271 % ssh
5 147 4.72062 % unison
6 138 4.4316 % wc
7 129 4.14258 % cat
8 117 3.75723 % cd
9 107 3.4361 % cargo
10 91 2.92229 % sem

作为用户,pass
作为 root,apt
在这两种情况下,ls 都是第二名。

这是我在工作用的笔记本电脑上得到的结果,如果能与我个人用的台式机进行比较,那就很有意思了。

1 220 22% sudo
2 212 21.2% ssh
3 70 7% ping
4 62 6.2% ls
5 42 4.2% cd
6 28 2.8% vim.tiny
7 24 2.4% scp
8 24 2.4% python3
9 22 2.2% ps
10 20 2% man

这是我的
1 265 26.5% cls (clear 的别名)
2 162 16.2% ssh
3 153 15.3% dig
4 41 4.1% whois
5 27 2.7% cd
6 18 1.8% vim
7 18 1.8% ll
8 15 1.5% sudo
9 14 1.4% VPS (连接到我的服务器的别名)
10 8 0.8% rpm

我用的是 Mac,我试了这个
1 71 14.257% echo
2 29 5.82329% awk
3 14 2.81124% expr
4 14 2.81124% ((
5 12 2.40964% time
6 12 2.40964% sed
7 11 2.20884% grep
8 11 2.20884% clear
9 11 2.20884% cd
10 10 2.00803% curl

我通常编写用于抓取网页、在文件中查找内容以及为你自动执行操作的脚本

这是我的结果。我经常使用 SSH 来访问我内网中的其他主机。

1 198 19.8% ssh
2 97 9.7% ls
3 84 8.4% dnf
4 76 7.6% cd
5 34 3.4% exit
6 33 3.3% mc
7 26 2.6% screen
8 26 2.6% mount
9 25 2.5% ping
10 19 1.9% cat

此外,不同的终端模拟器和 screen 内的终端的历史记录,在使用时间越长,数字差异和偏差会越大。这是因为所有终端会话在启动时都以历史记录文件中的内容开始其历史记录。当你在不同的终端会话中工作时,它们较新的历史记录不会与其他会话共享,因此它们至少会稍微偏离。

我还发现 root 用户和非 root 用户使用情况之间的差异非常具有启发性。上面的示例来自 root 会话,下面的示例来自我自己的用户 ID。
1 466 46.6% task
2 82 8.2% ll
3 58 5.8% mv
4 46 4.6% cd
5 46 4.6% cat
6 44 4.4% ls
7 26 2.6% su
8 25 2.5% exit
9 22 2.2% tar
10 17 1.7% mc

请注意,task 命令是迄今为止最常用的。它是我去年开始使用的命令行任务管理器,而且我显然经常使用它。

哇!真有趣,我学到了一些新东西。Jason,awk 程序真棒。

我以为 “ls” 会是我最常用的命令,但实际上是 “sudo” 紧随其后是 “ssh”。看来我远程操作太多了。:-)

1 224 22.4224% sudo
2 103 10.3103% ssh
3 80 8.00801% ls
4 66 6.60661% cd
5 37 3.7037% exit
6 32 3.2032% dmesg
7 28 2.8028% youtube-dl
8 22 2.2022% bc
9 19 1.9019% while
10 19 1.9019% screenfetch

pacman -Syu
pacman -Sc
pacman -Qqdt

最常用的是 “cd”,但 “history” 也用很多。

“ls” 是最常用的,但 “vi” 和 “ansible-playbook” 紧随其后。我对结果感到惊讶!

你可以使用这个来跳过 sudo 命令并保存以超级用户身份调用的用户,例如 “sudo yum update -y” 将保存 yum 命令而不是 sudo

history | awk '{total+=1;if($2=="sudo"){commands[$3]+=1}else{commands[$2]+=1}} END{for(command in commands){print command " " commands[command] " " commands[command]/total*100}}' | column -t -s " " | sort -k3 -r -n | nl | head -10

1 62 6.2% rsync
2 53 5.3% ds
3 50 5% cd
4 45 4.5% sshl
5 35 3.5% man
6 33 3.3% f
7 32 3.2% zenity
8 29 2.9% vi
9 29 2.9% testati.pl
10 27 2.7% convert

Creative Commons License本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.