是时候扩充你的工具库了。Bash Shell实例中用到了一些不属于 shell 的实用工具,其实用性令人难以想象要是没了它们,该如何使用 shell。
Unix(以及 Linux)的首要理念之一就是小(规模有限)程序能够相互结合来获得惊人的结果。我们并不需要一个无所不能的程序,相反可以使用多个程序,每个程序做好一件事即可。
这也适用于 bash。虽然 bash 的体积越来越大,特性越来越丰富,但它仍不打算大包大揽。虽然有时候单凭 bash 费点事也能搞定,但换作其他命令的话,任务会完成得更加轻松。
ls 命令就是一个例子。不用 ls 也能查看当前目录的内容。输入 echo *
就能显示出其中的文件名。或者还可以更炫一些:使用 bash 的 printf 命令,再加上一些格式化操作等。但这并非 shell 的真正目的,有人已经提供了列表程序(ls)来处理各种文件系统信息。
不只靠 bash 提供更多的文件系统列表特性,在避免额外的特性蔓延(feature creep)压力的同时获得一定程度的独立性,也许这才是更重要的。
“特性蔓延”指在电子设备或软件上添加过多功能的倾向,这种做法并没有令原来的产品变得更好,而是愈加复杂难用,含贬义。
我们介绍一些实用工具是大多数 shell 脚本的重要组成部分(如:grep、sed、awk),我们大部分时间要和它们打交道。如果你的 shell 脚本需要一个待处理文件的列表,可以通过 find 或 grep 来提供,也许还可以用 sed/awk
来解析输入或者格式化 shell 脚本在某个阶段的输出。
换句话说,如果要编写脚本来处理现实世界的问题,那么就得用现实世界中的 bash 用户和程序员所使用的各种工具。
酷客网相关文章:
评论前必须登录!
注册