• shell——Day 2


    f.alias别名:

    取外号--为了方便命令的调用,取一些易记的名字

         alias  cls='clear'

         alias  cdnet='cd /etc/sysconfig/network-scripts'

         alias cls ='clear'   //等号前后没有空格

         /etc/profile    //全局生效

         /etc/rcbash

         ~/.profile       //当前目录用户下生效

         ~/.rcbash

    g.文件通配符--globbing

    ls /var/*.log  查看任意长度的以log结尾的文件

    文件通配符和正则表达式

    “ * ”不能匹配空白文件,匹配任意长度的任意字符

    “ ? ”匹配任意单个字符

    符号集合

        [ ]  [0--9] [a-z] [A-Z] [a-zA-Z] [0-9a--zA-Z] [^] [^0-9] 
        [:digit:],[:graph:],[:lower:],[:print:],[:punct:],[:punct:],[:space:],[:upper:],[:xdigit:]
        [:alpha:],[:alunm:]
    

    h.重定向和管道符

    1、重定向:修改程序中指令或数据的输入输出方式。

    程序=指令+数据

    #!/bin/bash
    #
    echo "hello world"
    

    #! /bin/bash
    #
    cut -d ":" -fi /etc/passwd |grep user1 & > /dev/null id user1 &> /dev/null
    if[$? -eq 0]:then
             echo"user alwardy exists"
             exit 10
    else
             useradd user 1
             echo"123456" | passwd --stain "user1" &> /dev/null
             echo"useradd successful"
             exit 0
    fi
    

    数据变量: 可以在脚本中自己定义

                       可以在外面通过$1,$2,...${10}

                       环境变量在shell中可以直接调用

    标准输入:键盘

    标准输出:打印机

    文件标识符:fd 0~9 0,1,2

                        0----代表正常输入

                        1----代表正常输出

                        2----错误输入输出

    输出:  >     >>

                        >覆盖输出重定向,不允许用户进行覆盖重定向

                        >>追加重定向

    输入:  <     <<

                        < 将后面的文件交给前面的命令执行

                        <<同时输入多行数据

    注默认情况下,输入输出的文件标识符会被省略,在做错误输入输出的时候文件标识符不能被省略:

    *在shell脚本中,我们往往不需要命令本身的输入输出结果,仅仅只需要命令的执行状态,所以需要将命令的所有输出内容重定向到/dev/null

    i.管道 - tee

    将前一条命令的运行结果,交给另一条命令执行

    cut -d ":" -f1 /etc/passwd | grep user 1

    Linux思想:结合小功能,实现大功能

    free -m |grep "^Mem" | cut-d " " -f4

    free -m |grep "^Mem" | awk ‘{print$4}’

    i.文本处理工具 – wc,cut,sort,uniq

     cut
      -d   指定分割符
      -fn
      -fn1,n2,n3
      -fn1-n3
      --output-delimiter="xxx"  //指定输出分割符
      示例:cut -d":" -f1,3 --output-delimiter="=" /etc/passwd
      【注意:-h --help  短选项和长选项,短选项可以合并,而长选项不能合并】
      *cut的问题:无法识别多个空格,就这一点,就远远不如awk
     wc
      -l  行
      -c  字节大小
      -w 单词个数(默认是以空格为分隔符)
      示例:ps aux | grep httpd | wc -l
    useradd user1 &/dev/null
    useradd user1 > /dev/null2 >/dev/null &
    useradd user1 1&>2 /dev/null
    

     

    例:添加用户后直接修改密码
     
    添加一个用户user1
     
    进入useradd脚本文件:
    测试

     同上,添加一个user2用户方便测试。

    grep "user" /etc/passwd  //查看用户user1是否存在
     

    此时,可以查看到添加的user1和user2.

    1、过滤user1 和user2以及信息

    grep --color=auto"^user" /etc/passwd     //过滤用户
     

    2、切割出以user开头的用户名

    cut -d":" -f1 /etc/passwd | grep user1   //过滤用户名
     

     删除文件:

    1、rm

    2、mv 将文件移动到/etc/tmp目录下 30天不被访问自动删除

    3、find[范围] -name ab* type f -perm 600-mtime+7/xavgs

    -s 套接字/ b块级文件/  d目录文件/  c字符文件/  p管道文件/ l字符链接文件/

    motify :最后修改的文件内容,最后修改的属性

    过滤所有user用户,并将运行结果交给a.txt执行

     

    j.head的用法

    例1:将/etc/passwd 文件前五行内容转为大写后存入f.txt文件

    head -5 /etc/passwd | tr [[:lower:]] [[:upper:]] | tee a.txt
    

    例2:将登录至当前系统上的用户信息汇总后的后3位信息转为大写后存到 /tmp/who.out

    who | tail -3 |cut -d '' -f1 | tr [[:lower:]] [[:upper:]] | tee a.txt 
    

    k.指定输出分隔符

    cut   -d/    -fn/     -fn123

    例:输出etc/passwd目录中的内容以“=”分割

    cut -d ":" -f1,3 --output-delimiter = "=" /etc/passwd
    

     

  • 相关阅读:
    数据提交
    Python网页信息抓取
    Python语法学习
    Elasticsearch5.x 升级-插件
    LeetCode 33 搜索旋转排序数组
    按之字形顺序打印二叉树
    股票的最大利润
    LeetCode 1143 最长公共子序列
    对称的二叉树
    两个链表的第一个公共结点
  • 原文地址:https://www.cnblogs.com/Blockblogs/p/11535457.html
Copyright © 2020-2023  润新知