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.0tee命令追加输出并指向输出至文件中: 例子: [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 命令也用于显示所有环境变量;
位置变量;
特殊变量,$?