REGULAR EXPRESSIONS
正规话表示法的用途在于当使用者需要进行字串的比对时,可以提供多种的比对方式。
对于系统管理员而言,都有很大的机会使用到正规化表示法。
例如你要在很长的log档中找到特定的字串,或者在系统中找到某个字开头的档名等等。
而且正规化表示法可以用于多种伺服器软体上面,使得管理员更方便管理不同的系统。
正规化表示法主要是利用特殊字符,代替在搜寻可以表示多种字元或者字串。
常用的字符如下:
*:表示搜寻零到任意个字元,例如ab*,则a, ab, abb, abbb等都会符合搜寻的结果。
.:表示搜寻单一任意字元,例如ab.,则aba, abb, abc, abd等都会符合搜寻的结果。
[]:表示搜寻单一[]中任意字元,例如a[bc]b,则abb, acb都会符合搜寻结果。
[^]:表示搜寻单一[]以外任意字元,例如a[^bc]b,则adb, aeb, afb等都会符合搜寻结果。
^:表示搜寻以指定字串为开头的字串,例如^abc,则abcd, abcde, abcdef都会符合搜寻结果。
$:表示搜寻以指定字串为结尾的字串,例如abc$,则dabc, deabc, defabc都会符合搜寻结果。
.*:表示搜寻任意个字元,与*不同在于.*至少会含有一个,所以ab.*不会搜寻到a。
\:跳脱字符,若以正规化的保留符号作条件搜寻时,在符号前加上\,将保留符号视为一般字串。
GREP
Grep的用途在于取得指定关键字的那行文字,可用于档案内容,或者命令输出的结果中。
而使用Grep时可以配合正规化表示法,使得搜寻更加的灵活。
Grep指令为 #grep [参数] [关键字] [档案]。
-A:后面接数字,例如A3,表示列出搜寻结果的那行之外,后续三行也列出来。
-B:后面接数字,例如B3,表示列出搜寻结果的那行之外,前面三行也列出来。
-n:搜寻结果于每行开头加上行数。
-v:反向搜寻,列出不包含关键字的结果。
-i:关键字不分大小写。
PIPELINE
Pipeline是将我们目前执行的输出导入到下一个指令的输入,利用|区隔两段指令。
例如要将/etc/passwd中包含root字串的行列出。
则可以输入 #cat /etc/passwd | grep 'root',就可将cat指令的输出结果转为grep指令的输入。
REDIRECTION
当使用者输入一笔指令,这称为标准输入(Standard Input, STDIN),代码为0。
输出的结果分为正确与错误,正确为标准输出标准输出(Standard Output, STDOUT),代码为1。
错误为标准错误输出(Standard Error Output, STDERR),代码为2。
一般执行指令之后的结果都是显示于萤幕上,Redirection可以将结果导向到指定的装置或档案中。
例如我们可以将指令正确的结果显示于萤幕,而将错误的讯息整理成另一个档案方便研究。
利用>与<可以决定要导向的目的。
标准输入可以使用<或者<<导向,<表示以覆写的方式,<<表示以附加的方式。
标准输出可以使用>或者>>导向,>表示以覆写的方式,>>表示以附加的方式。
标准错误输出可以使用2>或者2>>导向,2>表示以覆写的方式,2>>表示以附加的方式。
使用2>/dev/null可以将命令执行后的错误的讯息隐敝掉。
如果要将正确的结果与错误的讯息同时写入同一个档案。
指令后先用>或者>>将正确结果写入档案,在于命令结尾加上 2>&1则可附加上错误讯息。