linux学习笔记-08shell脚本基础

grep

  • grep命令用于对文本进行搜索,格式为:grep [选项] [文件],搜索某个关键词:"grep 关键词 文本文件"
  • 命令参数
-b将可执行文件(binary)当作文本文件(text)来搜索 -c仅显示找到的次数 -i忽略大小写 -n显示行号 -v反向选择——仅列出没有“关键词”的行。

  • 命令示例
    • 搜索在/etc/passwd中 "/sbin/nologin"出现的行,找出系统中不允许登录的用户
    grep /sbin/nologin /etc/passwd

    • 找出文件"/usr/share/gedit/plugins/snippets/docbook.xml"中所有包含entry的行 并输出到/root/lines:
    grep entry /usr/share/gedit/plugins/snippets/docbook.xml >> /root/lines

find
  • find命令用于查找文件,格式为:find [查找路径] 寻找条件 操作
  • 命令参数
    -name匹配名称 -perm匹配权限(mode为完全匹配,-mode为包含即可) -user匹配所有者 -group匹配所有组 -mtime -n +n匹配修改内容的时间(-n指n天以内,+n指n天以前) -atime -n +n匹配访问文件的时间-n指n天以内,+n指n天以前 -ctime -n +n匹配修改权限的时间-n指n天以内,+n指n天以前 -nouser匹配无所有者的文件 -nogroup匹配无所有组的文件 -newer f1 !f2匹配比文件f1新却比f2旧的文件 --type b/d/c/p/l/f匹配文件类型(块设备、目录、字符设备、管道、链接文件、文件文件) --size匹配文件的大小(+50k查找超过50k的文件,而-50k则代表查找小于50k的文件) -prune忽略某个目录 --exec {} \; 后面可接对搜索到结果进一步处理的命令(下面会有演示)

  • 命令示例
    • 搜索在/etc/中所有以host开头的文件
      find /etc -name "host*" -print

    • 搜索整个系统中所有包含SUID的文件(因SUID的数字表示法是4,而减号表示只要包含即可)
      find / -perm -4000 -print

    • 【linux学习笔记-08shell脚本基础】找出用户linuxprobe的文件并复制到/root/findresults目录,重点是"-exec {} ; ", 其中的{}代表find命令搜索出的文件,记住结尾必须是;
      find / -user linuxprobe -exec cp -arf {} /root/findresults/ \;

    推荐阅读