shell

上一条命令的退出状态保存在变量“$?”中

if [ $? -eq 0 ]; then
    echo "command was successful!"
else
    echo "An error was encountered!"
exit
fi


case语句:
case语句是shell中流控制的第二种方式。

FRUIT=kiwi
case "$FRUIT" in
    apple) echo "apple pie is quite tasty." ;;
    banana) echo "banana pie is quite tasty." ;;
    kiwi) echo "kiwi is very tasty." ;;
esac


循环
while循环:
    

x=0
while [ $x -lt 10 ]
do
    echo $x
    x=`expr $x + 1`
done

在这里需要注意的是:x=`expr $x + 1`是两个反引号。不是单引号

until循环:
    while循环特别适合于当条件为真时执行一系列命令的情况,但有时我们需要执行一系列命令,知道条件为真
下面的while例子可以写成until的例子:

x=0
while [ ! $x -lt 10 ]
do
    echo $x
    x=`expr $x + 1`
done


for和select循环:
    不像while循环当某一条件为假时退出,for和select循环在项的列表上操作

for x in 0 1 2 3 4 5 6 7 8 9
do
    echo $x
done


文本过滤器
head:
    head命令式用来显示一个文件的最开始几行
基本的格式为:
    head -n 5 file
tail:
    tail命令用来显示一个文件的最后几行
基本格式为:
    tail -n 5 file
grep:
    查找单词
基本格式为:
    grep word file
忽略大小写:
    grep -i word file
-v选项:
    大多数时候你使用grep来在文件中搜索某一特定的单词,但是有时你想得到不包含某一特定单词的系列行。
-n选项:
    当grep在某个文件中寻找给定词时,它保留着它检查过的行号记录。你可以通过-n选项在匹配行前面显示行号
-l选项:
    只显示文件名
tr :
    命令的功能
    tr命名是简化了的sed命令。其主要的功能包括:
a. 用一个字符来替换另外一个字符。
b. 删除字符串中的指定子串。
c. 合并字符串中重复串。

2. 常见的命令格式:
tr -c -d -s ["string1_to_translate_from"] ["string2_to_translate_to"] < input-file
-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。
-d 删除字符串1中所有输入字符。
-s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为
   一个字符串。
input-file是转换文件名。虽然可以使用其他格式输入,但这种格式最常用。
指定字符串1或字符串2的内容时,只能使用单字符或字符串范围或列表。
[a-z] a-z内的字符组成的字符串。
[A-Z] A-Z内的字符组成的字符串。
[0-9] 数字串。
\octal 一个三位的八进制数,对应有效的ASCII字符。
[O*n] 表示字符O重复出现指定次数n。因此[O*2]匹配OO的字符串。
CHAR1-CHAR2 从CHAR1 到 CHAR2的所有字符按照ASCII字符的顺序
[CHAR*] in SET2, copies of CHAR until length of SET1
[CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0
[:alnum:] 所有的字母和数字
[:alpha:] 所有字母
[:blank:] 水平制表符,空白等
[:cntrl:] 所有控制字符
[:digit:] 所有的数字
[:graph:] 所有可打印字符,不包括空格
[:lower:] 所有的小写字符
[:print:] 所有可打印字符,包括空格
[:punct:] 所有的标点字符
[:space:] 所有的横向或纵向的空白
[:upper:] 所有大写字母 
tr中特定控制字符的不同表达方式
速记符含义八进制方式
\a Ctrl-G  铃声\007
\b Ctrl-H  退格符\010
\f Ctrl-L  走行换页\014
\n Ctrl-J  新行\012
\r Ctrl-M  回车\015
\t Ctrl-I  tab键\011
\v Ctrl-X  \030

3. 举例说明
a. 合并字符串中重复出现的字符
   tr -s "[\n]" < input.txt    #文件input.txt中的所有重复出现的换行符最多只出现一次。
   echo aaaabbbbccccddddddd | tr -s "[a-z]"    #输出abcd
b. 删除字符串中得字符
   echo helloworld | tr -d "o"  #输出hellwrld
   注意echo helloworld | tr -d "hello"的输出结果是wrd,因此tr是将字符串1的各个字符串单独处理的
c. 字符串的替换
   假设input.txt中内容是a:b:c:d:e,那么运行tr -s "[:]" "[\t]" < input.txt的结果将是a  b  c  d,各个子串间以tab隔开。同样的出现在字符串1和字符串2中的字符都是单个处理的,并不是将之看成是一个整体。
   在vi中也能使用tr命令,但在该命令前要加上要处理的行范围和!,例如1,$!tr -s "[\r]" "[\n]" ($表示最后一行)

文档编辑--sort

功能说明:将文本文件内容加以排序。

语  法:sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]

补充说明:sort可针对文本文件的内容,以行为单位来排序。

参  数:
  -b    忽略每行前面开始出的空格字符。
   -c    检查文件是否已经按照顺序排序。
   -d    排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
   -f    排序时,将小写字母视为大写字母。
   -i    排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
   -m    将几个排序好的文件进行合并。
   -M    将前面3个字母依照月份的缩写进行排序。
   -n    依照数值的大小排序。
   -o<输出文件>    将排序后的结果存入指定的文件。
   -r    以相反的顺序来排序。
   -t<分隔字符>    指定排序时所用的栏位分隔字符。
   +<起始栏位>-<结束栏位>    以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
   --help    显示帮助。
   --version    显示版本信息。

awk和sed命令:
     基本操作:
1,从一个输入文件中读取一行
2,做一个这一行的拷贝
3,对这一行执行脚本
4,到下一行,重复第一步
这两个命令比较重要而且比较复杂,请查看专门的介绍
sed:http://blog.chinaunix.net/u3/114831/showart_2243541.html
awk:http://blog.chinaunix.net/u3/114831/showart_2262910.html

作者: charming2440   发布时间: 2010-09-24