每个开发人员都应该有在终端操作的能力。你不可能总在你要操作的电脑旁边,这时你就得远程登录那台机器。虽然有些图形界面应用可以帮助我们实现远程作业,但是它的速度没有通过终端访问快(毕竟,它只是一些文字交流!)。
不管你是终端用户新手还是有经验的老用户,我肯定你一定喜欢学习新技术和技巧。在这篇文章里面,我将会介绍15个你你可能还未听说过的Unix命令。
注意:在这篇文章中,我将使用方括号来标识任何变量。当你运行命令时,你应该用去掉方括号,用实际的值替换它。例如我们***个例子, man [command] 可以这样用 man cd 或者 man grep。
1. man
我们以一个简单的例子开始。man命令代表“manual”,手册的意思。如果你想了解任何Unix命令,你可以运行下面的命令:
mman [command]
最简单的使用例子是用man来查看man命令自己的使用手册:
man man
man命令本身未必是一个鲜为人知的命令,你能在任何Unix教程中看到它。然而,我想强调它在那些在常规教程中很少见的特殊用法。
如果你需要知道ASCII字符,试试这个:
man ascii
是否曾经对pico-和femto-哪个更小而感到困惑?试试下面的命令来获取有关unit前缀的信息:
man units
有很多这样的手册页面,它们有些真的也很有趣(Tip:试试 man xkill),我让你自己去玩它。同时,我们将继续介绍其它更多的命令。
2. cd -
如果你在一个目录里面工作,突然切换到另外一个目录中去了,有一个方法让你轻松的回到刚才的工作目录。运行下面的命令即可回到刚刚的工作目录:
cd -
3. sudo !!
由XKCD创作的这幅漫画强调了sudo命令在Unix系统中的重要性。sudo 以管理员的权限运行命令,用户也被添加到 sudo用户组。
假设你运行一个没带 sudo 前缀的命令,如果你不想再次输入这个相同的命令,你可以运行下面的命令来运行最近一次运行的命令。
sudo !!
4. mtr
mtr 是一个强大的网络诊断工具。它结合了 traceroute 和 ping 这两个命令的功能
mtr [hostname]
mtr检测运行mtr这台机子与远程主机之间的网络连接,这里有关于mtr的详细说明,列举了mtr的全部扩展命令。
5. [space] command
经常使用终端的用户可能知道他们运行过的每个命令都会记载在日志文件~/.bash_history里面。可以用下面的命令来跳过运行命令是被日志记载:
[space] [command]
6. jot
正如其名所示,jot的为generates some text,包括从数字到字符以及一些乱码。如果你想生成一定范围内的数字,可运行下面的命令:
jot [number_of_numbers] [starting_number]
如果你只提供一个参数,它将会生成从1到这个数字之间的数字。
-r 参数可生成随机数,语法如下:
jot -r [number_of_numbers] [lower_limit] [upper_limit]
-b 参数可重复给定的单词。了解更多参数列表,你可以运行 man jot, 或者看这个文档。
#p#
7. df
一个相对简单的命令,df 代表“disk free”,并显示你的磁盘空闲的空间。
8. pkill
pkill 也就是”process kill”,终止一个运行的进程。当一个应用没反应的时候,这个命令非常有用。语法:
pkill [application_name]
pkiil的一个有趣的使用情况是你可以远程登录别人正在使用的计算机,检查别人在运行的应用,并执行 pkill命令来终止那些进程,而当他们在四周盼望是谁在恶作剧的时候,你装作没什么事发生一样。当然,你应该确认它不是关键应用,并且不会有很大的损失。
9. ddate
Discordian calendar 是一个备用日历,用 1YOLD表示1166BC。ddate 可以显示Discordian date。
10. cal
如果你想查看老的Gregorian日历,使用 cal即可查看当月月份的日历。
这只是默认的显示,. 这个cal手册 列出了不同的可选项参数,可以按不同的样式显示更多的月份。
11. tac
你可能听说过 cat命令,它有一系列用途,包括creating、copying、merging 和 displaying 文本文件。tac 命令可以做同样的工作,但是它是以相反的顺序!瞧一瞧。
12. w
w 命令可以显示当前谁登陆到了你的系统。它列出了用户登陆日志,以及更多的像系统加载和运行的信息。
13. factor
如果你想分解一个数字,不需要其它的工作,仅运行下面的命令即可获得一个数字的质因数分解。
factor [number]
14. yes
在来一个有趣的命令,yes 命令将一个字符串打印很多次。
yes [string]
如果你没有提供一个字符串,它递归打印“y”,直达你停止这个命令。这个函数打印字符的速度太快了,以至于我无法在同一屏模式截取这个命令的输出。如果你正在做一些事情,恰巧有人经过,你可以运行 yes 来迷糊他们,前提是他们对shell编程了解比较少。
注意,如果你要运行这个命令,你应该知道仅有的停止命令的方法:按 CTRL+C/CMD+C 或者关闭终端。
15. nl
nl命令附件了列数到文本。它最适合用于传递其他命令的输出作为参数。另外一个函数的输出使用”|“来作为参数传递。看下面两个例子: