shell学习之常用命令总结

时间:2022-09-03 16:21:43

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. &lpar;转载&rpar;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基础和常用命令详解&lpar;转&rpar;

    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&lowbar;学习&lowbar;01&lowbar;常用命令大全

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

随机推荐

  1. SourceTree 免登录跳过初始设置 - 转

    转自:http://www.cnblogs.com/xiofee/p/sourcetree_pass_initialization_setup.html 在SourceTree的配置目录新建(或修改) ...

  2. SDIBT2666——逆波兰表达式求值

    逆波兰表达式求值(栈和队列) Description 从键盘上输入一个逆波兰表达式,用伪码写出其求值程序.规定:逆波兰表达式的长度不超过一行,以@符作为输入结束,操作数之间用空格分隔,操作符只可能有+ ...

  3. Laravel 加载 js css image 文件

    写在前面的话: 1.前提是需要使用blade模板引擎 2.css js image 文件夹建在laravel 的 public 目录下面 3.生成的路径默认都是相对路径 A: 加载css文件 (用下面 ...

  4. Codeforces Round &num;236 &lpar;Div&period; 2&rpar;E&period; Strictly Positive Matrix&lpar;402E&rpar;

    E. Strictly Positive Matrix   You have matrix a of size n × n. Let's number the rows of the matrix f ...

  5. android 蓝牙连接与通讯&lpar;Bluetooth&rpar;

    最近做了一个小项目,关于蓝牙的一个智能硬件.其中涉及到了蓝牙模块的操作.特记下蓝牙模块的操作过程.只记录下关于蓝牙部分的操作,具体业务逻辑不涉及其中.重点是记录下蓝牙的扫描.链接.通讯. 在使用蓝牙模 ...

  6. 教育,创新,提升:Indiegogo和Kickstarter上受中国用户支持的10个众筹项目

    中国的经济正在迅速发展,已成为世界第二大经济体.中国家庭随着经济水平的提高,越来越多父母愿意将自己的子女送到海外留学. 家长们希望自己的子女可以有机会接受国外大学优质的教育, 以便他们将来可以学成归来 ...

  7. Angular:Reactive Form的使用方法和自定义验证器

    本文将介绍Angular(Angular2+)中Reactive Form的有关内容,包括: Reactive Form创建方法 如何使用验证 自定义验证器 下面开始进入正文! Reactive Fo ...

  8. (4&period;22)Microsoft 管理控制台启用 SSL 加密的 SQL Server 实例

    如何通过使用 Microsoft 管理控制台启用 SSL 加密的 SQL Server 实例 关键词:MSSQL加密,sql server加密,sql server客户端与服务器传输内容加密 转自:h ...

  9. 课程设计个人报告——基于ARM实验箱的Android交友软件的设计与实现

    个人贡献 熟悉试验箱各元件功能以及连接组装试验箱 一.实验内容 研究实验箱串口.USB线的调通连接 二.实践步骤 1.打开实验箱,首先了解各元件功能 这个是LTE模块,也叫4G模块,具体的作用是硬件将 ...

  10. JavaScript高级 面向对象(12)--引用类型值类型作为参数传递的特性

    说明(2017-4-2 18:27:11): 1. 作为函数的参数,就是将函数的数据拷贝一份,传递给函数的定义中的参数. 函数foo()在调用的时候,做了两件事: (1)函数在调用的时候,首先需要将参 ...