第三周作业解答

  1. 显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录
ls -d /etc/[^[:alpha:]][[:alpha:]]*
  1. 复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
mkdir /tmp/mytest1;cp -r /etc/p*[^[:digit:]] /tmp/mytest1
  1. 将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中
cat /etc/issue | tr [:lower:] [:upper:] > /tmp/issue.out; cat /tmp/issue.out
  1. 请总结描述用户和组管理类命令的使用方法并完成以下练习:
  2. 创建组distro,其GID为2019;
groupadd distro -g 2019
  1. 创建用户mandriva, 其ID号为1005;基本组为distro;
useradd mandriva -u 1005 -g distro
  1. 创建用户mageia,其ID号为1100,家目录为/home/linux;
useradd mageia -u 1100 -md /home/linux
  1. 给用户mageia添加密码,密码为mageedu,并设置用户密码7天后过期
echo mageedu | passwd --stdin mageia &> /dev/null;chage -M 7 mageia
  1. 删除mandriva,但保留其家目录;
userdel mandriva
  1. 创建用户 slackware,其ID号为2002,基本组为 distro,附加组 peguin;
groupadd peguin;useradd slackware -u 2002 -g distro -G peguin
  1. 修改 slackware 的默认shell为/bin/tcsh;
chsh -s /bin/tcsh slackware
  1. 为用户 slackware 新增附加组admins;
groupadd admins;gpasswd -a slackware admins
  1. 定义一个对所有用户都生效的命令别名,例如:cdnet='cd /etc/sysconfig/network-scripts/'
echo alias cdnet='cd /etc/sysconfig/network-scripts/' >> /etc/bashrc;. /etc/bashrc;
  1. 显示/etc/passwd文件中不以/bin/bash结尾的行
getent passwd | grep -v /bin/bash$
  1. 找出/etc/passwd文件中,包含二位数字或者三位数字的行
getent passwd | grep '[^0-9][0-9]\{2,3\}[^0-9]'
  1. 显示/proc/meminfo文件中以大写或小写S开头的行;三种实现方式
cat /proc/meminfo|grep '^[sS]'
grep '^[sS]' /proc/meminfo
grep -i '^s' /proc/meminfo
grep -e '^s' -e '^S' /proc/meminfo
  1. 使用echo输出一个绝对路径,使用 egrep 取出路径名、类型;执行dirname /etc/passwd的结果;
路径名:echo /dir1/dir2/file.type | egrep -o '^/.*/'
类型:echo /dir1/dir2/file.type | egrep -o '\.[[:alnum:]]+$'
类型不带点:echo /dir1/dir2/file.type | egrep -o '[[:alnum:]]+$'
执行dirname /etc/passwd的结果:/etc
  1. 找出ficonfig中的ip地址,要求结果只显示IP地址
ifconfig ens33|head -2|tail -1|tr -s ' '|cut -d' ' -f3
  1. vim定制自动缩进4个字符 临时生效: 编辑文本时,处于命令模式,输入以下命令后回车
:set indentexpr=4

永久生效: 编辑文本时,输入以下命令后回车

:!echo 'set indentexpr=4' >> ~/.vimrc

或者在未打开任何文本时,处于命令模式,输入以下命令后回车

echo 'set indentexpr=4' >> ~/.vimrc
  1. 编写脚本,实现自动添加三个用户,并计算这三个用户的uid之和
#!/bin/bash
useradd uone -g test
useradd utwo -g test
useradd uthree -g test
getent passwd uone utwo uthree|cut -d':' -f3|paste -sd '+'|bc
  1. find用法以及常见用法的实例演示 find:遍历指定路径实时查找文件; 特点:速度略慢,精确实时,只搜索有读执权限的目录 语法:find [option]... [path] [条件] [处理动作] path:具体目标路径,默认为当前路径(默认递归) 条件:查找标准,可用文件名、大小、类型、 权限等为标准,默认找出指定路径下的所有文件 处理动作:操作动作,默认输出到屏幕 课堂习题:
  2. 查找/var 目录下属主为root,且属组为mail的所有文件
find /var/ -user "root" -group "mail"
  1. 查找/var 目录下不属于root、lp、gdm的所有文件
find /var ! -user "root" -a ! -user "lp" -a ! -user "gdm"
  1. 查找/var 目录下最近一周内其内容修改过,且属主不为root,也不是postfix的文件
find /var -mtime -7 ! -user "root" -a ! -user "postfix"
  1. 查找当前系统上没有属主或属组,且最近一周内曾被访问过的文件
find / -nouser -nogroup -atime -7
  1. 查找/etc 目录下大于1M且类型为普通文件的所有文件
find /etc -size +1M -type f
  1. 查找/etc 目录下所有用户都没有写权限的文件
find /etc ! -perm /222
  1. 查找/etc 目录下至少有一类用户没有执行权限的文件
find /etc ! -perm -111
  1. 查找/etc/init.d 目录下,所有用户都有执行权限,且其他用户有写权限的文件
find /etc/init.d/ -perm -113
  1. 找出 ifconfig ens33 命令结果中本机的IPv4地址
ifconfig ens33|head -2|tr -s ' ' ':'|cut -d ':' -f 3|tail -n1
ifconfig ens33|grep netmask|tr -s ' '|cut -d ' ' -f 3
  1. 查出分区空间使用率的最大百分比值
df|tr -s ' ' '%'|cut -d '%' -f 5|sort -nr|head -1
df|cut -c34-36|tr -d ' '|sort -nr|head -1
  1. 查出用户UID最大值的用户名、UID及shell类型
getent passwd|sort -t: -k3 -nr|head -1|cut -d: -f1,3,7 --output-delimiter='-'
  1. 查出/tmp的权限,以数字方式显示
stat /tmp|head -4|tail -1|tr '/' '('|cut -d'(' -f2
  1. 统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序
netstat -nt|tail -$(echo `netstat -nt|wc -l`-2|bc)|tr -s ' ' ':'|cut -d: -f6|sort|uniq -c|sort -nr
netstat -nt|grep :|tr -s ' ' ':'|cut -d ':' -f 6|sort|uniq -c|sort -nr
  1. 显示三个用户root、mage、wang的UID和默认shell
egrep '^(root|mage|wang)' /etc/passwd|cut -d':' -f3,7
  1. 找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行
egrep '^[[:alpha:]_]+\(' /etc/rc.d/init.d/functions
  1. 使用egrep分别取出/etc/rc.d/init.d/functions的基名、目录名
基名:echo /etc/rc.d/init.d/functions | egrep -o '\<[[:alpha:]]+$'
目录名:echo /etc/rc.d/init.d/functions | egrep -o '^.*/'|egrep -o '[[:alnum:]\.]+/$'|tr -d '/'
或
echo /etc/rc.d/init.d/functions | egrep -o '^.*/'|tr '/' '\r'
路径名:echo /etc/rc.d/init.d/functions | egrep -o '^.*/'
  1. 统计last命令中以root登录的每个主机IP地址登录次数
last|egrep '^root.*\<([0-9]{1,3}\.){3}[0-9]{1,3}\>'|tr -s ' '|cut -d' ' -f3|sort|uniq -c|sort -nr
  1. 利用扩展正则表达式分别表示0-9、10-99、100-199、200-249、250-255
'[0-9]' 或 '[[:digit:]]'
'[1-9][0-9]'
'1[0-9]{2}'
'2[0-4][0-9]'
'25[0-5]'
  1. 显示ifconfig命令结果中所有IPv4地址
ifconfig|grep '\<inet\>'|tr -s ' '|cut -d ' ' -f 3
  1. 将此字符串:welcome to magedu linux中的每个字符去重并排序,重复次数多的排到前面
echo 'welcom to magedu linux'|grep -o .|sort|uniq -c|sort -nr