1、定义一个对所有用户都生效的命令别名,例如alias =lftps='lftp 172.16.0.1/pub'; [root@bccobbler ~]# echo "alias lftps='lftp 172.16.0.1/pub'" >> /etc/bashrc [root@bccobbler ~]# source /etc/bashrc 2、显示/etc/passwd文件中不以/bin/bash结尾的行; root@bccobbler ~]# grep -v "/bin/bash$" /etc/passwd 3、找出/etc/passwd文件中,包含二位数字或者三位数的行; [root@bccobbler ~]# grep -E "<[0-9]{2,3}>" /etc/passwd mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:997:995:User for polkitd:/:/sbin/nologin tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin dhcpd:x:177:177:DHCP server:/:/sbin/nologin 4、显示/proc/meminfo文件中,以大写或小写S开头的行;至少有三种实现方式; [root@bccobbler ~]# grep -i "^[sS]" /proc/meminfo SwapCached: 0 kB SwapTotal: 2097148 kB SwapFree: 2097148 kB Shmem: 9616 kB Slab: 52400 kB SReclaimable: 24016 kB SUnreclaim: 28384 kB [root@bccobbler ~]# grep "^[sS]" /proc/meminfo SwapCached: 0 kB SwapTotal: 2097148 kB SwapFree: 2097148 kB Shmem: 9616 kB Slab: 52400 kB SReclaimable: 24016 kB SUnreclaim: 28384 kB [root@bccobbler ~]# grep -E "^(s|S)" /proc/meminfo SwapCached: 0 kB SwapTotal: 2097148 kB SwapFree: 2097148 kB Shmem: 9644 kB Slab: 52576 kB SReclaimable: 24020 kB SUnreclaim: 28556 kB 5、使用echo输出一个绝对路径,使用egrep,类似执行dirname /etc/passwd; [root@bccobbler ~]# echo /etc/passwd | egrep -o '^/.+/' /etc/ 6、找出ifconfig中的ip地址。要求结果只显示IP地址。 [root@bccobbler ~]# ifconfig | egrep -o "(([[:digit:]]{1,2}|1[[:digit:]]{2}|2[0-5]{2}).){3}([[:digit:]]{1,2}|1[[:digit:]]{2}|2[0-5]{2})" 192.168.10.7 255.255.255.0 192.168.10.255 127.0.0.1 255.0.0.0 7、vim定制自动缩进四个字符; 编辑/etc/vimrc文件,增加如下行: set ai set ts=4 8、编写脚本,实现自动添加三个用户,并计算这三个用户的uid之和。 [root@bccobbler ~]# more user.sh #! /bin/bash sum=0

for uname in user1 user2 user3; do id $uname &> /dev/null && echo "$uname exists" || useradd $uname uid=$(id -u $uname) sum=$[$sum+$uid] done

echo "uid sum = $sum" [root@bccobbler ~]# sh user.sh user1 exists user2 exists user3 exists uid sum = 15032 9、find用法及常用用法的实例演示 常用用法: find - search for files in a directory hierarchy 常用用法:find path 查找条件 处理动作 查找条件(可组合使用): -name string:根据文件名精确查找,可用glob通配符。 -iname string:不区分大小写的-name。 -regex PATTERN:根据正则查找,匹配范围是整个路径,比如要查找./fubar3,应该用.*bar.或.*b.*3’,而不是f.*r3。 -user USERNAME/UID:查找指定属主的文件。 -group GNAME/GID:查找指定属组的文件。 -uid UID:查找指定属主的文件 -gid GID:查找指定属组的文件。 -nouser:查找没有属主的文件。 -nogroup:查找没有属组的文件。 -type [fdcblps]:根据文件类型查找。 -size [+-]n:根据文件大小查找,可用单位[bcwkMG];+表示大于,-表示小于,不加表示精确匹配(也没那么精确,10M表示9-10M都符合条件) -mtime [+-]days:-表示days内修改过,+表示days前修改过,不加表示正好在days修改过。 -ctime [+-]days:改变时间,+-含义同-mtime。 -atime [+-]days:访问时间,+-含义同-mtime。 -mmin n:n分钟前修改过文件内容, -cmin n:n分钟前文件改变过。 -amin n:n分钟前文件被访问过。 -perm [=-/] MODE:按权限查找,-表示文件权限是MODE超集,/和+表示权限中只要有一位能匹配就符合,不指定任何符号表示精确匹配。 查找条件组合:

-a:与条件 -o:或条件 -not:取反 处理动作

-print:默认动作,打印结果到标准输出。 -ls:以类似ls -l的格式打印每个文件的信息。 -delete:删除文件。 -fls file:类似`-ls,但将结果保存到指定文件中。 -ok COMMAND {};:交互模式执行指定命令,{};是固定写法,表示文件名占位符。 -exec COMMAND {};:非交互模式执行指定命令,{};是固定写法,表示文件名占位符。 常用示例(引用课堂上的练习) 查找/var目录下属主为root,且属组为mail的所有文件或目录:find /var -user root -group mail 查找/usr目录下不属于root, bin或hadoop的所有文件或目录;用两种方法 find /usr -not -user root -not -user bin -not -user hadoop find /usr -not ( -user root -o -user bin -o -user hadoop ) 查找/etc目录下最近一周内其内容修改过,且属主不是root用户也不是hadoop用户的文件或目录:find /etc -mtime 7 -not -user root -not -user hadoop 查找当前系统上没有属主或属组,且最近一周内曾被访问过的文件或目录:find / ( -nouser -o -nogroup ) -atime -7 查找/etc目录下大于1M且类型为普通文件的所有文件: find /etc -size +1M -type f 查找/etc目录下所有用户都没有写权限的文件:find /etc -not -perm +222 -type f 查找/etc目录至少有一类用户没有执行权限的文件:find /etc -not -perm -111 -type f 查找/etc/init.d/目录下,所有用户都有执行权限,且其它用户有写权限的所有文件:find /etc/init.d -perm -113 -type f