2016全新Linux+Python高端运维班-Linux grep命令及基本正则表达式

简介:

本周作业内容:

1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
     第一种方式:
         [root@liu /] #chmod -R go=--- /home/tuser1
         [root@liu tuser1] # ls -l /home/tuser1/
         总用量 4
         -rw-------. 1 root root 47 8月  25 00:01 issue
     第二种方式:
         [root@liu /] # rm -rf /home/tuser1/
         [root@liu /] # cp -r /etc/skel/ /home/tuser1
         [root@liu /] # chmod -R g-rwx /home/tuser1/
         [root@liu /] # chmod -R o-rwx /home/tuser1/
         [root@liu /] # ls -l /home/tuser1/
         总用量 4
         -rw-------. 1 root root 47 8月  25 00:12 issue
         [root@liu /] # ls -ld /home/tuser1/
         drwx------. 4 root root 4096 8月  25 00:12  /home/tuser1/


2、编辑/etc/group文件,添加组hadoop。

1
2
3
4
5
6
7
     第一种方式:
         [root@liu /] # echo "hadoop:x:3008:" >> /etc/group
     第二种方式:
         vim  /etc/group
         在最下面添加一行:
         hadoop:x:3009:
         保存退出。


3、手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号;其家目录为/home/hadoop。 

1
2
3
4
5
6
vim  /etc/passwd 
     在最下面添加一行:
     hadoop:x:3008:3008:: /home/hadoop : /bin/bash
     保存退出。
     [root@liu /] # id hadoop
     uid=3008(hadoop) gid=3008(hadoop) 组=3008(hadoop)

    
4、复制/etc/skel目录为/home/hadoop,要求修改hadoop目录的属组和其它用户没有任何访问权限。

1
2
3
4
5
6
7
8
9
10
11
12
  [root@liu /] # cp -r /etc/skel/ /home/hadoop
     [root@liu /] # chmod -R go=--- /home/hadoop
     [root@liu /] # ls -la /home/hadoop
     总用量 32
     drwx------.  4 root root 4096 8月  25 00:33 .
     drwxr-xr-x. 19 root root 4096 8月  25 00:33 ..
     -rw-------.  1 root root   18 8月  25 00:33 .bash_logout
     -rw-------.  1 root root  176 8月  25 00:33 .bash_profile
     -rw-------.  1 root root  124 8月  25 00:33 .bashrc
     drwx------.  2 root root 4096 8月  25 00:33 .gnome2
     -rw-------.  1 root root   47 8月  25 00:33 issue
     drwx------.  4 root root 4096 8月  25 00:33 .mozilla


5、修改/home/hadoop目录及其内部所有文件的属主为hadoop,属组为hadoop。
知识点:
        修改文件的属主:chown
            chown [OPTION]... [OWNER][:[GROUP]] FILE...

                用法:
                    OWNER
                    OWNER:GROUP
                    :GROUP

                    Note: 命令中的冒号可用.替换;

                -R: 递归
            chown [OPTION]... --reference=RFILE FILE...

1
2
3
     [root@liu /] # chown -R hadoop:hadoop /home/hadoop/
     [root@liu /] # id hadoop
     uid=3008(hadoop) gid=3008(hadoop) 组=3008(hadoop)

    
6、显示/proc/meminfo文件中以大写或小写S开头的行;用两种方式;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
     [root@liu /] # grep '^[Ss]' /proc/meminfo
     SwapCached:            0 kB
     SwapTotal:       2097144 kB
     SwapFree:        2097144 kB
     Shmem:              3296 kB
     Slab:              46576 kB
     SReclaimable:      13148 kB
     SUnreclaim:        33428 kB
     [root@liu /] # grep -i "^s" /proc/meminfo
     SwapCached:            0 kB
     SwapTotal:       2097144 kB
     SwapFree:        2097144 kB
     Shmem:              3296 kB
     Slab:              46584 kB
     SReclaimable:      13160 kB
     SUnreclaim:        33424 kB


7、显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户;
知识点:
        grep [OPTIONS] PATTERN [FILE...]

            选项:
                --color=auto: 对匹配到的文本着色显示;
                -v: 显示不能够被pattern匹配到的行;
                -i: 忽略字符大小写;
                -o: 仅显示匹配到的字符串;
                -q: 静默模式,不输出任何信息;
                -A #:after, 后#行
                -B #: before, 前#行
                -C #:context, 前后各#行

                -E:使用ERE;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
     [root@liu /] # grep -v "/sbin/nologin" /etc/passwd | cut -d: -f1
     root
     sync
     shutdown
     halt
     liu
     bash
     basher
     testbash
     centos
     useradd1
     mageia
     slackware
     openstacks
     user1
     user2
     user3
     hadoop


8、显示/etc/passwd文件中其默认shell为/bin/bash的用户;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
     [root@liu /] # grep  "/bin/bash" /etc/passwd | cut -d: -f1
     root
     liu
     bash
     basher
     testbash
     centos
     useradd1
     mageia
     openstacks
     user1
     user2
     user3
     hadoop


9、找出/etc/passwd文件中的一位数或两位数;
知识点:
        基本正则表达式元字符:
            字符匹配:
                .:  匹配任意单个字符;
                []: 匹配指定范围内的任意单个字符
                [^]:匹配指定范围外的任意单个字符
                    [:digit:]、[:lower:]、[:upper:]、[:alpha:]、[:alnum:]、[:punct:]、[:space:]
            
            匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数;
                *:匹配前面的字符任意次;
                    例如: grep "x*y" 
                        abxy
                        xay
                        xxxxxxy

                    贪婪模式
                .*:任意长度的任意字符;
                \?:匹配其前面的字符0或1次;即前面的可有可无;
                \+:匹配其前面的字符至少1次;
                \{m\}:匹配前面的字符m次;
                \{m,n\}:匹配前面的字符至少m次,至多n次;
                    \{0,n\}:匹配前面的字符至多n次;
                    \{m,\}:匹配前面的字符至少m次;

            位置锚定:
                ^:行首锚定;用于模式的最左侧;
                $:行尾锚定;用于模式的最右侧;
                ^PATTERN$: 用于模式匹配整行;
                    ^$: 空行;
                    ^[[:space:]]*$

                \< 或 \b:词首锚定;用于单词模式的左侧;
                \> 或 \b:词尾锚定;用于单词模式的右侧;
                \<PATTERN\>:匹配整个单词;

            分组:
                \(\):将一个或多个字符捆绑在一起,当作一个整体进行处理;
                    \(xy\)*ab

1
     [root@liu /] # grep -E -o "\<[0-9]{1,2}\>" /etc/passwd


10、显示/boot/grub/grub.conf中以至少一个空白字符开头的行;

1
2
3
4
5
6
7
8
     [root@liu /] # grep "^[[:space:]]\+" /boot/grub/grub.conf
             root (hd0,0)
   
           kernel  /vmlinuz-2 .6.32-431.el6.i686 ro 
root=UUID=3fcabd0f-e9fb-4618-918d-c9e004fe6a59 rd_NO_LUKS  
KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 
rd_NO_LVM rd_NO_DM rhgb quiet
             initrd  /initramfs-2 .6.32-431.el6.i686.img


11、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行;

1
2
3
4
5
6
7
8
9
10
11
12
13
     [root@liu /] # grep "^#[[:space:]]\+[^[:space:]]\+" /etc/rc.d/rc.sysinit
     # /etc/rc.d/rc.sysinit - run once at boot time
     # Taken in part from Miquel van Smoorenburg's bcheckrc.
     # Check SELinux status
     # Print a text banner.
     # Only read this once.
     # Initialize hardware
     # Set default affinity
     # Load other user-defined modules
     # Load modules (for backward compatibility with VARs)
     # Configure kernel parameters
     # Set the hostname.
     ...

12、打出netstat -tan命令执行结果中以‘LISTEN’,后或跟空白字符结尾的行;

1
2
3
4
5
6
7
8
9
10
11
12
13
     [root@liu /] # netstat -tan | grep "LISTEN[[:space:]]\+$"
     tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN
     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 0.0.0.0:33661               0.0.0.0:*                   LISTEN
     tcp        0      0 :::36996                    :::*                        LISTEN
     tcp        0      0 :::111                      :::*                        LISTEN
     tcp        0      0 :::22                       :::*                        LISTEN
     tcp        0      0 ::1:631                     :::*                        LISTEN
     tcp        0      0 ::1:25                      :::*                        LISTEN
     或者使用 egrep 命令
     netstat  -tan | egrep  "LISTEN[[:space:]]+$"

13、添加用户bash, testbash, basher, nologin (此一个用户的shell为/sbin/nologin),而后找出当前系统上其用户名和默认shell相同的用户的信息;

1
2
3
4
5
6
7
8
9
10
     [root@liu /] # useradd bash
     [root@liu /] # useradd testbash
     [root@liu /] # useradd basher
     [root@liu /] # useradd nologin -s /sbin/nologin
     [root@liu /] # grep "^\(\<[[:alpha:]]\+\>\).*\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:501:501:: /home/bash : /bin/bash
     nologin:x:504:504:: /home/nologin : /sbin/nologin


本文转自 ljohnmail 51CTO博客,原文链接:http://blog.51cto.com/ljohn/1843661,如需转载请自行联系原作者
相关文章
|
Linux 应用服务中间件 Shell
二、Linux文本处理与文件操作核心命令
熟悉了Linux的基本“行走”后,就该拿起真正的“工具”干活了。用grep这个“放大镜”在文件里搜索内容,用find这个“探测器”在系统中寻找文件,再用tar把东西打包带走。最关键的是要学会使用管道符|,它像一条流水线,能把这些命令串联起来,让简单工具组合出强大的功能,比如 ps -ef | grep 'nginx' 就能快速找出nginx进程。
1190 1
二、Linux文本处理与文件操作核心命令
linux命令—stat
`stat` 是 Linux 系统中用于查看文件或文件系统详细状态信息的命令。相比 `ls -l`,它提供更全面的信息,包括文件大小、权限、所有者、时间戳(最后访问、修改、状态变更时间)、inode 号、设备信息等。其常用选项包括 `-f` 查看文件系统状态、`-t` 以简洁格式输出、`-L` 跟踪符号链接,以及 `-c` 或 `--format` 自定义输出格式。通过这些选项,用户可以灵活获取所需信息,适用于系统调试、权限检查、磁盘管理等场景。
918 137
|
JSON 自然语言处理 Linux
linux命令—tree
tree是一款强大的Linux命令行工具,用于以树状结构递归展示目录和文件,直观呈现层级关系。支持多种功能,如过滤、排序、权限显示及格式化输出等。安装方法因系统而异常用场景包括:基础用法(显示当前或指定目录结构)、核心参数应用(如层级控制-L、隐藏文件显示-a、完整路径输出-f)以及进阶操作(如磁盘空间分析--du、结合grep过滤内容、生成JSON格式列表-J等)。此外,还可生成网站目录结构图并导出为HTML文件。注意事项:使用Tab键补全路径避免错误;超大目录建议限制遍历层数;脚本中推荐禁用统计信息以优化性能。更多详情可查阅手册mantree。
1492 143
linux命令—tree
|
安全 Ubuntu Unix
一、初识 Linux 与基本命令
玩转Linux命令行,就像探索一座新城市。首先要熟悉它的“地图”,也就是/根目录下/etc(放配置)、/home(住家)这些核心区域。然后掌握几个“生存口令”:用ls看周围,cd去别处,mkdir建新房,cp/mv搬东西,再用cat或tail看文件内容。最后,别忘了随时按Tab键,它能帮你自动补全命令和路径,是提高效率的第一神器。
1899 58
|
存储 安全 Linux
Linux卡在emergency mode怎么办?xfs_repair 命令轻松解决
Linux虚拟机遇紧急模式?别慌!多因磁盘挂载失败。本文教你通过日志定位问题,用`xfs_repair`等工具修复文件系统,三步快速恢复。掌握查日志、修磁盘、验重启,轻松应对紧急模式,保障系统稳定运行。
1828 2
|
Unix Linux 程序员
Linux文本搜索工具grep命令使用指南
以上就是对Linux环境下强大工具 `grep` 的基础到进阶功能介绍。它不仅能够执行简单文字查询任务还能够处理复杂文字处理任务,并且支持强大而灵活地正则表达规范来增加查询精度与效率。无论您是程序员、数据分析师还是系统管理员,在日常工作中熟练运用该命令都将极大提升您处理和分析数据效率。
1104 16
|
缓存 监控 Linux
Linux内存问题排查命令详解
Linux服务器卡顿?可能是内存问题。掌握free、vmstat、sar三大命令,快速排查内存使用情况。free查看实时内存,vmstat诊断系统整体性能瓶颈,sar实现长期监控,三者结合,高效定位并解决内存问题。
1225 0
Linux内存问题排查命令详解
|
监控 Linux 网络安全
Linux命令大全:从入门到精通
日常使用的linux命令整理
2061 13
|
Linux 网络安全 数据安全/隐私保护
使用Linux系统的mount命令挂载远程服务器的文件夹。
如此一来,你就完成了一次从你的Linux发车站到远程服务器文件夹的有趣旅行。在这个技术之旅中,你既探索了新地方,也学到了如何桥接不同系统之间的距离。
2348 21
|
Unix Linux
linux命令—cd
`cd` 命令是 Linux/Unix 系统中用于切换工作目录的基础命令。支持相对路径与绝对路径,常用选项如 `-L` 和 `-P` 分别处理符号链接的逻辑与物理路径。实际操作中,可通过 `cd ..` 返回上级目录、`cd ~` 回到家目录,或利用 `cd -` 在最近两个目录间快速切换。结合 Tab 补全和 `pwd` 查看当前路径,能显著提升效率。此外,需注意特殊字符路径的正确引用及脚本中绝对路径的优先使用。