前言

好久没有更新blog了,愈发认清了当年“教授”对我的教导。趁着寒假还没有结束,赶紧水一篇文章。


不像在Windows中(上次看到有人Mac竟然不知道Terminal),在Unix/Linux中,命令行就是生产力。之前我自己配置Arch的时候,光顾着图形界面了,现在回过头来,还是命令行快啊。

举个例子,写程序用什么编辑器,什么C语言用VS(Visual Studio),python用Pycharm的,还有vscode大法。当然,这些IDE(集成开发环境)好是好,从语法知识到项目管理一应俱全。但是其中大部分功能都用不到,一堆插件自己都不知道什么时候装的。甚至还有同学一个学期C语言课上下来,认为只有VS才能运行C语言,还必须要有一堆.??的文件。但事实上,C语言最省事了,随便来个编辑器加个编译器就行,没必要把一堆东西集成吧。这个学期的C语言作业,我都是在字符界面里用vim写,然后用gcc编译的。简单方便,隔壁同学还在问我创建一个新项目要点哪里的时候,我的代码都写了一半了。

但是许多命令行工具都和vim一样,学习成本高,毕竟没有图形界面这么友好,时不时要看看help/man/info之类的。不过呢,倘若一个人真要把VS的角角落落都熟悉,这精力估计能把C语言学得不错了。

还是回到正题,介绍一下最近遇到的不错的小工具。

htop

在进程管理的时候经常要借助top和ps来查看各个进程的运行状态,类似于windows的任务管理器。ps 命令可以一次性给出当前系统中进程状态,但使用此方式得到的信息缺乏时效性,并且,如果需要实时监控进程运行情况,就必须不停地执行 ps 命令,这显然是缺乏效率的。top 命令可以动态地持续监听进程地运行状态,与此同时,该命令还提供了一个交互界面,用户可以根据需要,人性化地定制自己的输出,进而更清楚地了进程的运行状态。

而htop有着更加友好的输出,甚至可以用鼠标点击。htop可以更改配色方案,过滤进程,跟踪进程等等。

GitHub: htop

官网: htop

glances

glance也是一个系统监控工具,用python编写。它的主要功能为(摘录自Linux中国):

  • 可以监控系统上的 15 个之多的指标(包括 Docker 容器)。
  • 灵活的使用模式:单机模式、客户端-服务器模式、通过 SSH 和 Web 模式。
  • 可用于集成的各种 REST API 和 XML-RPC API。
  • 支持将数据轻松导出到不同的服务和数据库。
  • 高度的可配置性和适应不同的需求。
  • 非常全面的文档。

当我使用它的时候,我还以为它也像htop一样可以用鼠标,结果不行,于是以为它是vim风格的,按下了k,结果它问我是否杀死该进程。

虽然glance的功能强大,但还是得先好好学习一下如何使用。

让大家看一下top, htop, glances的对比:

GitHub: glances

官网: An Eye on your system

Bat

正如cat不是指猫咪,bat也不是指蝙蝠(当然也不是球棒之类的)。cat的全拼是concatenate,用于连接文件并打印到标准输出设备上。学C语言的getchar&putchar的时候曾经写过一个类似的脚本,就是把文字输出到stdout流里。简单来说,最常用的就是cat [filename]将一个文件的内容在屏幕上打印出来。就是不像打开编辑器,只是看看里面的内容。当然也可以配合重定向符使用,实现更多的功能。

而bat则在cat的基础上增加了语法高亮、文本对齐、自动分页、git集成,还可以修改主题。bat给我的感觉更像是less或者more这样的文本查看工具,可是它不止是简单的文本查看,还做到了更加友好的输出。

cat, bat, cat+less, 自己写的C程序练习对比:

GitHub: A cat(1) clone with wings.

ranger

Ranger,这是我在nethack里最喜欢玩的一个角色。 –请忽略

有时候,鼠标点来点去太麻烦了,而且查看文件属性也不方便,这是图形界面的文件管理器,在Unix/Linux中我真的很少用。于是就是cd+ls,再加上mkdir, mv, rm,文件管理还不简单,还有find命令,总之比图形界面舒服多了。

而ranger是终端文件管理器。并且是vim风格!还提供文件预览!

效果如下:

ArchWiki: Ranger

GitHub: ranger

ncdu

经典的 Linux 命令 df 和 du 是快速了解硬盘上的内容的方法,它们提供了一个可靠的报告,易于解析和处理。这对脚本和处理来说是很好的,但我们对数百行的原始数据并不总是反应良好。

我的Arch装在这个32G U盘上已经这么久了,前段时间只剩下2G的空间了。之前一直用df命令试图找到可以瘦身的地方,但是效果不佳(也可能是自己太烂了)。当我发现ncdu的时候,我以为它没什么用处,但没想到今天一用,立马查出了一堆已经不用的东西,可用空间重回5Gb,在这里提醒大家垃圾要及时清理!

ncdu用可视化的方法将文件夹和文件按照大小排序,十分方便(也是vim风格):

Github: inofficial fork of “NCurses Disk Usage”

官网: NCurses Disk Usage

Alpine

之前把没用的程序删除,把邮件客户端也给删除了(之前用的是mailspring其实很好,界面美观,功能强大,开源免费)。但是用网页版的outlook打开实在太慢了,而且内容繁杂(看到那个和微软账户登录一模一样的东西就没好感了),于是去archwiki上找了个邮件客户端。

Alpine历史悠久,配置也说不上简单。

参见 Scateu Blog - S.B.推荐使用邮件客户端Alpine

作为一个命令行下的邮件客户端,我认为它的表现十分出色,我需要的功能都有了,而且启动快,只要键盘使用,有许多快捷键。但是我配置Outlook的邮箱配置了好久,这里留个小坑,如果有同学想试一试Alpine,可以自己查一查怎么处理,如果有问题的话可以留言或者直接联系我。

ArchWiki: Alpine

官网: Alpine Email Program

asciinema

先上官方宣传视频(怀疑它是嵌套录制了):

asciinema *[as-kee-nuh-muh]*是一个免费的开源解决方案,用于记录终端会话并在网络上共享它们。

  • 录制简单:在您工作的地方录制 - 在终端中。开始只是运行asciinema rec,完成击中Ctrl-D或键入exit

  • 复制粘贴:每当您在自己的终端中看到想要尝试的命令时,只需暂停播放器并复制粘贴您想要的内容。毕竟只是一个文本!

  • 嵌入:在您的博客文章、项目文档页面或会议演讲幻灯片中轻松嵌入 asciicast 播放器。

大家应该已经注意到之前的演示都是用asciinema做的吧,是不是非常棒?(不是说我的视频啦,是说这个终端录制)

而且偶然发现,asciinema生成的gif用作微信表情包也不错,送大家一只鹦鹉:

parrot

GitHub: asciinema

官网: asciinema

oh-my-zsh

这个就不讲了,大家熟的很,只是觉得网上人人都说ys主题好,要么就是cloud主题,上面每次终端录制采用的都是random的zsh主题,大家完全可以试试看有什么好的主题,然后再做决定,也可以取长补短自己制作自己的theme,到时候别忘了分享给我。

echo $RANDOM_THEME >> path/zshtheme

tips: 这样可以记录自己当前的主题到zshtheme文件中慢慢搜集哦

GitHub: ohmyzsh

官网: Oh My ZSH!


总结

水一篇文章水了一天,难以想象那些春节日更“水文”,平常周更技术贴的公众号是怎么做到的。

今天下大雪,也是年初,送大家新年礼物。

终端字体推荐:

  • 字母: Freemono(gnu-free-fonts)
  • 中文:霞鹜文楷(ttf-lxgw-wenkai)

翻遍了网上的最佳编程字体,结果阴差阳错安装别的东西的时候作为依赖安装了gnu-free-fonts,里面的Freemono字体正和我意,唯一一个符合我的要求的字体:免费开源,字符集大,最重要的是o和0和O分辨清晰并且没有中间的横杠,唯一的缺憾是1和l的分辨在于1的头是斜的。至于霞鹜文楷也是一款不错的开源字体,兼有仿宋和楷体的特点,可读性高。

给大家拜年啦!