二 Linux系统文件命令学习指南( 二 )


$ stty quit ^X
在这种情况下,您实际要输入 ^ 符号,而不是 CNTRL 键 。这种改变只在当前窗口中起效 。为了使这种改变永久生效,需要在您的 .bashrc 文件中输入该语句 。
Diff 和 Date 。顾名思义,Diff 比较两个文件 。它返回那些导致文件不同的行,并返回关于如何使文件变得相同的一些含义隐晦的输出:
$ diff test.out test2.out
0a1
> Another test.
在这里我们被告知,需要将 "Another test." 这一行添加到 test.out,以便使它与 test2.out 相似 。第一个字符 "0" 是要在 test.out 中编辑的行号;"a" 表示该行应该被添加到 test.out,以便与 test2.out 的第一行 "1" 相匹配 。如果我们需要更改 test.out,则第二个字符也可以是 "c",而如果我们需要从 test.out 中删除一些内容,则第二个字符是 "d" 。
您可能希望使一个文件与另一个文件相似,以便为某些代码提供补丁 。diff 还经常作为分析工具,用于验证程序或脚本 — 例如 sed 脚本 — 的输出是否是所预期的输出 。
date 命令可用于显示或设置日期 。如果用户具有超级用户权限,则他或她可以通过在以下命令中提供一个数字型字符串来设置日期:
$ date 0101010004
此命令将日期设置为 2004 年 (04) 1 月 1 日 (0101) 凌晨 1 时 (0100) 。
但是,任何用户可以用所需的格式来显示日期 。注意在格式序列之前需要一个加号 " " 。如果没有出现此命令的预期输出,则尝试将它包含在单引号中:
$ date"%H%M%S"
204748
您可以在序列中包含空格,这时您需要使用双引号:
$ date"%H %M %S"
20 47 51
在日期的主页上列有三十多种不同的格式序列,这些序列可以按需要结合起来,以获得您最后的输出格式 。
date 的输出还可以用于脚本中,如:
$ date -d "2 day"
Thu Jan 29 19:02:02 EST 2004
-d 选项指示 date 显示其后字符串中所描述的时间 。在上例中,我们要求显示从现在起(2004 年 1 月 27 日)两天后的日期 。我们也可以要求显示三天前的日期,其命令为:
$ date -d "-3 day"
Sun Jan 25 20:56:59 EST 2004
date 多种功能的另一个示例是能够向其输出附加字符串,为生成唯一的文件名提供了一种便利的方法 。
$ ls -l | cat > $(datels_%d%b%y%H%M.out)
$ ls ls_*.out
ls_04Feb041633.out
在这里,我们将一个长文件列表的输出传送给 cat,它将我们的输出再传送到一个名为 ls_04Feb041609.out 的文件 。注意我们为文件名使用了一个变量,由美元符号 "$" 表示 。依次将 "ls_" 和 ".out" 附加到日期,其格式为月份中的日 (%d)、本地的月份名称缩写 (%b)、年份的最后两位数字 (%y)、小时 (%H) 和分钟 (%M),从而产生此文件名 。
Sort 和 Uniq 。您可以从管道或从命令行所指定的文件对文本文件的行进行 sort 操作 。除非另外指定,sort 对多列输出的第一列进行操作 。在默认情况下,除非使用 -n 选项,数字型的列按字母顺序排序 。
Sort 列可以用两种不同的格式指定 。如果使用 -k 选项,则列的位置从 1 开始进行编号 。您还可以使用POS1 格式,从第一列编号为零开始进行列的编号 。以下两个命令产生相同的输出:
;
$ ls -l *.out | sort5 -7
$ ls -l *.out | sort -k 6,8
-rw-r--r-- 1 bluher users 375 Dec 5 2002 fdisk.out
-rw-r--r-- 1 bluher users 2447 Dec 28 20:15 ls.out
-rw-r--r-- 1 bluher users 590 Jan 4 21:24 greps.out
-rw-r--r-- 1 bluher users 78 Jan 4 21:25 sgrep.out
...
在默认情况下,sort 命令的列分隔符是空格和制表符 。可以使用 -t SEP 选项指定其他分隔符,其中 SEP 是您指定的分隔符号 。sort 的默认顺序是从最低到最高,利用 -r 选项可以将顺序颠倒 。

推荐阅读