Linux 在软件支持方面有着良好的记录。 Unix 第 1 版的 man 第 1 节中有大约 60 个命令,其中大多数今天仍然有效。 不过,进步永不止步。 感谢全球对开源的广泛参与,新的命令经常被开发出来。 有时,一个新的命令会流行起来,通常是因为它提供了新的功能,或者提供相同的功能但具有持续的维护。 这里有十个最近被重新发明的旧命令。
1. 使用 cheat 或 tealdeer 替换 man
man 手册功能强大,并且可以很好地完成它的工作。 但是,man 手册在演示如何使用您想要引用的命令时,并不总是最简洁的。 如果您正在寻找更切中要点的东西,请尝试cheat或tealdeer。
2. 使用 ip 替换 ifconfig
ifconfig
命令提供有关您的网络接口的信息,无论它们是物理的还是虚拟的。
$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.1.2.34 netmask 255.255.255.0 broadcast 10.0.1.255
inet6 fe80::f452:f8e1:7f05:7514 prefixlen 64
ether d8:5e:d3:2d:d5:68 txqueuelen 1000 (Ethernet)
[...]
tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1360
inet 10.2.3.45 netmask 255.255.254.0 destination 10.2.14.15
inet6 2620:52:4:1109::100e prefixlen 64 scopeid 0x0<global>
unspec 00-00-00-00-00-00-00-00-[...]0-00 txqueuelen 500 (UNSPEC)
[...]
较新的 ip
命令提供类似的信息
$ ip -4 address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 10.1.2.34/24 brd 10.0.1.255 scope global noprefixroute eth0
4: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
5: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1360 qdisc pfifo_fast state UNKNOWN group default qlen 500
inet 10.2.3.45/23 brd 10.2.15.255 scope global noprefixroute tun0
3. 使用 dnf 替换 yum,使用 apt 替换 apt-get
软件包管理器往往变化缓慢,并且当它们这样做时,它们通常会努力保持向后兼容性。 yum
命令和 apt-get
命令最近都得到了改进。 这些更改通常被别名化或设计为以其旧的和新的语法工作
$ sudo yum install foo
$ sudo dnf install foo
$ sudo apt-get install foo
$ sudo apt install foo
4. 使用 dnf 替换 repoquery
在 dnf
出现之前,有各种各样的 yum
实用程序来帮助用户获取有关其软件包系统配置的报告。 大多数额外的功能都默认包含在 dnf
中。 例如,repoquery
是 dnf
的子命令,它提供所有已安装软件包的列表
$ sudo dnf repoquery
5. 使用 pip 替换 pip
pip
命令是 Python 的软件包管理器。 它没有被替换,但首选的语法已更新。 旧的命令
$ pip install yamllint
新的语法
$ python3 -m pip install yamllint
6. 使用 exa 替换 ls
ls
命令没有被替换。
确切地说,它没有被再次替换。
ls
命令最初是它自己的二进制应用程序,并且仍然可以作为一个应用程序使用。 但是,最终,Bash shell 包含了它自己的 ls
内置命令,默认情况下,该命令会覆盖任何已安装的 ls
命令。
最近,exa
命令被开发出来,根据您的偏好,它可以是一个更好的 ls
。 阅读 Sudeshna Sur 的 exa 命令 文章,然后亲自尝试一下。
7. 使用 dust 或 ncdu 替换 du
du
命令没有任何问题,它报告您的硬盘驱动器上使用了多少磁盘空间。 它很好地完成了它的工作,但公平地说,它非常简单。
如果您正在寻找一些变化,请尝试 ncdu 命令或 dust 命令。
8. 使用 bat 替换 cat
cat 命令,除了被我们大多数人过度使用之外,是一个简单而直接的命令。 它读取任意数量文件的内容,并将其输出到标准输入。
它的输出非常基本,所以如果您正在寻找具有语法高亮和灵活输出选项的东西,请尝试使用 bat 命令。
bat
是否也替换 tac 命令? 不,别担心,至少现在 tac
作为反向输出文件的命令是安全的。(除非,你算上 sed
。)
9. 使用 ss 替换 netstat
netstat
命令在很大程度上已被 ss
命令取代,尽管在列表中的所有命令中,它可能是最具争议的。 ss
命令提供许多相同的功能,但正如 Jose Vicente Nunez 在他的 六个已弃用的命令 文章中所指出的那样,在功能上存在差距和差异。 在完全切换到 ss
之前,请尝试一下,并将其与您现在使用 netstat
的方式进行比较。
10. 使用 fd 替换 find
我使用 find
来定位文件,作为 GNU Parallel 的输入源等等。 我对它非常熟悉,但我必须承认它的语法有点笨拙。 fd
命令旨在改进这一点。 例如,假设您正在寻找一个名为 example
的文件,但您不记得使用什么文件扩展名。 使用 find
,语法可能如下所示
$ find . -name "*example*"
/home/tux/example.adoc
/home/tux/example.sh
使用 fd
,语法是
$ fd example
/home/tux/example.adoc
/home/tux/example.sh
假设您想要使用 grep 命令来搜索结果中包含“zombie apocalypse”的短语。 使用 find
$ find . -name "*example*" -exec grep "zombie apocalypse" {} \;
zombie apocalypse
改用 fd
$ fd txt -x grep zombie
zombie apocalypse
在 Sudeshna Sur 的 fd 文章中了解更多信息,然后亲自尝试一下。
要了解更多关于经典命令的更新,请下载我们的速查表。
5 条评论