UNIX® 工具一直在变化。本文介绍 10 个有用的工具,其中一些是您以前可能不太关注的工具,一些是新工具。
与日常用语一样,UNIX 工具一直在变化。经常会出现新工具,同时老工具常常会改进以适应新的最佳实践。一些工具非常常用,其他工具不太常用。一些工具经久不衰,有些工具完全过时了。为了顺畅地操作 UNIX,您必须了解最新的 “行话”。
表 1 列出了 对话 UNIX 系列中以前讨论过的 11 个重要的软件包。
表 1. 重要的 UNIX 工具
名称 | 用途 |
---|---|
Cygwin | 一种适用于 Windows® 操作系统的与 UNIX 相似的 shell 和构建环境 |
fish | 一种交互性很强的 shell,具有针对命令名、选项和文件名的自动展开和语法彩色标记功能 |
locate | 构建并搜索所有文件的数据库 |
rename | 对大型文件集合进行批量重命名 |
rsync | 高效地本地或远程同步文件和目录 |
Screen | 创建和管理虚拟的持久的控制台 |
Squirrel | 一种跨平台的脚本编程 shell |
tac | 以相反的次序输出输入,首先输出最后一行(tac 的作用与 cat 相反) |
type | 判断一个命令是别名、可执行程序、内置的 shell 还是脚本 |
wget | 使用命令行下载文件 |
zsh | 一种高级的 shell,提供自动补全、高级的操作数重定向和高级替换 |
在这一期中,我们讨论另外 10 个实用程序和应用程序,它们可以扩展或改进现有的更著名的 UNIX 包。它们涉及从通用存档转换器到高速 Web 浏览器的多个领域。
根据您使用的 UNIX 风格不同,有时候必须安装新的软件包。可以从源代码构建它们,如果包管理软件提供等效的二进制包,也可以直接安装,这会节省时间和精力。例如,如果使用 Debian 风格的 Linux®,那么可以使用 apt-get 直接安装本期讨论的许多实用程序。
用 apropos 寻找命令
UNIX 的命令太多了,所以很容易忘记某个实用程序的名称;对于不常使用的工具,尤其可能出现这种情况。如果您正在努力回想一个命令名,那么试试 apropos(或等效的 man -k)。例如,如果您要找一个计算器,那么只需运行 apropos calculator:
$ apropos calculator
bc (1) - An arbitrary precision calculator language
dc (1) - An arbitrary precision calculator
|
bc 和 dc 都是命令行计算器。
每个 UNIX 手册页都有简短的描述,apropos 在描述中搜索指定的关键字。关键字可以是字面值(比如 calculator),也可以是正则表达式(比如 calc*)。如果使用后一种形式,那么一定要把表达式放在引号("")中,以防止 shell 解释特殊字符:
$ apropos "calcu*"
allcm (1) - force the most important Computer-Modern-fonts to be calculated
allec (1) - force the most important Computer-Modern-fonts to be calculated
allneeded (1) - force the calculation of all fonts now needed
bc (1) - An arbitrary precision calculator language
dc (1) - An arbitrary precision calculator
|
在命令行上运行计算
如上所示,dc 是在每个 UNIX 系统上都可以找到的计算器。如果不带参数运行 dc,就会进入交互模式,可以编写和运算 Reverse Polish Notation (RPN) 表达式:
$ dc 5 6 * 10 / p 3 |
但是,可以在命令行上做所有这些工作。指定 -e 选项并提供要运算的表达式。同样,要把表达式放在引号中,以防止 shell 解释它:
$ dc -e "5 6 * 10 /"
3
|
用 pgrep 寻找进程
您可能无数次使用 ps aux | grep ... 寻找进程。这当然是有效的,但是有一种更高效的搜索进程的方法。请试试 pgrep。
例如,以下命令寻找 strike 的所有登录 shell(其中的 strike 是用户名):
$ pgrep -l -u strike zsh
10331 zsh
10966 zsh
|
pgrep 命令提供筛选选项,允许按用户名(上面给出的 -u)、进程组、组等筛选进程。配套的实用程序 pkill 接受 pgrep 的所有选项和一个信号,它把这个信号发送给与给定的条件匹配的所有进程。
例如,命令 pkill -9 -u strike zsh 与 pgrep -u strike zsh | xargs kill -9 等效。
用 pwgen 生成安全密码
UNIX 中每个重要的子系统都需要自己的密码。电子邮件、远程登录和超级用户特权都需要密码,这些密码最好各不相同而且难以通过自动化攻击猜测或推断出来。另外,如果希望开发生成账户的脚本,就需要一个可靠的随机安全密码来源。
pwgen 实用程序是一个用来生成密码的小程序。可以把密码设定为更容易记忆的或更安全的,还可以指定密码是否包含数字、符号、元音和大写字母。
许多 UNIX 系统都有 pwgen。如果没有,也很容易构建它:
$ # As of March 2009, the latest version is 2.06 $ wget http://voxel.dl.sourceforge.net/sourceforge/\ pwgen/pwgen-2.06.tar.gz $ tar xzf pwgen-2.06.tar.gz $ cd pwgen-2.06 $ ./configure && make && sudo make install |
下面是一些使用示例:
- 输出容易记忆的密码集合:
$ pwgen -C ue2Ahnga Soom0Lu0 Hie8aiph gei9mooD eiXeex7N Wid4Ueng taShee3v Ja3shii8 iNg0viSh iegh5ouF ... zoo8Ahzu Iefev0ch MoVu4Pae goh1Ak6m EiJup5ei
- 生成一个安全的密码:
$ pwgen -s -1 oYvy9WWa
- 生成一个安全的密码,其中不包含含糊(即容易混淆的)字符,至少包含一个非字母数字字符:
时间:2009-07-13 15:03 来源:developerWorks 中国 作者:Martin Streicher 原文链接