zoukankan      html  css  js  c++  java
  • 计算机基础篇之四

    目录

      1.1 bash基本特性

      1.2 cp

      1.3 mv

      1.4 install/cat

      1.5 more/less

      1.6  head/tail

      1.7 cut/sort

      1.8 wc/tr

      1.9 grep

      1.10 过滤IP地址

    1.1 bash基本特性

    bash基本特性:
    1.命令行编辑 光标跳转
        ctrl+a     命令行首
        ctrl+e     命令行尾
        ctrl+d     删除光标处字符
        ctrl+u     删除光标至命令行首的内容
        ctrl+k     删除光标至命令行尾的内容                
        ctrl+<-   跳转一个单词
        ctrl+l    清屏
    2.命令历史     保存在内存缓冲区
        history 
            -c       清空历史命令
            -d 50   清空第500个命令
            -d 50 3 从500行开始的后三行
            -w 缓存区保持到内存中    ./bash_history 
            !n 
            !-n :         倒数第n条命令   
            !!          执行上一条命令
            !字符串    执行历史命令中最近一个以此字符串开头的命令
            !$           引用前一个命令的最后一个参数( esc 松开.)(alt+ .)
    3.命令补全/路径补全
         Tab健  
    4.命令别名
        alias 别名  
      #bash的配置文件
        unalias 别名
    5,命令替换
        把命令中某个子命令替换为其执行结果的过程
        echo "this is a 当前目录 $(pwd)"
        echo "this is a 当前目录 $`pwd` 
        touch ./file-$(date +%F-%H-%M-%S).txt
    ###示例###
    [root@xiaofu ~]# echo "taday is `date +%F-%H-%S-%M`"
    taday is 2019-12-19-00-11-06
    [root@xiaofu ~]# echo "this directory is $(pwd)"
    this directory is /root
    6.bash支持的引号:
        1.``   命令替换
        2.""   弱引号,可以实现变量替换
        3.''   强引号   不完成变量替换
    7.文件名通配:
        *      #通配任意长度的任意字符,包括空字符
        ?      #匹配任意单个字符,必须为1个,空字符不行
        []     #匹配指定范围内的任意单个字符 [a-z],[0-9][a-zA-Z],[0-9a-zA-Z]
        [^]    #匹配指定范围之外的任意单个字符
    ###示例###
    [root@xiaofu test]# ls
    1dcbc 1.txt a aab abc ab a b a_b  b b33c 1a 2j 39 9g     #目录下所有的文件
    [root@xiaofu test]# ls [0-9]*     #显示所有以数字开头的文件
    111dcbc 1.txt
    [root@xiaofu test]# ls a*b         #显示以a开头b结尾的所有文件
    aab ab a b a_b
    [root@xiaofu test]# ls [0-9]?     #显示已数字开头后面只有一个字符的文件
    1a 2j 39 9g
    [root@xiaofu test]# ls [^0-9]*   #显示不是数字开头的所有文件
    a aab aabbc ab a b a_b Abbccd b b33c
        [:space:]   # 所有的空白文件
        [:punct:]   # 所有的标点符号
        [:lower:]   # 所有小写字母
        [:upper]         # 所有大写字母
        [:alpha]     # 所有大小写字母
        [:digit]        # 所有数字
        [:alnum]        # 数字和大小写字母
    man 7 glob
    ###示例###
    [root@xiaofu test]# ls
    111 1123bjj 1.doc a ba.txt abc ABc b c Bid c_b #目录中所有文件
    [root@xiaofu test]# ls *[[:space:]]*   #显示包含空白字符的所有文件
    a ba.txt b c c_b
    [root@xiaofu test]# ls *[[:punct:]]*   #显示所有包含标点字符的文件
    1.doc a ba.txt c_b
    root@xiaofu test]# ls [[:lower:]]*          #显示所有包含小写字符的文件
    a ba.txt abc b c
    [root@xiaofu test]# ls [[:upper:]]*         #显示所有包含大写字符的文件
    ABc Bid
    [root@xiaofu test]# ls [[:alpha:]]*          #显示所有包含大小写字符的文件
    a ba.txt abc ABc b c Bid
    [root@xiaofu test]# ls [[:digit:]]*            #显示所有包含数字的文件
    111 1123bjj 1.doc
    [root@xiaofu test]# ls [[:alnum:]]*           #显示包含数字和大小写字符的文件
    111 1123bjj 12Ga 1.doc a ba.txt abc ABc b c Bid

    1.2 cp 

    cp 
        #一个文件到一个文件;多个文件到一个目录
        -a 归档复制(保留源文件一切属性,原来什么属性就复制成什么属性)
        -r 递归复制
        -f 强制复制
        -p 属主组,权限,时间戳
        -a{dR} 保留源文件所有属性
        -l 复制链接指向的文件非链接
        -P 保持链接自身属性
    ###示例###
    [root@xiaofu ~]# cp /etc/{passwd,shadow,yum.repos.d/redhat.repo} /tmp/
    [root@xiaofu ~]# ll /tmp/
    -rw-r--r--. 1 root root 989 Dec 17 08:19 passwd
    -rw-r--r--. 1 root root 358 Dec 17 08:19 redhat.repo
    ----------. 1 root root 982 Dec 17 08:19 shadow

    1.3 mv

    mv SRC DEST
    mv -t DEST SRC
        #功能和cp类似

    1.4 install/cat

    install 复制文件指定属性
        -d 创建目录
        -m 指定权限,-o 指定属主
    install -t DEST SRC...
    ###示例###
    [root@xiaofu ~]# install -d /tmp/{a.txt,b.txt}
    [root@xiaofu ~]# ll /tmp/
    drwxr-xr-x. 2 root root   6 Dec 17 08:41 a.txt
    drwxr-xr-x. 2 root root   6 Dec 17 08:41 b.txt
    ###################################
    [root@xiaofu ~]# ll -d /etc/passwd
    -rw-r--r--. 1 root root 989 Dec 13 00:05 /etc/passwd
    [root@xiaofu ~]# install /etc/passwd /tmp/passwd1
    [root@xiaofu ~]# ll -d /tmp/passwd1 
    -rwxr-xr-x. 1 root root 989 Dec 17 08:44 /tmp/passwd1
    cat   #从标准输入读取内容并显示标准输出上
        [选项] [file...]
        -n 显示行号
        -E 显示行尾{linux行尾是"$",Windows行尾是"$回车"}
        -A 所有显示
    tac 反向选择{和cat反过来显示}

    1.5 more/less 

    more/less 分屏显示
         "空格键"       #向后翻一屏
          "b"             #向前翻一屏
          "回车键"       #一行行向后翻

    1.6 head/tail

    head/tail #文件的前n行,默认10行
        -n 显示行数
    taif -f file...实时显示追加的内容

    1.7 cut/sort

    cut/join  切/合并
        -d  #指定字段分隔符{默认为一个空格}
        -f    #指定需要显示的字段
              #  -f1 ;  1,3;  1-3
    sort 文本排序
        #默认根据ASCII表进行排序
        -n 数值大小排序
        -r 降序排序
        -t 字段分割符
        -k 以哪个字段关键字进行排序
        -u 相同的行只显示一次{UNICODE}相邻
        uniq - d 报告重复的行
          -c 重复行的次数
        -f  忽略字符大小写

    1.8 wc/tr

    wc 文本统计
    [root@xiaofu ~]# wc /etc/passwd
     22  30 989 /etc/passwd
    行数 30个单词 989个字节
        -l 只显示行
        -w 只现实单词数
        -c 只显示字节
        -m 字符数
        -L 最长的行包含多少个字符
    tr 字符处理命令  #转换或删除字符
    ###示例###
    tr "a-z" "A-Z" < /ect/passwd #逐个替换
        -d 删除出现字符集中的所有字符 逐个字符进行处理

    1.9 grep

    grep家族
     1.grep       #根据模式搜索文本,并将符合模式的文本行显示出来,(使用基本正则表达式的模式来过滤文本的命令)
    #Pattern(模式):文本字符和正则表达式的元字符组合而成的匹配条件 
    -i 忽略字符大小写
    --color 匹配颜色
    -v 反向查找
    -o 只显示被模式匹配的字符串
    -E ;使用扩展正则表达式  #即"egrep"
      -A:#10 after
      -B      before
      -C :     after,berfore
    ###示例###
    [root@xiaofu ~]# grep -EA 2 'sshd' /etc/passwd      #显示'/etc/passwd'文件中包含"sshd"字符的后两行
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    user01:x:1000:1000::/home/user01:/bin/bash
    user02:x:1001:1001::/home/user02:/bin/bash
    [root@xiaofu ~]# grep -EB 2 'sshd' /etc/passwd      ##显示'/etc/passwd'文件中包含"sshd"字符的前两行
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    chrony:x:998:996::/var/lib/chrony:/sbin/nologin
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    [root@xiaofu ~]# grep -EC 2 'sshd' /etc/passwd      ##显示'/etc/passwd'文件中包含"sshd"字符的前后两行
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    chrony:x:998:996::/var/lib/chrony:/sbin/nologin
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    user01:x:1000:1000::/home/user01:/bin/bash
    user02:x:1001:1001::/home/user02:/bin/bash  
    ###正则表达式### 正则表达式 Regular EXPression (REGEXP) #尽可能长的模式下匹配
     
    1)元字符
      . 匹配任意单个字符 #grep
    'r..t' /etc/passwd
     [] 指定范围内的任意单个字符 #grep
    '[0-9]' /etc/fstab
     [
    ^] 指定范围外的任意单个字符 #grep '[^A-Z]' /etc/fstab
     2)匹配次数
      * 匹配其前面的字符任意次 a,b,ab,aab,acb,adb,amdb a*b a.*b
      .
    * 任意长度的任意字符
      
    ? : 匹配其前面的字符一次或0次(可用可无)
      {m,n} 匹配其前面的字符至少m次,至多n次
    ###示例###
    [root@xiaofu test]# grep
    'b?' 1.txt #表示b字符出现1次或0次
    a,b,ab,aab,abb,acb,adddba b,bbc,ddd,fjdc
    [root@xiaofu test]# grep
    'b{1,2}' 1.txt #表示字符b最少出现1次,最多出现2次
    a,b,ab,aab,abb,acb,adddba b,bbc,ddd,fjdc
    位置指定
    ^ 此字符后面的任意内容必须出现在行首 #grep '^/' /etc/fstab
    $ 此字符前面的任意内容必须出现在行尾 #grep
    '0$' /etc/fstab
    ^$ :空白行 # grep -v "^$" /etc/samba.conf #过滤samba配置文件中的空行
    < 其后面的字符字符必须作为单词首部出现 
    > 其前面的字符字符必须作为单词尾部出现 
    ###示例###

    [root@xiaofu test]# cat 1.txt
    abcefguser01
    user01xxxx
    sssuser01
    user is user01

    [root@xiaofu test]# grep 'user01' 1.txt 

    user is user01
    [root@xiaofu test]# grep 'user01' 1.txt
    user01xxxx
    user is user01

    [root@xiaofu test]# grep '<user01' 1.txt 
    user01xxxx
    user is user01

    ###
    [root@xiaofu test]# grep 'user01' 1.txt
    abcefguser01
    sssuser01
    user is user01
    [root@xiaofu test]# grep 'user01>' 1.txt
    abcefguser01
    sssuser01
    user is user01

    分组
      ()
        (ab)*  ab可以出现0此,一次,任意次
      1:引用第一个左括号以及与之对应的右括号所包含的所有内容
    ###示例###

    [root@xiaofu test]# cat 1.txt       #显示文件1.txt的内容
    i hello is hellor
    b miss u a misser
    u love me lovever
    ddd lwwe dd lwwe
    fddlxxe is ssslxxe
    [root@xiaofu test]# grep '(l..e).*1' 1.txt   #显示以"l..e"类型的字符,后面也同样出现类似的"l..e"的字符
    u love me lovever
    ddd lwwe dd lwwe
    fddlxxe is ssslxxe
    [root@xiaofu test]#

    扩展正则表达式与基本正则表达式区别:
      1.字符匹配相同
      2.次数匹配
      *:任意长度的任意字符
      ?:任意当个字符
      +:其前字符至少一次{1,}
      {m,n}最少m次,最多n次
    分组:{},支持或者"a|b" #or
    ###示例###

    [root@xiaofu test]# cat 1.txt
    cat
    Cat
    c
    china
    [root@xiaofu test]# grep -E 'c|cat' 1.txt
    cat
    c
    china

    [root@xiaofu test]# grep -E '(c|C)at' 1.txt
    cat
    Cat

    grep -E =egrep

    1.10 过滤IP地址

    ###示例###
    1.过滤掉"1-255之间的数字"
    [root@xiaofu ~]# ifconfig | egrep '<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])>' 
            inet 192.168.0.204  netmask 255.255.255.0  broadcast 192.168.0.255
            inet6 fe80::b387:2fab:3408:7a83  prefixlen 64  scopeid 0x20<link>
            ether 00:0c:29:cf:b0:2e  txqueuelen 1000  (Ethernet)
            RX packets 207708  bytes 14793261 (14.1 MiB)
            TX packets 9692  bytes 1137475 (1.0 MiB)
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1  (Local Loopback)
            RX packets 80  bytes 7096 (6.9 KiB)
            TX packets 80  bytes 7096 (6.9 KiB)
    2.过滤IP地址
        #"<",">"""的意思相同。
    [root@xiaofu ~]# ifconfig | egrep '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' 
    inet 192.168.0.204 netmask 255.255.255.0 broadcast 192.168.0.255
    inet 127.0.0.1 netmask 255.0.0.0
    [root@xiaofu ~]#
    [root@xiaofu ~]# ifconfig | egrep -o '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
    192.168.0.205
    255.255.255.0
    192.168.0.255
    127.0.0.1
    255.0.0.0
    [root@xiaofu ~]# ifconfig | egrep -o '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).)(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).)(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).)([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
    192.168.0.205
    255.255.255.0
    192.168.0.255
    127.0.0.1
    255.0.0.0

    The End

    成功的背后都是汗水
  • 相关阅读:
    Lucene全文检索
    数据库设计样例
    tortoisegit 保存用户名密码
    ServletContextListener 解析用法
    !! 浅谈Java学习方法和后期面试技巧
    佳能2780打印机老出5100错误
    蓝屏
    股市口诀
    如何准确进行T+0操作
    通达信:显示K线图日期
  • 原文地址:https://www.cnblogs.com/xiaofu89120/p/12044450.html
Copyright © 2011-2022 走看看