15个名不见经传的Unix命令
每个开发者都需要掌握一定的终端使用能力。对于不可能总是在某台电脑旁边工作的你来说,你需要远程登录这台电脑。虽然图形用户界面可以很轻松的帮你完成这些,但是通常速度都比终端访问要慢(毕竟终端只是一些文字的交流!)。
无论你对于使用终端来说是初学者还是有经验的用户,我敢肯定你都想接触一些新的技巧和窍门。在这篇文章中,我将介绍15个你可能没有听说过的Unix命令。
注意: 在这篇文章中,我将使用方括号表示任意变量。当你实际运行这些命令时,你应该把这些替换成实际的值,同时移除方括号。例如,我们的第一个例子, man [command] 可以用作 man cd 和 man grep。
1. man
让我们以一个简单的命令开始吧。 这个 man 命令表示 “manual” (手册)的意思,例如 文档。如果你想了解任何一个Unix 命令,你可以执行下面的命令:
man [command]
对于这个 man 命令最简单的使用列子,就是查看 man 自身的文档说明:
man man
man 不一定是个鲜为人知的命令,你可以在任何的Unix 终端中找到它。
然而,有些特殊的用法在普通的教程里就可能没有讲过了。
如果你想知道更多关于你的ASCII码的知识,可以试试这个:
man ascii
是否曾经想知道 pico- 和 femto- 哪个比较小? 可以试试获取unit 前缀的信息:
man units
还有很多类似这样的手册,其中有些也非常有趣!(提示: 试试 man xkill)。我将留给你自己去试试了,同时,我们继续讨论其它的命令。
2. cd -
如果你正在某个目录中进行某项工作,突然意外地变成了另一个目录,有一种很简单的方法回到之前的目录。只需要运行下面的代码,就可以回到之前的工作目录了:
cd -
3. sudo !!
上面这个由 XKCD绘制的漫画说明了 sudo 命令在Unix系统中的重要性。*sudo *会以管理员的权限去运行一个命令,你指定的用户会被添加到sudo-ers 组里面。
假设你没有使用sudu 前缀来运行一个命令。如果你不想再次输入相同的命令,你可以使用下面的命令来自动加上sudo 前缀给上一条命令并运行。
sudo !!
4. mtr
mtr 是一个强大的网络诊断工具。它结合了traceroute和ping命令的功能:
mtr [hostname]
mtr 会检查主机(运行这条mtr命令的主机)到远程主机([hotname])之间的网络连接 。这是mtr 命令发送的详细数据内容,全面地解析了这个命令。
5. [space] command
频繁使用终端的用户可能会知道,他们所运行的每一条命令都会记录在一个文件里面 ~/.bash_history。当运行命令时如果不想纪录这个命令,只需要在命令的前面空一格就可以:
[space] [command]
6. jot
jot 顾名思义就是生成一些文本 - 从数字字符到胡言乱语。 如果你想产生某一范围内的数字,可以运行下面的命令:
jot [number_of_numbers] [starting_number]
如果你只提供一个参数,它会产生从1到这个数字参数的值。
这个 -r 选项会产生随机的数字。语法如下:
jot -r [number_of_numbers] [lower_limit] [upper_limit]
这个 -b 选项会重复一个给定值的次数。对于其它的选项,可以运行 man jot 或者查看这篇教程。
7. df
在我们教程中相对简单的命令, df 表示 “disk free”(磁盘空间),会显示你的磁盘可用的剩余空间。
8. pkill
pkill 或者 “ process kill” 终止一个运行中的进程。当一个应用没有响应时,这个命令非常好用。语法如下:
pkill [application_name]
对于这个命令一个有趣或者残忍的用例就是,当你有能力登录进远程某一台有用户正在使用的机器时,可以检查他们正在运行什么程序,然后运行 pkill 命令来终止该应用。当这个用户在向四周查看谁在搞恶作剧的时候记得保持镇定。当然,你要确保它不是一个关键的应用程序或一些可能会丢失的重要工作!
9. ddate
Discordian 日历是另一种格式的日历,1 YOLD 表示 公元前1166年。ddate 命令就是显示这个Discordian 日历。
10. cal
如果你只是想要古老的文字型的日历,只需要输入 cal 来获取好看的,当前月份的日历:
上面只是默认的视图。 cal 的命令手册列举了各种可用选项,可以用不同的方式来展示月份。
11. tac
你可能听说过 cat命令。它有一系列有用的功能,包括 创建,复制,合并和展示文本文件。 而这个tac 命令有同样的功能,只不过是反转过来显示而已!看一下效果:
12.w
w 命令显示了当前有哪个用户登录到了你的系统中。它用列表来展示当前登录的用户,同时显示一些额外的信息,例如系统负载和运行时间:
13. factor
如果你想因式分解某一个数字,不用找其它的。仅仅运行下面的代码:
factor [number]
14. yes
回到一个有趣的命令上, yes 会打印一个字符串很多次。
yes [string]
如果你不提供一个字符串,它递归打印“y”直到你停止命令。这个命令以非常快的速度去打印这个字符串,以至于我无法在命令运行时截取一张终端的运行时图片。如果你在做一些可疑的事情时,刚好有人经过,确保你运行这个命令来混淆他们的视觉(仅限于不了解Shell编程的人).
注意:如果你打算运行这个命令,你应该知道停止这个命令的唯一方法就是 * CTRL+C/CMD+C * 或者关闭这个终端。
15.nl
nl 命令会给文本附上行号。最好是通过使用其他一些命令的输出作为参数。把其它命令的输出当作参数的方法是使用管道 (“|”)。我们来看看两个例子:
还知道其它的吗?
这样,我们就结束了这个你可能没有见过的Unix命令的列表了。这些命令有多少是你已经知道了呢?你是否在日常的工作中使用这些命令?在下面的评论中让我们了解一下吧!!