zoukankan      html  css  js  c++  java
  • shell初步了解

    第一部分.正则表达式说明

     文件的时间信息 (修改时间)
     atime   访问时间
     mtime   修改时间
     ctime   改变时间(文件属性)
     ​
     date
          find -mtime 按天查找数据
               -mmin  按分钟查找
    

    实例说明:

     [root@localhost opt]# find /opt  -type f -mtime +1  ###从现在开始算,1天以前的所有文件
     [root@localhost opt]# find /opt  -type f -mtime -1  ###昨天到现在已经创建的文件
     /opt/world.sql
     /opt/haha.cnf
     /opt/my.cnf.bak
     /opt/123.txt
     [root@localhost opt]# find /opt/ -type f -mtime 1   ### 昨天一天创建的所有文件
     /opt/world.sql
     /opt/haha.cnf
     /opt/my.cnf.bak
     [root@localhost opt]# find /opt/ -type f -mtime 0   ###昨天现在到今天现在已经创建的文件
     /opt/123.txt

       有疑问???????????????????????????????????????????

    查找并批量删除

     
     利用find找出文件之后, 进行批量处理:
        1) 批量删除
        find /oldboy_dir/ -type f -mtime -1|xargs rm -f
    

    批量删除

     [root@localhost opt]# find /opt/ -type f -mtime -1|xargs   ###通过xargs重新排列成一行
     /opt/test/asd.txt /opt/123.txt
     [root@localhost opt]# find /opt/ -type f -mtime -1|xargs rm -rf
     [root@localhost opt]# find /opt/ -type f -mtime -1
    

    标准输入输出

     [root@localhost test]# xargs -n5 <test01.txt
     01 02 03 04 05
     06 07 08 09 10
     [root@localhost test]# xargs -n10 <test01.txt
     01 02 03 04 05 06 07 08 09 10

    系统符号信息

      $ 
            a  调取变量信息
            b  区分用户类型  $ 区分普通用户和root用户
            c  结合awk对文件进行取列
    

    $变量

     [root@localhost test]# nsh=123
     [root@localhost test]# echo $nsh
     123
    

    对awk去列

     [root@localhost test]# xargs -n 2 <test01.txt
     01 02
     03 04
     05 06
     07 08
     09 10
     [root@localhost test]# xargs -n 2 <test01.txt  |awk '{print $2}'
     02
     04
     06
     08
     10
     [root@localhost test]# xargs -n 2 <test01.txt  |awk '{print $1}'
     01
     03
     05
     07
     09
     [root@localhost test]# xargs -n 2 <test01.txt  |awk '{print $0}'
     01 02
     03 04
     05 06
     07 08
     09 10

    !的作用

      a 强制的作用  wq!
      b 可以实现取反 
    
    
    
    [root@localhost test]# cat test02.txt
     aaaaaa
     aaaaaa
     aaaaaa
     bbbbbb
     [root@localhost test]# grep "bbbbbb" test02.txt
     bbbbbb
     [root@localhost test]# grep -v "bbbbbb" test02.txt
     aaaaaa
     aaaaaa
     aaaaaa
     [root@localhost test]# awk '/bbbbbb/' test02.txt
     bbbbbb
     [root@localhost test]# awk '!/bbbbbb/' test02.txt
     aaaaaa
     aaaaaa
     aaaaaa
    

    通过取反来看文件和非文件

     [root@localhost opt]# cd test/
     [root@localhost test]# mkdir page
     [root@localhost test]# ll
     total 16
     drwxr-xr-x. 2 root root  6 Apr 24 05:58 page
     -rw-r--r--. 1 root root 30 Apr 24 05:45 test01.txt
     -rw-r--r--. 1 root root 46 Apr 24 05:52 test02.txt
     -rw-r--r--. 1 root root 10 Apr 24 05:12 test03.txt
     -rw-r--r--. 1 root root 10 Apr 24 05:12 test04.txt
     [root@localhost test]# cd ..
     [root@localhost opt]# find test/ -type f ###查询当前test目录下的文件
     test/test03.txt
     test/test04.txt
     test/test01.txt
     test/test02.txt
     [root@localhost opt]# find test/ ! -type f ###查询test目录下的非文件
     test/
     test/page

    !信息  可以快速调取执行历史命令(慎用)

     [root@localhost opt]# find test/ ! -type f
     test/
     test/page
     [root@localhost opt]# !find  ###执行上述命令
     find test/ ! -type f
     test/
     test/page
    

    实现管道功能
         将前一个命令执行的结果交给管道后面的命令进行处理一般管道符号 会经常和xargs命令配合使用批量删除操作

     find /test -type f -name "test*.txt"|xargs rm
     find /test/ -type f -delete
     find /test/ -type f -exec rm -f {} ;
    

             批量复制

     find /test -type f -name "test*.txt" |xargs -i cp {} /oldgirl/
     find /test -type f -name "test*.txt" |xargs cp -t /oldgirl/
     find /test -type f -name "test*.txt" -exec cp -a {} /oldgirl ;
    
    
    

            批量移动

     find zhangsan/ -name "test*.txt" |xargs mv -t lisi/
     find lisi/ -name "test*.txt" |xargs -i mv {} zhangsan/
     find zhangsan/ -name "test*.txt" -exec  mv {} lisi/ ;
    

     

    双引号,单引号,$符号的区别

     [root@localhost test]# echo '`123`'
     `123`
     [root@localhost test]# echo '`echo 123`'
     `echo 123`
     [root@localhost test]# echo "`echo 123`"
     123
     [root@localhost test]# echo "$(echo 123)"
     123
     ``等价于$()
    

    重定向

    
    
      >/1>   标准输出重定向符号
        >>/1>>   标准输出追加重定向符号
        2>     错误输出重定向符号
        2>>    错误输出追加重定向符号 
    

    示例一

     [root@localhost test]# cat >> wangwu<<eof
     > zhangsan
     > zhangsan
     > eof
     [root@localhost test]# cat wangwu
     zhangsan
     zhangsan
     [root@localhost test]# ls
     lisi  wangwu  zhangsan
     [root@localhost test]# cat >>wangwu<<lisi
     > askjjsfs
     > rgjfhgfh
     > cbvfgh
     > lisi
     [root@localhost test]# cat wangwu
     zhangsan
     zhangsan
     askjjsfs
     rgjfhgfh
     cbvfgh
    

      

    示例二

     [root@localhost test]# echo 123>haha
     [root@localhost test]# echo 123 >haha
     [root@localhost test]# cat haha
     123
     [root@localhost test]# ll
     total 8
     -rw-r--r--. 1 root root  4 Apr 24 23:59 haha
     [root@localhost test]# echo sdfjs>>haha
     [root@localhost test]# cat haha
     123
     sdfjs
    

    逻辑符号系列

      &&  前一个命令操作执行成功了,再操作执行后面的命令
      ||  前一个命令操作执行失败了,再操作执行后面的命令
     [root@localhost test]# mkdir /old_dir && echo "create dir sucess" || echo "create dir failed"
            create dir sucess
     [root@localhost test]# mkdi /old_dir && echo "create dir sucess" || echo "create dir failed"
       -bash: mkdi: command not found
            create dir failed
    

    系统通配符号

    用于匹配文件名称信息, 便于快速查找文件信息 find

     *  匹配所有信息
     find /oldboy -type f -name "zhangsan*"   ---以zhangsan开头的信息都查询出来
     find /oldboy -type f -name "*zhangsan"   ---以zhangsan开头的信息都查询出来
     find /oldboy -type f -name "ozhangsan*lisi"   
                                                 ---以zhangsan 开头的信息
                                以lisi结尾的信息都查询出来 
    
    

    {} 产生序列信息
       连续序列:

     [root@localhost test]# echo {01..05}
      01 02 03 04 05
     [root@localhost test]# echo {a..z}
      a b c d e f g h i j k l m n o p q r s t u v w x y z
     [root@localhost test]# echo {A..Z}
     A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
    

    生成不连续序列
       a 有规律的不连续序列

     [root@localhost test]# echo {01..05..2}
            01 03 05
     [root@localhost test]# echo {a..z..2}
            a c e g i k m o q s u w y
    

            b 没规律的不连续序列

    [root@localhost test]# echo {www,bbs,blog}
        www bbs blog
    

       生成组合序列

     [root@localhost test]# echo {1,2}{a,b}
        1a 1b 2a 2b
     [root@localhost test]# echo {1,2}{a,b}{A,B}
        1aA 1aB 1bA 1bB 2aA 2aB 2bA 2bB
     ​
        echo A{a,b}
        Aa Ab     
     ​
        A=oldboy.txt 
     ​
        echo oldboy.txt{a,b}   
        oldboy.txta oldboy.txtb     
     ​
     [root@localhost test]# echo A{,b}
        A Ab
        A=oldboy.txt 
        b=.bak
     ​
        cp oldboy.txt{,.bak} == cp oldboy.txt oldboy.txt.bak
      可以快速备份文件命令
     [root@localhost test]# cp oldboy.txt{,.bak}
     [root@localhost test]# ll
        -rw-r--r-- 1 root root 30 Jan 16 11:12 oldboy.txt
        -rw-r--r-- 1 root root 30 Jan 16 11:56 oldboy.txt.bak
      快速还原数据方法
     [root@localhost test]# cp oldboy.txt{.bak,}
        -rw-r--r-- 1 root root 30 Jan 16 12:02 oldboy.txt
        -rw-r--r-- 1 root root 30 Jan 16 11:56 oldboy.txt.bak
     ​
     # echo A{B,}
     ​
        AB A
        oldboy.txt{.bak,} == cp oldboy.txt.bak oldboy.txt
    

     未完待续..........................

  • 相关阅读:
    C++-蓝桥杯-大臣的旅费[dfs][树的直径]
    C++-蓝桥杯-剪格子-[2013真题][爆搜?]
    微信公众平台运营指导
    ALGO-84 大小写转换
    ALGO-84 矩阵乘法
    ALGO-49 寻找数组中最大值
    ALGO-92 前缀表达式
    ALO-42 送分啦
    ALGO-90 出现次数最多的整数
    【微信】公众号群发相关使用
  • 原文地址:https://www.cnblogs.com/nshgo/p/10769131.html
Copyright © 2011-2022 走看看