第三周作业解答
- 显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录
ls -d /etc/[^[:alpha:]][[:alpha:]]*
- 复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
mkdir /tmp/mytest1;cp -r /etc/p*[^[:digit:]] /tmp/mytest1
- 将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中
cat /etc/issue | tr [:lower:] [:upper:] > /tmp/issue.out; cat /tmp/issue.out
- 请总结描述用户和组管理类命令的使用方法并完成以下练习:
- 创建组distro,其GID为2019;
groupadd distro -g 2019
- 创建用户mandriva, 其ID号为1005;基本组为distro;
useradd mandriva -u 1005 -g distro
- 创建用户mageia,其ID号为1100,家目录为/home/linux;
useradd mageia -u 1100 -md /home/linux
- 给用户mageia添加密码,密码为mageedu,并设置用户密码7天后过期
echo mageedu | passwd --stdin mageia &> /dev/null;chage -M 7 mageia
- 删除mandriva,但保留其家目录;
userdel mandriva
- 创建用户 slackware,其ID号为2002,基本组为 distro,附加组 peguin;
groupadd peguin;useradd slackware -u 2002 -g distro -G peguin
- 修改 slackware 的默认shell为/bin/tcsh;
chsh -s /bin/tcsh slackware
- 为用户 slackware 新增附加组admins;
groupadd admins;gpasswd -a slackware admins
- 创建组distro,其GID为2019;
- 定义一个对所有用户都生效的命令别名,例如:cdnet='cd /etc/sysconfig/network-scripts/'
echo alias cdnet='cd /etc/sysconfig/network-scripts/' >> /etc/bashrc;. /etc/bashrc;
- 显示/etc/passwd文件中不以/bin/bash结尾的行
getent passwd | grep -v /bin/bash$
- 找出/etc/passwd文件中,包含二位数字或者三位数字的行
getent passwd | grep '[^0-9][0-9]\{2,3\}[^0-9]'
- 显示/proc/meminfo文件中以大写或小写S开头的行;三种实现方式
cat /proc/meminfo|grep '^[sS]' grep '^[sS]' /proc/meminfo grep -i '^s' /proc/meminfo grep -e '^s' -e '^S' /proc/meminfo
- 使用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
- 找出ficonfig中的ip地址,要求结果只显示IP地址
ifconfig ens33|head -2|tail -1|tr -s ' '|cut -d' ' -f3
- vim定制自动缩进4个字符
临时生效:
编辑文本时,处于命令模式,输入以下命令后回车:set indentexpr=4
永久生效:
编辑文本时,输入以下命令后回车:!echo 'set indentexpr=4' >> ~/.vimrc
或者在未打开任何文本时,处于命令模式,输入以下命令后回车
echo 'set indentexpr=4' >> ~/.vimrc
- 编写脚本,实现自动添加三个用户,并计算这三个用户的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
- find用法以及常见用法的实例演示
find:遍历指定路径实时查找文件;
特点:速度略慢,精确实时,只搜索有读执权限的目录
语法:find [option]... [path] [条件] [处理动作]
path:具体目标路径,默认为当前路径(默认递归)
条件:查找标准,可用文件名、大小、类型、
权限等为标准,默认找出指定路径下的所有文件
处理动作:操作动作,默认输出到屏幕
课堂习题:- 查找/var 目录下属主为root,且属组为mail的所有文件
find /var/ -user "root" -group "mail"
- 查找/var 目录下不属于root、lp、gdm的所有文件
find /var ! -user "root" -a ! -user "lp" -a ! -user "gdm"
- 查找/var 目录下最近一周内其内容修改过,且属主不为root,也不是postfix的文件
find /var -mtime -7 ! -user "root" -a ! -user "postfix"
- 查找当前系统上没有属主或属组,且最近一周内曾被访问过的文件
find / -nouser -nogroup -atime -7
- 查找/etc 目录下大于1M且类型为普通文件的所有文件
find /etc -size +1M -type f
- 查找/etc 目录下所有用户都没有写权限的文件
find /etc ! -perm /222
- 查找/etc 目录下至少有一类用户没有执行权限的文件
find /etc ! -perm -111
- 查找/etc/init.d 目录下,所有用户都有执行权限,且其他用户有写权限的文件
find /etc/init.d/ -perm -113
- 查找/var 目录下属主为root,且属组为mail的所有文件
- 找出 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
- 查出分区空间使用率的最大百分比值
df|tr -s ' ' '%'|cut -d '%' -f 5|sort -nr|head -1 df|cut -c34-36|tr -d ' '|sort -nr|head -1
- 查出用户UID最大值的用户名、UID及shell类型
getent passwd|sort -t: -k3 -nr|head -1|cut -d: -f1,3,7 --output-delimiter='-'
- 查出/tmp的权限,以数字方式显示
stat /tmp|head -4|tail -1|tr '/' '('|cut -d'(' -f2
- 统计当前连接本机的每个远程主机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
- 显示三个用户root、mage、wang的UID和默认shell
egrep '^(root|mage|wang)' /etc/passwd|cut -d':' -f3,7
- 找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行
egrep '^[[:alpha:]_]+\(' /etc/rc.d/init.d/functions
- 使用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 '^.*/'
- 统计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
- 利用扩展正则表达式分别表示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]'
- 显示ifconfig命令结果中所有IPv4地址
ifconfig|grep '\<inet\>'|tr -s ' '|cut -d ' ' -f 3
- 将此字符串:welcome to magedu linux中的每个字符去重并排序,重复次数多的排到前面
echo 'welcom to magedu linux'|grep -o .|sort|uniq -c|sort -nr
来源:51CTO
作者:AblyBetter
链接:https://blog.51cto.com/12541364/2469958