3、文本处理命令、用户与组命令练习

1.列出当前系统上所有已登录用户的用户名,同一个用户登录,则只显示一次

[root@localhost ~]# who
root     tty1         2016-08-23 06:20
root     pts/0        2016-08-26 05:09 (172.16.16.201)
user1    pts/1        2016-08-26 05:11 (172.16.16.201)
[root@localhost ~]# who | cut -d' ' -f1 | uniq root
user1

2.取出最后登录到当前系统的用户的相关信息

[user1@localhost ~]$ last | head -1
user1    pts/1        172.16.16.201    Fri Aug 26 05:36   still logged in

3.取出当前系统上被用户当做其默认shell最多的那个shell

# 取/etc/passwd中的第7字段排序并计数

[root@localhost ~]# cut -d: -f7 /etc/passwd | sort | uniq -c
      2 /bin/bash
      4 /bin/sh
      1 /bin/sync      
      1 /sbin/halt     
      15 /sbin/nologin      
      1 /sbin/shutdown
      
# 以数值排序

[root@localhost ~]# cut -d: -f7 /etc/passwd | sort | uniq -c | sort -n
      1 /bin/sync
      1 /sbin/halt      
      1 /sbin/shutdown      
      2 /bin/bash      
      4 /bin/sh     
      15 /sbin/nologin
      
# 取最后一行的shell
# 最终结果

[root@localhost ~]# cut -d: -f7 /etc/passwd | sort | uniq -c | sort -n | tail -1 | grep -o [^[:space:]]*$
/sbin/nologin

4.将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中

# 把/etc/passwd文件以冒号分隔各字段以第3字段数值大小排序,取后10行

[root@localhost ~]# sort -n -t: -k3 /etc/passwd | tail
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
user1:x:500:500::/home/user1:/bin/bash
gentoo:x:4001:4001::/home/gentoo:/bin/sh
fedora:x:4002:4002:Fedora Core:/home/fedora:/bin/sh
user2:x:4003:4003::/home/user2:/bin/sh
user3:x:4004:4004::/home/user3:/bin/sh

# 把上述结果通过管道送给命令“tr”变为大写,重定向至/tmp/users.txt即可
# 最终结果

[root@localhost ~]# sort -n -t: -k3 /etc/passwd | tail | tr 'a-z' 'A-Z' > /tmp/maxusers.txt

5.对命令ifconfig的结果切分,取出当前主机的IP地址

# 取出命令“ifconfig”结果中与addr相连的地址

[root@localhost ~]# ifconfig | grep -E -o "addr:[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"
addr:172.16.16.1
addr:127.0.0.1

# 管道送给命令“cut”,取出地址
# 最终结果

[root@localhost ~]# ifconfig | grep -E -o "addr:[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" | cut -d: -f2
172.16.16.1127.0.0.1

6.列出/etc目录下所有以.conf结尾的文件的文件名,并将其名字转换为大写后保存至/tmp/etc.conf中

[root@localhost ~]# ls /etc/*.conf | tr 'a-z' 'A-Z' > /tmp/etc.conf

7.显示/var目录下,一级子目录或文件的总个数

[root@localhost ~]# ls /var | wc -l19

8.取出/etc/group文件中第3个字段数值最小的10个组的名字

# 第3字段按数值排序,取前10行

[root@localhost ~]# sort -t: -k3 -n /etc/group | head
root:x:0:
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
sys:x:3:bin,adm
adm:x:4:adm,daemon
tty:x:5:
disk:x:6:
lp:x:7:daemon
mem:x:8:
kmem:x:9:

# 通过管道送给“cut”,取组名
# 最终结果

[root@localhost ~]# sort -t: -k3 -n /etc/group | head | cut -d: -f1
root
bin
daemon
sys
adm
tty
disk
lp
mem
kmem

9.将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中

[root@localhost ~]# cat /etc/fstab > /tmp/etc.test
[root@localhost ~]# cat /etc/issue >> /tmp/etc.test

10.用户、组管理类命令练习

10.1 创建组distro,其GID为2016

[root@localhost ~]# tail /etc/group
[root@localhost ~]# tail -1 /etc/group
distro:x:2016:

10.2 创建用户mandriva,其ID号为1005;基本组为distro

[root@localhost ~]# useradd -u 1005 -g distro mandriva
[root@localhost ~]# id mandriva
uid=1005(mandriva) gid=2016(distro) groups=2016(distro)

10.3 创建用户mageia,其ID号为1100,家目录为/home/linux

[root@localhost ~]# useradd -u 1100 -d /home/linux mageia
[root@localhost ~]# tail -1 /etc/passwd
mageia:x:1100:1100::/home/linux:/bin/sh

10.4 给用户mageia添加密码,密码为mageedu

[root@localhost ~]# echo "mageedu" | passwd --stdin mageia
Changing password for user mageia.
passwd: all authentication tokens updated successfully.

10.5 删除mandriva,但保留其家目录

直接删除用户mandriva即可,因为默认家目录是保留的。

[root@localhost ~]# userdel mandriva
[root@localhost ~]# ls /home
fedora  gentoo  linux  lost+found  mandriva  user1  user2  user3

10.6 创建用户slackware,其ID号为2002,基本组为distro,附加组为peguin

[root@localhost ~]# useradd -u 2002 -g distro -G peguin slackware
[root@localhost ~]# id slackware
uid=2002(slackware) gid=2016(distro) groups=2016(distro),5001(peguin)

10.7 修改slackware的默认shell为/bin/tcsh

[root@localhost ~]# usermod -s /bin/tcsh slackware
[root@localhost ~]# grep ^slackware /etc/passwd
slackware:x:2002:2016::/home/slackware:/bin/tcsh

10.8 为用户slackware新增附加组admins

[root@localhost ~]# groupadd admins
[root@localhost ~]# usermod -a -G admins slackware
[root@localhost ~]# id slackware
uid=2002(slackware) gid=2016(distro) groups=2016(distro),5001(peguin),5003(admins)

10.9 为slackware添加密码,且要求密码最短使用期限为3天,最长为180天,警告为3天

[root@localhost ~]# echo "slackware" | passwd --stdin slackware
Changing password for user slackware.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# grep ^slackware /etc/shadow | cut -d: -f4-6 
3:180:3

10.10 添加用户openstack,其ID号为3003,基本组为clouds,附加组为peguin和nova

[root@localhost ~]# useradd -u 3003 -g clouds -G peguin openstack
[root@localhost ~]# usermod -a -G nova openstack
[root@localhost ~]# id openstack
uid=3003(openstack) gid=5004(clouds) groups=5004(clouds),5001(peguin),5005(nova)

10.11 添加系统用户mysql,要求其shell为/sbin/nologin

[root@localhost ~]# useradd -r -s /sbin/nologin mysql
[root@localhost ~]# tail -1 /etc/passwd
mysql:x:498:498::/home/mysql:/sbin/nologin

10.12 使用echo命令,非交互式为openstack添加密码

[root@localhost ~]# echo "openstack" | passwd --stdin openstack
Changing password for user openstack.
passwd: all authentication tokens updated successfully.

原创文章,作者:wangzhenyu177,如若转载,请注明出处:http://www.178linux.com/47648

(1)
wangzhenyu177wangzhenyu177
上一篇 2016-09-19 13:47
下一篇 2016-09-19 13:47

相关推荐

  • GPG——另一种加密信息的方式

    GPG ·使用gpg实现对称加密 ·对称加密file文件          gpg -c file          ls file.gpg ·在另一台主机上解密file   &n…

    Linux干货 2016-09-22
  • Shell脚本编程之入门基础(二)if、case的使用

    Shell编程之条件选择和条件判断   一、条件选择(if)与条件判断(case)的对比: if语句:是选择执行,if语句可嵌套。 if条件选择使用格式 单分支 双分支 多分支 if 判断条件;then 条件为真的分支代码 fi if 判断条件; then 条件为真的分支代码 else 条件为假的分支代码 fi if CONDITION1; the…

    Linux干货 2016-08-15
  • N25_第二周博客作业:

    N25_第二周博客作业: 1、linux上的文件管理命令都有哪些,其常用的使用方法及其相关示例演示。 Linux上常见的文件管理类命令有mkdir、touch、cp、mv、rm、stat。 mkdir:创建新目录 SYNOPSIS   mkdir [OPTION]… DIRECTORY… 常用: 1、直接建目录 [root@…

    Linux干货 2016-12-09
  • iptables/netfilter入门到进阶

    一、iptables/netfilter的简介: iptables:规则管理工具;该系统工具有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。防火墙在做信息包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的信息包过滤表中,而这些表集成在 Linux 内核中。在信息包过滤表中,规则被分组放在我们所谓的链(chain)中。而netfi…

    Linux干货 2017-05-03
  • Linux中/etc目录下常用的配置文件及其含义总结

         在linux中有一个很重要的思想就是一切皆文件,也就是说所有的系统参数的配置都是保存在各种各样的配置文件当中的,这点Linux和Windows有很大的差别。      因为Linux中有众多配置文件,学习起来难免会不容易记忆,所以在此把一些常用的配置文件记录下来,做一个归纳总结。根据FHS…

    Linux干货 2017-03-26
  • CentOS 7 安装 mysql-5.7.14

    在centos7上安装 路上遇过各种坑 把在centos7正确安装mysql-5.7.14分享一下 1. CentOs7 默认的数据库为MariaDB,先卸载MariaDB,否则安装mysql,引起冲突 rpm -qa mariadb rpm -e –nodeps mariadb 2. 准备好工作环境 mkdir /application&nbs…

    Linux干货 2017-05-07