一、总结本次课程中所涉及命令的使用方法及相关实例展示
1、权限管理相关命令:
(1)修改文件权限:chmod(用户类别:u,g,o,a)
chmod 用户类别=MODE file...(修改某类用户或某些类用户权限)
chmod 用户类别+|-MODE file,...(修改某类用户的某位或某些位权限)
-R : 递归
--reference=/path/to/file ,...(复制某文件的权限)
(实例):创建用户mysql01,设置其家目录及内部的文件,属组及其他用户没有任何访问权限
# useradd mysql01 # chmod -R go= /home/mysql01 # ls -al /home/mysql01 total 28 drwx------ 4 mysql01 mysql01 4096 Sep 1 10:05 . drwxr-xr-x. 5 root root 4096 Sep 1 10:05 .. -rw------- 1 mysql01 mysql01 18 Oct 16 2014 .bash_logout -rw------- 1 mysql01 mysql01 176 Oct 16 2014 .bash_profile -rw------- 1 mysql01 mysql01 124 Oct 16 2014 .bashrc drwx------ 2 mysql01 mysql01 4096 Nov 12 2010 .gnome2 drwx------ 4 mysql01 mysql01 4096 Aug 25 21:08 .mozilla
(2)文件所属关系管理:chown(修改文件属主,默认管理员才能使用)、chgrp(修改文件所属组) chown 用户名(:组名)file,...
chown 用户名(.组名)file,...
-R:递归
--reference=/path/to/file ,...
(实例):改变/home/mysql01及其内部的文件的属主属组均为oracle
# chown -R oracle:oracle /home/mysql01 # ls -al /home/mysql01 total 28 drwx------ 4 oracle oracle 4096 Sep 1 10:05 . drwxr-xr-x. 5 root root 4096 Sep 1 10:05 .. -rw------- 1 oracle oracle 18 Oct 16 2014 .bash_logout -rw------- 1 oracle oracle 176 Oct 16 2014 .bash_profile -rw------- 1 oracle oracle 124 Oct 16 2014 .bashrc drwx------ 2 oracle oracle 4096 Nov 12 2010 .gnome2 drwx------ 4 oracle oracle 4096 Aug 25 21:08 .mozilla
(3)文件遮罩码:umask(默认仅对当前shell有效)
创建文件:666-umask
创建目录:777-umask
文件默认不能具有执行权限,如果算得的结果中有执行权限,则将其权限加1
二、总结基本正则表达式及扩展正则表达式
grep、egrep
1、作用:根据用户指定的“模式(pattern)”逐行去搜索目标文本,打印匹配到的行;
2、模式:由正则表达式的元字符及文本字符所编写的过滤条件
3、元字符:字符不表示其字面意义,而用于通配或控制功能
grep [OPTIONS] PATTERN [FILE...]:
选项:
--color=auto :对匹配到的串做高亮显示;
-o:仅显示能够被模式匹配到的串本行;
-i:忽略字符大小写;
-v:显示模式匹配不到的行
-q:静默模式
-E:使用扩展的正则表示式
基本正则表达式的元字符:
字符匹配:
.:匹配任意单个字符;
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
字符集:
[:space:]:空白字符
[:punct:]:标点符号
[:lower:]:小写字母
[:upper:]: 大写字母
[:alpha:]: 大小写字母
[:digit:]: 数字
[:alnum:]: 数字和大小写字母
次数匹配:(贪婪模式)
*:匹配其前面字符任意次
.*匹配任意长度任意字符
\?:匹配前面的字符0或1次
\+:1或多次
\{m\}:精确匹配m次
\{m,n\}:至少m次,至多n次
\{0,n\}:至多n次
\{m,\}:至少m次
位置锚定:
^:锚定行首,用于模式最左侧
$:锚定行尾,用于模式最右侧
\<,\b:词首锚定,用于表示单词模式的左侧
\>,/b:词尾锚定,用于表示单词模式的右侧
分组:
\(ab\)*:
分组的小括号中的模式匹配到的内容,会在执行过程中被正则表达式引擎记录下来,并保存内置的变量中; 这些变量分别是\1, \2, ...
\1:从左侧起,第一个左括号,以及与之配对的右括号中间的模式所匹配到的内容;
\2:.....
后向引用:使用变量引用前面的分组括号中的模式所匹配到的字符;
扩展表达式的元字符与正则表达式基本相同,主要取消了正则表达式里面的转义符,不同之处如下:
次数匹配:
?:表示0或1次
+:至少1次
{m,n}:至少m次,至多n次
分组:
():\1 \2
或者:
|:或者符号,a|b则表示a或者b
三、显示/etc/passwd文件中以bash结尾的行
# grep ‘\<bash\>$‘ /etc/passwd root:x:0:0:root:/root:/bin/bash cwc:x:500:500:cwc:/home/cwc:/bin/bash oracle:x:3000:3000::/home/database:/bin/bash mysql01:x:3001:3001::/home/mysql01:/bin/bash
四、显示/etc/passwd文件中的两位数或三位数
# egrep --color=auto ‘\<[0-9]{2,3}\>‘ /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 cwc:x:500:500:cwc:/home/cwc:/bin/bash
五、显示`netstat -tan`命令结果中以‘LISTEN’后跟0个、1个或者多个空白字符结尾的行
# netstat -tan | grep --color=auto "LISTEN[[:space:]]\{0,\}$" 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 127.0.0.1:6010 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:38864 0.0.0.0:* LISTEN tcp 0 0 :::22 :::* LISTEN tcp 0 0 ::1:631 :::* LISTEN tcp 0 0 ::1:25 :::* LISTEN tcp 0 0 ::1:6010 :::* LISTEN tcp 0 0 :::36286 :::* LISTEN tcp 0 0 :::111 :::* LISTEN
六、添加用户bash、testbash、basher以及nologin用户(nologin用户的shell为/sbin/nologin);而后找出/etc/passwd文件中用户名与其shell名相同的行
# egrep ‘(\<^[[:alnum:]]+\>).*\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:3002:3002::/home/bash:/bin/bash nologin:x:3005:3005::/home/nologin:/sbin/nologin
七、显示当前系统上root、centos或者user1用户的默认shell和UID (请事先创建这些用户,若不存在)
# egrep ‘^\<root\>|^\<centos\>|^\<user1\>‘ /etc/passwd | cut -d: -f1,3,7 root:0:/bin/bash centos:3006:/bin/bash user1:3007:/bin/bash
八、找出/etc/rc.d/init.d/functions文件中某单词(单词中间可以存在下划线)后面跟着一组小括号的行
[[email protected] ~]# grep ‘[[: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() { 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取出其目录名