1.find命令

  主要用途:主要用来做文件查找。

  使用方法:查找文件的方式可以基于:文件名,文件时间属性,文件的所有者和组,文件权限属性,文件类型属性,文件大小,另外可以指定 查找目录的深度,排除指定子目录,具体使用方法:

  http://www.cnblogs.com/mchina/archive/2012/07/02/2573313.html

  其他:可以通过-exec ,-OK选项对匹配的文件做进一步的处理。-exec选项:对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {} \;,注意{}和\;之间的空格,同时两个{}之间没有空格,-OK: 其主要功能和语法格式与-exec完全相同,唯一的差别是在于该选项更加安全,因为它会在每次执行shell命令之前均予以提示,只有在回答为y的时候, 其后的shell命令才会被继续执行。-exec使用示例,-OK的使用方法类似:

##删除匹配查找的文件
find . -name "*.log" -mtime - -exec rm -f {} \;

  常用find命令总结:

#!/bin/bash

find   .   -size   +1000000c   -print        #查长度大于1Mb的文件
find   -name april*                     # 在当前目录下查找以april开始的文件
find   /home   -mtime   -                 #在/home下查最近两天内改动过的文件
find   ./   -mtime   -   -type f   -exec   ls -l   {} \; # 查询当天修改过的文件
find logs -type f -mtime + -exec   -ok   rm {} \; #删除查找到得文件

2.xargs命令

  主要功能:从输入中构建和执行shell命令

  使用方法:在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现 溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。  find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。xargs命令使用示例:

##在当面目录下查找所有普通文件,并用grep命令在搜索到的文件中查找hostname这个词
find . -type f -print | xargs grep "hostname" ##直接杀掉mysql的进程
pgrep mysql | xargs kill -  

3.sed命令
  主要功能:对输入流进行编辑。
  基本知识:sed 基本语法-sed [-n] 'editing command', sed工作过程:

  • 依次从输入中读取每一行放入到模式空间中;
  • 使用 'editing command'对模式空间中的字符串进行处理;
  • 输出模式空间中处理后的字符串;

  常用选项参数解释

  • -n:不是模式空间的所有处理后的字符串都打印,而是仅仅显示以p指定的行;
  • -e:使用多个 editing command时,必须使用这个选项;
  • -i:将对模式空间字符串的修改,直接写回到输入中相应的行;
  • -f:指定脚本文件。

  sed常用command:

  • a\  新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~比如:nl testfile |sed '2a\United States'
  • c\  取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行! 比如:nl testfile |sed '2,5c\No 2-5 number'
  • d  删除,因为是删除啊,所以 d 后面通常不接任何咚咚                      比如:nl testfile |sed '/west/,/north/d'
  • i\  插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行) 比如:sed '/eastern/i\NEW ENGLAND REGION' testfile
  • p  列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作   比如:nl testfile |sed -n '/south/,/east/p'
  • s  取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!比如:nl testfile |sed -n 's/Hemenway/Jones/gp'

  sed常用示例:http://www.cnblogs.com/mchina/archive/2012/06/30/2570523.html 

4.grep命令

  主要功能:文本过滤,自一个或多个文件中过滤出具有某个字符串的行,或是从标准输入过滤出具有某个字符串的行。

  grep退出状态:

  • 0: 表示成功;
  • 1: 表示在所提供的文件无法找到匹配的pattern;
  • 2: 表示参数中提供的文件不存在。

  grep常用示例:

  http://www.cnblogs.com/mchina/archive/2012/06/29/2570187.html

  使用grep判断一个文件是否包含指定的模式:

 if grep source testfile>/dev/null; then echo match; fi

5.awk命令

  主要功能:awk逐行扫描文件的,从第一行到最后一行,寻找匹配特定模板的行,并在这些行上运行“选择”动作。如果一个模板没有指定动作,这些匹配的行就被显示在屏幕上。如果一个动作没有模板,所有被动作指定的行都被处理。与sed相比,awd具有单独把某些列打印出来的功能,sed不具有这种功能,如果想实现需要借助cut

  使用模板:

  • awk 'pattern' filename   #将匹配模板的行打印出来。
  • awk '{action}' filename #对所有的行执行action,然后打印出来。
  • awk 'pattern {action}' filename #对匹配pattern的行执行aciton动作。

  示例:

  • awk -F: '/Tom Jones/{print $1,$2}' employees2  #这里-F选项后面的字符表示分隔符。
  • awk -F: '{OFS = "?"};  /Tom/{print $1,$2 }' employees2 #在输出时,域字段间的分隔符已经是?(问号)了

对于awk而言,其模式部分将控制这动作部分的输入,只有符合模式条件的记录才可以交由动作部分基础处理,而模式部分不仅可以写成正则表达式(如上面的例子),awk还支持条件表达式。

  • awk '$3 < 4000 {print}' employees  #模式使用条件判断语句

在花括号内,用分号分隔的语句称为动作。如果模式在动作前面,模式将决定什么时候发出动作。动作可以是一个语句或是一组语句。语句之间用分号分隔,也可以用换行符,如:
    pattern { action statement; action statement; etc. } or
    pattern {
        action statement
        action statement
    }

  • awk '$3 < 4000 && /Sally/ {print}' employees
  • awk '$1 ~ /[Bb]ill/' employees      #显示所有第一个域匹配Bill或bill的行。
  • awk '$1 !~ /[Bb]ill/' employees     #显示所有第一个域不匹配Bill或bill的行,其中!~表示不匹配的意思。
  •  awk '$3 == "Ann" { $3 = "Christian"; print}' testfile #找到第三个域等于Ann的记录,然后给该域重新赋值为Christian,之后再打印输出该记录。
  •  awk '/Ann/{$8 += 12; print $8}' testfile #找到包含Ann的记录,并将该条记录的第八个域的值+=12,最后再打印输出。

   总结: awk命令包括模式pattern和动作action两个部分,对匹配模式pattern的行执行action动作。模式匹配可以是正则表达式或者是条件表达式,动作部分可以修改域并格式化打印全部或者指定的域。sed+cut完成的功能可以用awk来实现。

  详细的awk使用示例http://www.cnblogs.com/mchina/archive/2012/06/30/2571308.html

6.cut命令

  主要功能:剪下文本文件里的数据,文本文件可以是字段类型或是字符类型。

  主要选项:

  • -c list:以字符为主,执行剪下操作。
  • -d delim: 和-f选项配合使用,使用delim作为分隔字段的定界符
  • -f list : 以字段为主,作剪下操作。

  使用示例:

  • ifconfig eth0 | sed -n '2p' | cut -d : -f 2 | cut -d ' ' -f 1 #获取eth0的IP地址,主要是以字段执行剪下操作,输出:192.168.91.188
  • ifconfig eth0 | sed -n '2p' | cut -c 21-34 #获取eth0的IP地址,执行以字符为主的剪下操作,输出同上。

7.sort命令

   主要功能:排序输入。

  主要选项:

  • -r:倒置排序的顺序为由大至小。
  • -t char:使用单个字符char作为默认的字段分隔字符,取代默认的空白字符。
  • -u:只有唯一的记录:丢弃所有具有相同键值的记录,只留其中的第一条。
  • -k:定义排序键值字段。

8.tr命令

   主要功能:转换字符,比如将大写转换为小写等。

  命令语法:tr [ options ] source-char-list replace-char-list

  主要选项:

  • -c : 将不在source-char-list中的字符依次转换为replace-char-list中的字符, 比如: echo hello | tr -c o v 输出 vvvvov。
  • -d:删除source-char-list中的字符。比如:echo hello | tr -d l 输出:heo。
  • -s:浓缩重复的字符。 比如:echo hello | tr -s l 输出:helo。

10.read命令

  主要功能:将信息读入一个或多个shell变量中。

  主要选项:

  • -r:读入行时,原始读取,不做任何处理。不将结尾处的反斜杠解释为序行字符。

  示例:

  • 读取姓名和年龄,并输出:
echo "please input name and age";read name age
echo "name is $name and age is $age"
  • 读入passwd文件,并输出user和homedir列:
#!/bin/bash

##IFS定义了将每一行分割成字段的分隔符
while IFS=: read user pass uid gid fullname homedir shell
do
echo "user is $user, and homedir is $homedir"
done < /etc/passwd
  • read从管道中读入的例子,复制整个目录树:
#!/bin/bash

find /home/xuchao -type d -print | #查找所有的目录
sed 's;/home/xuchao;/home/xuchao/bak;' |
while read newdir ###read从管道中读
do
mkdir $newdir
done

11.locate命令

  主要功能:基于数据库的文件查找。locate将文件系统里的所有文件名压缩成数据库,以迅速找到匹配类Shell通配字符模式的文件名,不必实际查找整个庞大的目录结构。 locate *file* 的输出如下。

/home/shell_learn/dos-file
/home/shell_learn/myfile
/home/shell_learn/unix-file

下面介绍两个任务定时命令:

13.at命令

  主要功能:让程序在特定的时间执行。at使用示例如下:

at : < command-file #在下午9点执行
at now < command-file #立刻执行
at now + minutes < command-file #10分钟后执行
at tomorrow < command-file #明早上4点执行
at july < command-file #下个国庆日执行(美国)
at noon + minutes < command-file #在今天中午12::15执行

另外atq可以查询当前的定时任务,atrm删除定时任务。

14.crontab命令

  主要功能:周期性的在特定时间执行指定的程序。
  使用方法:crontab -e 修改定时任务配置文件,定时任务配置文件命令格式如下,前5栏分别用于指定程序的执行时间,依次是:分时年月周, crontab -l 显示当前周期任务。

*  *  *  *  * user-name command to be executed

  使用示例:

#在  月内, 每天的早上  点到  点中,每隔  分钟执行一次 /usr/bin/backup
*/ - * * /usr/bin/backup

 

  

shell学习之常用命令总结的更多相关文章

  1. (转载)shell日志分析常用命令

    shell日志分析常用命令总结 时间:2016-03-09 15:55:29来源:网络 导读:shell日志分析的常用命令,用于日志分析的shell脚本,统计日志中百度蜘蛛的抓取量.抓取最多的页面.抓 ...

  2. 一张图学习vim常用命令

    一张图学习vim常用命令

  3. goland学习-go常用命令使用

    goland学习-go常用命令使用 1.跨平台编译:env GOOS=linux GOARCH=amd64 go build 2.获取go第三方包:go get -u github.com/go-sq ...

  4. hbase shell基础和常用命令详解(转)

    HBase shell的基本用法 hbase提供了一个shell的终端给用户交互.使用命令hbase shell进入命令界面.通过执行 help可以看到命令的帮助信息. 以网上的一个学生成绩表的例子来 ...

  5. hbase shell基础和常用命令详解

    HBase是Google Bigtable的开源实现,它利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为协同服 ...

  6. Redis学习笔记--常用命令

    以下为本人学习Redis的备忘录,记录了大部分常用命令 1.客户端连接redis服务端: ===启动Redis服务端 redis-server /yourpath/redis.conf ===启动Re ...

  7. Linux Shell 与Linux常用命令

    Linux的人际交互分为图形界面方式和命令行方式. Linux本身只是一个操作系统内核,而由X Window图形用户接口为Linux提供图形用户界面功能.可以把X Window理解为一个运行在Linu ...

  8. docker学习笔记(1)概述、原理学习、常用命令

    一.Docker概述 Docker是基于Go语言实现的云开源项目,诞生于2013年初,目前主流的Linux操作系统已支持Docker,如Redhat RHEL6.5/CentOS6.5.Ubuntu ...

  9. Linux_学习_01_常用命令大全

    一.文件目录 1.列出目录 ls -a #显示隐藏文件 -l #显示文件和目录的详细资料 -h -lrt tree #显示文件和目录由根目录开始的树形结构 lstree #显示文件和目录由根目录开始的 ...

随机推荐

  1. Android面试笔试集锦

    前19题为常考题目 1. Android的四大组件是哪些,它们的作用? 答:Activity:Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为保持各 ...

  2. How to get the xpath by clicking an html element

    How to get the xpath by clicking an html element How to get the xpath by clicking an html element

  3. [置顶] jsp中c标签的使用

    jsp中c标签的使用 核心标签库 它是JSTL中的核心库,为日常任务提供通用支持,如显示和设置变量.重复使用一组项目.测试条件和其他操作(如导入和重定向Web内容).Core标签按功能可分为4种类型: ...

  4. 跨浏览器resize事件分析

    resize事件 原生事件分析 window一次resize事件: IE7 触发3次, IE8 触发2次, IE9 触发1次, IE10 触发1次 Chrome 触发1次 FF 触发2次 Opera ...

  5. Google Maps 学习笔记(三)

    1.GPolyline折线对象和GPolygon多边形对象 html标签中必须包含v="urn:schemas-microsoft--com:vml"的命名空间 <html ...

  6. Nice way for strip_tags a like

    I found this code works great as the function strip_tags in php to replace html tags from string and ...

  7. js秒数转换时分秒方法

    今天写一个东西的时候 发现给出的是秒数.实在找不到直接的工具去转换. 就去网上找了个转换方法(有现成的就不写了,以后再简化下代码). function formatSeconds(value) { v ...

  8. 简单的web三层架构系统【第四版】

    上一次写了第三版, 因为之前无意之间看到一段视频,说是把系统中所有的SQL语句都做成存储过程.可以在很大程度上优化系统的SQL执行速度.所以百度了一下细节问题,之后我把所有的SQL语句,都做成了存储过 ...

  9. (Problem 46)Goldbach's other conjecture

    It was proposed by Christian Goldbach that every odd composite number can be written as the sum of a ...

  10. GDI+ 中发生一般性错误(在 OutputStream 中保存 PNG 格式图像时遇到的问题)

    在将图片以 PNG 格式保存至 Response.OutputStream 时,会碰到如下错误: GDI+ 中发生一般性错误. 原因: 在写 PNG 格式的图像时,指针需要在存储的位置来回移动.而 R ...