9. ls
-----
ls的颜色: ls --color.
dircolors用于产生一些shell命令, 通常我们这样使用它,
eval `dircolors ~/.dir_colors`
注意, 缺省产生的是bash风格的.
如果, 只想显示目录名而不想列出其下面的文件, 试一下下面的命令
cd \
ls -d bi*
以.开头的文件ls一般不会显示, 用 -a 表示 all.
-h 用加单位的方式来显示文件的大小, 如 1.4K 1.5M等.
-S 按大小排序
-t 按时间排序
如何只显示目录呢? 用下面的包含awk的脚本:
#!/bin/sh
if [ $# -eq 0 ]; then
ls -l --color| grep ^d |awk {print $NF}
else
ls $1 -l --color| grep ^d | awk {print $NF}
fi
也可以用perl来实现:
#!/usr/bin/perl
open(LS,"ls -l --color $ARGV[0] |");
$a = 1;
while($a) {
$a=;
next unless $a=~/^d/;
@a=split(/\s+/,$a);
print ($a[8],"\n");
};
close(LS);
10. tr
------
tr是Translate的缩写. 它是标准的Unix风格的命令, 简捷而高效.
它通常放在管道中作一些处理, 如:
ls | tr a-z A-Z (注意, 不可加参数 --color)
它从标准输入中都写到标准输出中去, 并可以作下列操作:
1. 转换, 压缩连续的字符串.
2. 压缩连续的字符串.
3. 删除字符.
4. 删除字符, 压缩连续的字符串.
tr [option]... [set1] [set2]
当set1和set2都被设置, 没加-d. 将set1中的字符set2被替换. 如果
set1中的字符有重复的, 以最后一个为准.
如: tr aaa xyz tr和tr a z是一样的.
最常用是大小写的转换
tr a-z A-Z
-d 删除set1中的字符.
-s 压缩set1中的字符.
-d -s 先删除set1中的字符, 再压缩set2中的字符.
11. Dos和Unix下的纯文本格式
------------------------
二者的区别其实很简单, Dos下一行的结束用\r\n, 而在Unix中仅使用\n.
在convert这个rpm包里有两个命令用于格式的转换:
dos2unix filename
unix2dos filename
这个包里还有下面的命令用于文件编码的转换:
gb2big filename
big2gb filename
12. sort
--------
sort这个命令用于排序. 可以从标准输入中读, 也可以从文件中读如:
sort /etc/passwd
cat /etc/passwd | sort
常用的参数:
sort
-c 检查文件是否已经排好序了
-b 去掉前导空白
-f 忽略大小写
-n 按数字来处理, 但不用科学计数法
-(num)n num
-g 使用科学计数法
-t 分隔符
-r 反向排序
-n 表示忽略几个区(用分隔符隔开的)
+4 表示跳过4个区
如: 将当前目录下的文件按大小排序:
ls -l | sort +4
反向排序
ls -l | sort -r +4