一、总结本此课程中所涉及命令的使用方法及相关示例展示;
chmod,chgrp,umask,chown,grep,egrep
二、总结基本正则表达式及扩展正则表达式
grep [OPTIONS] PATTERN [FILE...]:
选项:
--color=auto:对匹配到的串做高亮显示;\\可直接--color即为默认颜色
-v:显示模式匹配不到行;
-i: 忽略字符大小写;
-o: 仅显示能够被模式匹配到的串本行;
-q: 静默模式;
-E:使用扩展的正则表达式;
1、基本正则表达式元字符
.:匹配任意单个字符。
*:匹配其前面的字符任意次。
.*:表示任意长度的任意字符。
[]:指定范围内的任意单个字符。
[^]:指定字符之外的其他字符
X\{m,n\}:表示其前面的字符X至少出现m次,至多出现n次。
X\{m\}:表示精确匹配m次。
注意:在基本正则表达式中?前边要加转义字符\才能使用。
^:行首锚定符。
$:行尾锚定符。
\(\):分组引用;
\1:表示第一组括号中的内容;
\2:表示第二组括号中的内容;依次类推。
\w:等价于[0-9A-Za-z]
\<, \b: 词首锚定;用于表示单词的模式的左侧;
\>, \b:词尾锚定;用于表示单词的模式的右侧;
^$: 空白行;
\?:0或1次;
\+:1或多次;
扩展正则表达式的元字符和基本正则表达式的元字符基本相同。下面只介绍其不同之处:
\(\)变为只用()表示。
\{\}变为只用{ }表示。
+:表示匹配其前的字符至少一次。
|:或者的意思。例如a|b表示a或者b都行。
三、显示/etc/passwd文件中以bash结尾的行
[root@localhost ~]# grep --color 'bash$' /etc/passwd root:x:0:0:root:/root:/bin/bash admin:x:500:500:admini:/home/admin:/bin/bash centos:x:200:493::/home/database:/bin/bash base:x:100:502:basee,shanghai,119,120:/home/base:/bin/bash bash:x:501:504::/home/bash:/bin/bash testbash:x:502:505::/home/testbash:/bin/bash basher:x:503:506::/home/basher:/bin/bash
四、显示/etc/passwd文件中的两位数或三位数
[root@localhost ~]# grep --color '\b[[:digit:]]\{2,3\}\b' /etc/passwd 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 dbus:x:81:81:System message bus:/:/sbin/nologin usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin rtkit:x:499:497:RealtimeKit:/proc:/sbin/nologin avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin abrt:x:173:173::/etc/abrt:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin haldaemon:x:68:68:HAL daemon:/:/sbin/nologin gdm:x:42:42::/var/lib/gdm:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin apache:x:48:48:Apache:/var/www:/sbin/nologin saslauth:x:498:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin pulse:x:497:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin admin:x:500:500:admini:/home/admin:/bin/bash centos:x:200:493::/home/database:/bin/bash base:x:100:502:basee,shanghai,119,120:/home/base:/bin/bash bash:x:501:504::/home/bash:/bin/bash testbash:x:502:505::/home/testbash:/bin/bash basher:x:503:506::/home/basher:/bin/bash nologin:x:504:507::/home/nologin:/sbin/nologin
五、显示`netstat -tan`命令结果中以‘LISTEN’后跟0个、1个或者多个空白字符结尾的行
[root@localhost ~]# netstat -tan | grep --color 'LISTEN[[:space:]]*$' tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:42363 0.0.0.0:* LISTEN tcp 0 0 :::55885 :::* LISTEN tcp 0 0 :::111 :::* LISTEN tcp 0 0 :::22 :::* LISTEN tcp 0 0 ::1:631 :::* LISTEN tcp 0 0 ::1:25 :::* LISTEN
六、添加用户bash、testbash、basher以及nologin用户(nologin用户的shell为/sbin/nologin);而后找出/etc/passwd文件中用户名与其shell名相同的行
[root@localhost ~]# grep --color '^\(\b[[:alnum:]]\+\b\).*\1$' /etc/passwd sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt bash:x:501:504::/home/bash:/bin/bash nologin:x:504:507::/home/nologin:/sbin/nologin
七、显示当前系统上root、centos或者user1用户的默认shell和UID (请事先创建这些用户,若不存在)
[root@localhost ~]# cut -d: -f3,7 | egrep --color '^(\<root|centos|user1\>)' /etc/passwd root:x:0:0:root:/root:/bin/bash centos:x:200:493::/home/database:/bin/bash user1:x:505:508::/home/user1:/bin/bash
八、找出/etc/rc.d/init.d/functions文件中某单词(单词中间可以存在下划线)后面跟着一组小括号的行
[root@localhost ~]# grep --color '\<[[:alpha:]_]\+\>()' /etc/rc.d/init.d/functions fstab_decode_str() { checkpid() { __readlink() { __fgrep() { __umount_loop() { __umount_loopback_loop() { __pids_var_run() { __pids_pidof() { daemon() { killproc() { pidfileofproc() { pidofproc() { status() { echo_success() { echo_failure() { echo_passed() { echo_warning() { update_boot_stage() { success() { failure() { passed() { warning() { action() { action_silent() { strstr() { confirm() { get_numeric_dev() { is_ignored_file() { is_true() { is_false() { apply_sysctl() { key_is_random() { find_crypto_mount_point() { init_crypto() {
九、使用echo输出一个路径,而后egrep找出其路径基名;进一步的使用egrep取出其目录名
[root@localhost ~]# echo /var/test/path | egrep --color -o '[^/]+/?$' path [root@localhost ~]# echo /var/test/path | grep --color -o '.*/' /var/test/
十、找出ifconfig命令执行结果中1-255之间的数字
[root@localhost ~]# ifconfig | egrep --color '\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>' eth0 Link encap:Ethernet HWaddr 00:0C:29:C4:46:4D inet addr:10.177.38.83 Bcast:10.177.38.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fec4:464d/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX bytes:4794509 (4.5 MiB) TX bytes:1112794 (1.0 MiB) inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:16 errors:0 dropped:0 overruns:0 frame:0 TX packets:16 errors:0 dropped:0 overruns:0 carrier:0