分类: LINUX
2012-03-27 12:29:49
Shell有不同的风格,最常用的包括Bourne Shell(bsh)、Bourne Again Shell(bash)、C Shell(csh)、Korn Shell(ksh)和Perl Shell等。
Shell语言是区分大小写的。“#”表示注释。
I/O重定向,Linux系统中,数据流可分为3类:数据输入、数据输出和错误输出。它们对应的文件描述指针分别为0、1和2。可以使用重定向来改变数据流的流向:
> 文件 :输出结果重定向到文件
&> 文件:输出结果和标准错误输出一起重定向到文件
>> 文件:输出结果追加到文件
2> 文件:标准错误的输出重定向到文件
< 文件:将文件作为标准输入
<< 字符串:从标准输入中读取数据,如直到接收到指定字符串。
管道:将程序的输出结果导入到另一个程序来作为输入数据。如ls | cat。|&将标准错误输出一起送入管道。
前台与后台:前台运行时,Shell要等待命令结束,才能恢复自身的运行;后台运行时,Shell不必等待命令结束,就可执行下一命令。command &启动一个后台进程。
多个命令在同一行可以用分号“;”分隔,命令将依次被执行。如:echo
hello;pwd;ls。“&&”连接两个命令时,前一命令成功才执行后一命令,如ls dir && cd
dir。而“||”连接命令时,前一命令不成功时才执行后一命令,如ls dir/sub || cp sub dir。
通配符:“?”表示任意的单个字符,如a?c可以匹配abc。“*”表示任意长度的任意字符串,如a*d可以匹配
abcd。“[]”表示匹配放在中括号里的字符集中的任意一个字符,如a[bdf]c匹配abc。“{}”匹配大括号中的某个字符串,如
a{bc,ef}d匹配abcd。
引号有三种:
双引号(" "):除了“$”、“"”、“`”和“\”以外的字符都被解释成字符本身。例:echo "$PATH" 输出变量$PATH的值。
单引号(' '):所有特殊字符都不再有特殊意义,都被视为普通字符。例:echo '$PATH' 输出字符串“$PATH”。
反引号(` `):字符串被解释成命令。例:ehco `ls`输出与命令ls一样的字符串。
在脚本文件第1行可以指定使用的shell,例如:#!/bin/bash或#!/bin/tcsh。之后把文件作为可执行程序时,会自动作为指定的脚本语言运行。
运行脚本的方法有三种:
通过chmod u+x scriptfile把文件设置为可执行程序;
使用shell启动命令,bash scriptfile或tcsh scriptfile或sh scriptfile,sh是bash的一个链接;
使用bash内部命令source scriptfile或. scriptfile。