zoukankan      html  css  js  c++  java
  • shell脚本基础和grep文本处理工具企业应用1

     
     

    bash特性及bash脚本编程初步:
    用户要跟计算机交互就需要有终端,比如:显示器、键鼠等,在终端有附着的接口程序
    GUI:KDE、GNome、Xfce
    CLI:/etc/shells
    bash
    zsh
    fish

    bash的特性:
    命令行展开:~,{}
    命令别名:alias,unalias
    命令历史:history
    文件名通配:glob
    快捷键:Ctrl+a,e,u,k,l
    命令补全:$PATH
    路径补全:

    bash特性之:命令hash
    缓存此前命令的查找结果:key-value
    key:搜索键
    value:值

    hash命令:
    hash:确定并记住每一个给定名称命令的完整路径,如果不提供参数,则显示已经记住的命令的信息
    -d 忘记每一个已经记住的命令的位置
    ~]# hash -d cat
    -r 忘记所有记住的位置

    bash特性之:变量
    程序:指令+数据
    指令:由程序文件提供
    数据:IO设备输入、文件、管道、变量

    程序:算法+数据结构

    变量名+指向的内存空间

    变量赋值:name=value
    变量类型:存储格式、表示数据范围、参与的运算
    编程语言:
    强类型变量
    弱类型变量:
    bash把所有变量统统视作字符型
    bash中的变量无需事先声明;随用随取;相当于,把声明和赋值过程同时实现
    声明:类型,变量名
    变量替换:把变量名出现的位置替换为其所指向的内存空间中数据
    变量引用:${var_name},$var_name
    变量名:变量名只能包含数字、字母和下划线,而且不能以数字开头
    变量名:见名知义,命名机制遵循某种法则;不能够使用程序的保留字,例如:if,else,then,while等等
    例如:chicken_Total

    bash变量类型:
    本地变量:作用域仅为当前shell进程
    环境变量:作用域为当前shell进程及其子进程
    局部变量:作用域为某代码片断(函数上下文)

    位置参数变量:当执行脚本的shell进程传递的参数
    特殊变量:shell内置的有特殊功用的变量,例:$?,0表示成功,1-255表示失败

    本地变量:
    变量赋值:name=value
    变量引用:$(name),$name
    "":变量名会替换为其值
    '':变量名不会替换为其值
    查看变量:set
    撤销变量:unset name
    注意:此处非变量引用

    环境变量:
    变量赋值:
    (1)export name=value
    (2)name=value
    export name
    (3)declare -x name=value
    (4)name=value
    declare -x name
    变量引用:$(name),$name

    注意:bash内嵌了许多环境变量(通常为全大写字符),用于定义bash的工作环境,我们自己定义时尽量使用小写
    PATH,HISTFILE,HISTSIZE,HISTFILESIZE,HISTCONTROL,SHELL,HOME,UID,PWD,OLDPWD

    查看环境变量:
    export
    declare -x
    printenv
    env
    撤销环境变量:unset name

    只读变量:
    declare -r name
    readonly name

    只读变量无法重新赋值,并且不支持撤销;存活时间为当前shell进程的生命周期,随shell进程终止而终止

    bash特性之多命令执行:
    ~]# COMMAND1;COMMAND2;COMMAND3;...

    逻辑运算:
    运算数:真(true,yes,on,1)
    假(false,no,off,0)

    与:
    1 && 1 = 1
    1 && 0 = 0
    0 && 1 = 0
    0 && 0 = 0
    或:
    1 || 1 = 1
    1 || 0 = 1
    0 || 1 = 1
    0 || 0 = 0
    非:
    ! 1 = 0
    ! 0 = 1

    短路法则:
    ~]# COMMAND1 && COMMAND2
    COMMAND1为“假”,则COMMAND2不会再执行
    COMMAND1为“真”,则COMMAND2必须执行

    示例: ~]# touch /tmp/test.etc && ls /etc > /tmp/test.etc

    ~]# COMMAND1 || COMMAND2
    COMMAND1为“真”,则COMMAND2不会再执行
    COMMAND1为“假”,则COMMAND2必须执行

    示例: ~]# id $username || useradd $username

     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    Bash 小问题【待更新】
    进程动态优先级调度
    密码
    [Noi2016]优秀的拆分
    [Tjoi2016&Heoi2016]字符串
    [BZOJ 1901]Dynamic Rankings
    [HDU 2665]Kth number
    [BZOJ 4310]跳蚤
    [Sdoi2008]Sandy的卡片
    [Usaco2007 Dec]队列变换
  • 原文地址:https://www.cnblogs.com/jianchen013/p/11753025.html
Copyright © 2011-2022 走看看