grep文本搜索工具:
grep、 egrep、fgrep

grep --color=auto +搜索字符串+文件

元字符:

^ 行首锚 字符
$ 行尾锚 字符
\< 词首锚字符
\>词尾锚字符
\<danci\>单词锚定
.   匹配任意单个字符
*   匹配此前的字符0到任意次;:a*b  ab aab b

.*  匹配任意长度的任意字符,默认工作在贪婪模式下:尽可能长的匹配符合的字符串

?匹配此前的字符0次或1次;

\{m,n\}  匹配此前的字符至少m次,至多n次;
例子:\{5,\} 至少5次
\{5\} 精确5次
grep --color=auto '\{0,5\}' /root/wangzhen.txt

[]  匹配制定范围内的单个字符

[^]  匹配 制定范围外的单个字符

[^]取定给定范围以外的任意单个字符
[:lower:]取定所有小写字母任意字符
[:upper:]取定所有大写字母任意字符
[:alpha:]取定所有大小写字母任意字符
[:digit:]取定所有数字任意字符
[:alnum:]既有数字也有字母
[:punct:]取定所有标点符号的任意字符

\(\) 可引用此前括号内的内容

例子:
显示/etc/inittab文件中以数字开头并以一个开头数字相同结尾的数字结尾;

grep --color=auto "\(^[[:digit:]]\).*\1$" /etc/inittab

1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

显示/proc/meminfo文件中以不区分大小写的s开头的行

grep --color=auto "^[sS].*" /proc/meminfo
SwapCached:          0 kB
SwapTotal:      522104 kB
SwapFree:       521964 kB
Slab:            23540 kB

显示/etc/passwd中以nologin结尾的行;
grep --color=auto "^.*\<nologin\>$" /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
pcap:x:77:77::/var/arpwatch:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin
avahi:x:70:70:Avahi daemon:/:/sbin/nologin
mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin
smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
avahi-autoipd:x:100:101:avahi-autoipd:/var/lib/avahi-autoipd:/sbin/nologi
oprofile:x:16:16:Special user account to be used by OProfile:/home/oprofile:/sbin/nologin
xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin
gdm:x:42:42::/var/gdm:/sbin/nologin
 grep --color=suto 'wa[anb]g.* zhen/> ' wangzhen.txt
 grep --color=auto '\(l[[:alpha:]]ve\).*1rr' wangzhen.txt
 
 
 显示/etc/inittab里面的以#开头的一个或多个空白字符,后面跟单个或多个非空白字符的行
  grep --color=auto "^#[[:space:]]\{1,\}.\{1,\}" /etc/inittab
# inittab       This file describes how the INIT process should set up
#               the system in a certain run-level.
# Author:       Miquel van Smoorenburg, <>
#               Modified for RHS Linux by Marc Ewing and Donnie Barnes
# Default runlevel. The runlevels used by RHS are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
# System initialization.
# Trap CTRL-ALT-DELETE
# When our UPS tells us power has failed, assume we have a few minutes
# of power left.  Schedule a shutdown for 2 minutes from now.
# This does, of course, assume you have powerd installed and your
# UPS connected and working correctly. 
# If power was restored before the shutdown kicked in, cancel it.
# Run gettys in standar
 

例子:
grep --color =auto wangzhen wangzhen.txt
grep --color =auto wangzhen$ wangzhen.txt
grep --color =auto ^wangzhen wangzhen.txt
grep --color =auto '\<wangzhen' wangzhen.txt
grep --color =auto 'wangzhen\>' wangzhen.txt
grep --color =auto '\<wangzhen\>' wangzhen.txt

grep 用法:

--color= (auto|always)

-v
-i 忽略字母大小写;
-o只显示被模式匹配的本身,而不显示此行;
-r 递归显示
export GREP_color='01'表示grep搜索出的结果显示的字符字体为粗体
-A # after 之后
-B # before 之前
-C # connect 上下文
-E 

vim sed   awk
文本处理工具

扩展正则表达式:
\(\)==()
\{\}=={}

+ 号表示一次或多次

| 表示或者

grep --color -E “(d|D)og”

[root@bogon ~]# grep --color=auto -E "([0-9]{1,3}\.){3}[0-9]{1,3}" /root/Desktop/wangzhen/wangzhen.txt
111.2.323.566
444.333.222.111

标准ip地址正则表达式写法:

第一位:

\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-2][0-9])\.
第二、三位:
([0-9]|[1-9][0-9]|1[0-9][0-9]2[0-5][0-5]){2}\.
第四位:
[1-9]|[1-9][0-9]|1[0-9][0-9]2[0-5][0-5]\>

 

输入输出重定向:

标准输入:键盘keyboard 0

标准输出:显示器monitor 1

标准错误输出:monitor  2

重定向:

输出重定向:> 输出重定向
追加输出重定向:>>
例子:
[root@localhost ~]# date > /root/Desktop/wangzhen/wangzhen.txt
[root@localhost ~]# date >> /root/Desktop/wangzhen/wangzhen.txt
[root@localhost ~]# cat /root/Desktop/wangzhen/wangzhen.txt
Sun Feb  5 00:39:33 PST 2012
Sun Feb  5 00:39:40 PST 2012
拒绝追加输出重定向 set -C
若确实追加输出重定向则:>|
例子:date |> /root/Desktop/wangzhen/wangzhen.txt
若允许追加输出重定向 set +C

整合错误信息重定向:  &>

例子
2>&1 将2错误信息输出在1上;

输入重定向:<

命令执行,结束之后都会有一个退出码!

成功执行:0

获取返回值:

echo $?

管道:把前一个的命令输出当做后一个命令的输入;

command1| command2|command3

例子: ls -al | more

[root@localhost ~]# ifconfig |grep "inet addr"

          inet addr:192.168.0.33  Bcast:192.168.0.255  Mask:255.255.255.0
          inet addr:127.0.0.1  Mask:255.0.0.0

 

tee命令追加输出并指向输出至文件中:
例子:
[root@localhost ~]# ls /var
account  cvs  empty  gdm  local  log   nis  preserve  run    tmp
cache    db   games  lib  lock   mail  opt  racoon    spool  yp
[root@localhost ~]# ls /var | tee /root/Desktop/wangzhen/wangzhen.txt
account
cache
cvs
db
empty

shell:壳

shell的特性:

命令历史;
别名;
管道;
重定向;

交互式的执行命令;

编程环境
   顺序执行;
   选择执行;
   循环执行;
  
  
静态语言;
if
编译,连接

动态语言;包含命令,也称解释性语言(解释器)

if;
  command
运行效率低
便于维护和修改

变量:varibable 可变的

变量就是命名内存空间;

$A  

$(A) 
 
 
bash:

本地变量(局部变量);

环境变量:
export VARIABLE_NAME=value
export VARIABLE_NAME
unset VARIABLE_NAME
变量名称通常是字母数字和下划线,通常以字母和下划线开头;
1尽可能避开系统已引用变量名
2编程风格尽可能一致

 

变量替换:echo $NAME

"":弱引用,变量 替换会进行
':强引用,不会进行变量替换

export  命令用于显示所有环境变量;

printenv 命令也用于显示所有环境变量;

 

位置变量;

特殊变量,$?