我喜欢的 Linux 程序

我喜欢的 Linux 程序

Unix 编程的哲学是 Do One Thing And Do It Well。每个程序的目的都应该很简单明确,不同的程序通过组合就可以完成那些看起来很复杂的工作。以下是一个列表,他们都是我喜欢的 Linux 程序

tldr

查找某个命令的用法时常用的做法是使用 man,但有些时候 man 给出的手册太长太详细了,使用者很难找到命令的某种特定用法。我就经常查看 man 手册不知不觉睡着了。

tldr 就用于解决这类问题,它以简洁的方式提供某个命令最常用的用法。比如想要查看 disown 的用法: tldr disown 即可

apt

我喜欢的不是 apt 本身而是包管理器(package manager)的概念:以一种中心化的方式管理和获取软件

vim

从表象上看,编程是一种密集型的编辑活动。如果你使用常规的文本编辑器,那很大一部分时间要浪费在鼠标和键盘间的来回切换上。Vim 解决了这个问题,作为一种行列编辑器,你可以完全使用快捷键来进行定位,而不是鼠标,双手可以一直放在键盘上。它无处不在,浏览器有 vim 插件,甚至命令行都可以配置 vim 模式。

awk

awk 把输入的文本看成是有行列的表格,并对其进行逐行处理。灵活强大,支持正则表达式,可以声明变量,有条件语句和循环机制以至于你可以把它看成是一个小小的编程语言!

tree

打印目录的树状结构

pstree

打印进程的树状结构,可以很方便看出进程之间的层级关系

cron

执行定时任务,比如隔几天做一次备份,每几个小时执行某个脚本...

ssh

Secure Shell 主要用于登录远程主机, 使用非对称加密算法(一般是 rsa),非常安全(至少在量子计算机获得突破之前)。使用 SSH 做身份验证的话非常方便,第一次设定完成后(把公钥复制到服务器上的特定位置),以后的每一次身份验证都不再需要输入用户名和密码。用 -D 选项,你甚至可以用它做端口转发,这曾经是科学上网的主要方式。

scp

在本地和远程主机之间传送文件,基于 SSH

htop

系统使用者应该对对当前使用机器的资源使用情况有基本了解。htop 实时显示 cpu 和内存的使用情况,支持点按排序,让你清晰的了解是那些进程在消耗系统资源。

curl

灵活强大的网络请求工具,可以用来下载 internet 上的资源, 支持多种协议。

shellcheck

如果你写 shell 脚本的话,shellcheck 会检查脚本的语法和可能的错误并给出提示。官方的介绍很简单: ShellCheck, a static analysis tool for shell scripts

netstat & nmap

如果你需要查看机器上那些端口在运行,使用这些端口的程序是什么,那 netstat 或者 nmap 是不错的选择

duc

duc 是一个磁盘分析工具,它可以告诉你哪些文件夹和文件占用了最多空间,官方的介绍很接地气: Dude, where are my bytes?

想要按照文件大小列出某文件夹下的文件你可能会想到用 ls 命令: ls -lhS, 问题是 ls 并不是 recursive 的,它只会列出该文件夹下的直接文件 (也就是 max-depth 是 1),而且文件夹也被视为文件的一种,这样就造成它的大小并不包含其中内容。

你可能还会想到使用 du, du 虽然是 recursive 的,但它并不会做分析告诉你到底是哪个文件夹或者文件占用了最多的空间。换句话说,du 只是个数据显示工具,并没有分析功能。

youtube-dl

下片必备,懂得都懂