A Practical Guide to Linux Commands, Editors, and Shell Programming
Chapter 03 Command Line Utilities - 命令行工具 2/2
此章主要介绍最基本和最重要的Linux文本模式下的命令行工具, 以下为本章第2部分.
5) 四个更多的命令 Four more utilities
echo date script unix2dos
+ echo = ECHO 显示一行文本 (displays a line of text)
echo是个看起来非常简单的工具: 复制你在命令行输入的文字, 并再次显示在屏幕上. echo是一个很好的学习Shell或其它程序的工具, 如果你想知道星号 * (asterisk)是在Shell下代表什么意思, 输入以下命令试试: echo star: * (冒号与星号之间要有空格)
+ date = DATE 显示时间和日期 (displays the time and date)
+ script = SCRIPT 记录一段时间内的终端输入输出到文件 (make typescript of terminal session)
script工具可以记录整个或部分系统登陆过程, 包含你所输入的命令和系统的执行结果. 使用方法是输入script开始录制, 输入exit结束录制.
+ unix2dos = UNIX to DOS 把Linux文件格式转换成Windows格式 (converts Linux files to Windows format)
dos2unix功能类似但正好相反.
tip: 在Ubuntu下, 使用下列命令安装unix2dos和dos2unix: sudo apt-get install tofrodos (tofrodos = to from dos), 另外, 工具 flip 也有同样的文本转换功能, 具体请看 man flip.
6) 压缩和归档文件 Compressing and archiving files
bzip2 bunzip2 bzcat gzip gunzip zcat compress tar
+ bzip2 = BZIP2 压缩文件 (compresses a file)
bzip2是 redhat 主导开发的非常有效的文件压缩工具, 比同类的工具gzip和compress的压缩效率都要高. 若被压缩的文件中含有重复的内容, 效率会更高. 执行压缩以后, 会在被压缩文件后面添加.bz2的后缀.
+ bunzip2 = BUNZIP2 解压缩文件 (decompress a file)
++ bzcat = BZip2 CATenate 解压缩文件并输出到标准终端 (decompress a file to standard output)
++ bzip2recover = BZIP2 RECOVER 恢复被损坏的bzip2压缩文件 (recovers data from damaged bzip2 files)
+ gzip = Gnu ZIP 压缩文件 (compresses a file)
bzip2是GNU主导开发的文件压缩工具, 它比bzip2的压缩效率要差些, 但比compress要好. 执行压缩以后, 会在被压缩文件后面添加.gz的后缀.
命令工具gzip, gunzip, zcat与bzip2, bunzip2, bzcat的功能和用法都基本一致.
+ compress = COMPRESS 压缩文件 (compresses a file)
相比bzip2和gzip, compress没有前两者强大. 被compress压缩的文件以.Z结尾.
+ tar = Tape ARchive 打包和解包文件 (packs and unpacks files)
tar命令主要是将多个文件打包成一个文件, 或者反过来使用. 一些重要参数的意义如下: -c (create = 创建), -v (verbose = 显示详细内容), -f (write to or read from a file = 写入或读取文件), 例子: 将当前目录下的三个文件 g b d 打包归档成一个名叫all.tar的文件:
$ tar -cvf all.tar g b d
解包all.tar文件:
$ tar -xvf all.tar (-x = extract) (用-t代替-x可以仅仅查看all.tar文件中的文件清单 -t = table)
+ 你可以使用bzip2, compress或gzip来压缩tar档案文件.
使用bzip2压缩的档案文件后缀名是.tar.bz2, 而gzip压缩的是.tz或.tar.gz, 使用compress压缩的自然也就是.tar.Z了.
+ 标准的解压缩.tar.gz文件需要两步, 下面以一个例子来说明这一过程:
解压缩和解包文件make-3.75.tar.gz (可从ftp.gnu.org/pub/gnu/make/make-3.75.tar.gz下载)
$ ls -l mak*
-rw-r–r– 1 imacee imacee 598078 2007-12-21 21:35 make-3.75.tar.gz
$ gunzip mak*
$ ls -l mak*
-rw-r–r– 1 imacee imacee 2263040 2007-12-21 21:35 make-3.75.tar
$ tar -xvf mak*
make-3.75/README
make-3.75/INSTALL
make-3.75/COPYING
…
make-3.75/make.info-7
make-3.75/make.info-8
++在解压tar文件中, 有2点值得注意:
a. 有时候tar文件会包含许多文件, 在使用-x参数直接解包之前, 最好先用-t参数代替-x参数, 来看一下待解包的文件有多少个 (也就是使用tar -tvf 代替 tar -xvf). 若的确包含文件较多, 请先用mkdir命令建立一个新目录, 把tar文件移动到新目录内, 再使用tar -xvf命令解包. 这样做也可以避免解包出来的文件与原有文件混在一起, 也就避免给操作解包文件(如删除)带来困难.
b. tar命令的-x参数解包时会覆盖原有同名文件, 因此上述将待解包的tar文件放入新建目录中也可避免覆盖.
+ 除了标准两步走解压之外, 当然有更加简便和智能化的, 否则就不叫Linux了
++ 使用管道 | (pipe) 让两个命令合二为一
$ gunzip -c make-3.75.tar.gz | tar -xvf - (不要忘记后面还有个”-”)
gunzip后面的-c参数让gunzip把结果通过管道输出, 而不是创建文件.
++ 让tar使用参数-z调用gunzip
$ tar -xzvf make-3.75.tar.gz
是不是有点熟悉, 这是最常用的命令! 请使用参数-j来调用bunzip2.
7) 定位命令位置 Locating commands
which whereis apropos slocate
+ which = WHICH 定位命令的位置 (locate a command)
which工具通过显示全路径来定位一个命令.
因为有时候, 一个命令会有几个版本, 且分别存在不同位置, 它们都是同名的. 当你执行一个命令时, Shell会搜索一个目录清单, 去寻找你所输入的命令名, 且它会运行它所找到的第一个. 这个目录清单叫做搜索路径 (search path). 我们是可以更改搜索路径的.
因此which工具会告诉你, 你所运行的命令是在什么位置, 因为which也是通过与Shell同样的搜索路径的方式来显示一个命令的位置.
你可以用which which来得到which工具的位置在哪.
+ whereis = WHERE IS 定位一个命令的二进制执行文件, 源文件和帮助文件的位置 (locate the binary, source, and manual page files for a command)
如: $ whereis tar
tar: /bin/tar /usr/include/tar.h /usr/share/man/man1/tar.1.gz
+ 有些命令是内置在Shell里面的, 叫做壳内置命令 (Shell builtins) , which 和 whereis 不会寻找并报告壳内置命令. 也就是说whereis 和 which命令可能会提供错误的信息. 比如, echo是一个壳内置命令.
$ whereis echo
echo: /bin/echo /usr/share/man/man1/echo.1.gz /usr/share/man/man3/echo.3ncurses.gz
$ which echo
/bin/echo
而实际上, Shell执行的是内置在它里面的echo命令, 而不是以上所列出的.
在bash下面, 你可以使用type命令来确认某个命令是否为壳内置命令:
type echo
echo is a shell builtin
+ apropos = APROPOS 搜索命令的帮助手册及其描述 (search the man page names and descriptions)
你可以使用apropos搜索任何关键字, 它实际搜索的是一个whatis数据库(由makewhatis工具维护). 本质是说, apropos 命令与 man -k 命令是完全等同的, 显示的结果也完全相同.
whatis = WHAT IS 显示工具描述 (display manual page descriptions)
whatis与apropos类似, 但只有当要查找的命令名完全匹配时, whatis才显示相应的结果. 所以当你知道一个工具的确切名字, 而不知道它的作用时, 可以使用whatis.
+ slocate = Security enhanced LOCATE 搜索文件 (searches for a file)
slocate命令搜索本地的所有文件!
在使用slocate工具之前, 需要使用updatedb工具来建立/更新slocate的数据库. 当然, 你可以设置把每天自动更新此数据库的工作交给cron脚本, 详情可参考man crontab.
8 ) 获取用户和系统信息 Obtaining user and system information
who w finger write mesg
如果你不在Linux系统网络上, 可以忽略以下信息.
+ who = WHO 显示哪些用户已经登陆系统 (show who is logged on)
如果你想知道你登陆在哪个终端和登陆时间, 可以使用whoami 命令.
+ finger = FINGER 查看用户信息 (lookup user information)
基于安全考虑, 系统管理员可能会禁用finger命令.
+ w = W 查看哪些用户已登陆且他们在做什么 (show who is logged on and what they are doing)
相对来说, w和finger的功能较多, who较少.
+ write = WRITE 发送信息给另外一个用户 (send a message to another user)
+ mesg = MESsaGe 拒绝或接受来自别的用户的信息 (denies or accepts messages)
其它 Others
verbose = 详述 (许多命令中 -v 参数就代表verbose, 意思是详细显示工作状态, 一般在命令执行完以后显示)
Leave a reply