美文网首页Linux小推车
[LN_06] Shell基础:Bash基本功能(别名|输出重定

[LN_06] Shell基础:Bash基本功能(别名|输出重定

作者: Fighting_001 | 来源:发表于2019-01-30 00:48 被阅读49次

    目录结构

    一、Shell概述
        1. Shell简介 & 工作原理
        2. Shell分类
    二、脚本执行方式
        1. 输出命令:echo
        2. 第一个Shell脚本(.sh)
        3. 脚本执行
    三、Bash的基本功能
        1. 别名与快捷键
            1)别名查看&设置
            2)命令生效执行优先顺序
            3)常用快捷键
        2. 历史命令:history
            1)查看历史命令存储的文件
            2)历史命令的调用
            3)命令补全
        3. 输出重定向
            1)标准输入&输出
            2)输出重定向
            3)输入重定向
        4. 管道符
            1)多命令顺序执行
            2)管道符
        5. 通配符
            1)常用通配符
            2)Bash中的其他特殊符号
    

    一、Shell概述

    1. Shell简介 & 工作原理

    引入Shell:
    在系统终端输入的字符即ASCII字符,计算机不能识别,需要翻译成为二进制(0和1组成),计算机才能有效识别,此时即需要Shell构建桥梁联通用户和计算机进行交流

    Shell概念:
    Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序(如:命令终端界面),用户可以用Shell来启动、挂起、停止甚至是编写一些程序。Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令

    Shell工作场景:
    用户与内核通过Shell的搭桥牵线进行交流
    Step1:用户在命令终端界面输入常规命令的字符,Enter回车
    Step2:Shell根据ASCII码表,将用户输入的字符翻译成二进制形式的字符串
    Step3:Shell将翻译的结果传递给内核
    Step4:内核调用计算机硬件来处理用户输入的命令
    Step5:硬件执行的结果,通过内核传递给Shell
    Step6:通过Shell再将处理结果翻译成用户可识别的ASCII字符
    Step7:传递计算机处理结果呈现给用户

    2. Shell分类

    Shell主要有两种语法类型:Bourne和C,这两种语法彼此不兼容。Bourne家族主要包括:sh、ksh、Bash、psh、zsh,其中Bash是目前Linux中标准的Shell;C家族主要包括:csh、tcsh,主要是给Unix使用
    1)Bourne Shell:
    从1979起Unix就开始使用Bourne Shell,其主文件名为sh
    2)C Shell:
    C Shell主要在BSD版的Unix系统中使用,其语法和C语言相类似而得名

    查看Shell的相关操作:
    查看系统中所有支持的shell:cat /etc/shells

    查看当前系统运行的shell:echo $SHELL

    切换状态(Bash --> sh):sh
    退出切换(sh --> Bash):exit

    二、脚本执行方式

    1. 输出命令:echo

    echo [选项] [输出内容]
    选项:
    -e  支持反斜线控制的字符转换
    
    控制字符 作用
    \a 输出警告音
    \b 退格键(向左删除键)
    \n 换行符
    \r 回车键
    \t 制表符(Tab键)
    \v 垂直制表符
    \0nnn 按照8进制ASCII码输出字符(0为数字零,nnn为3位8进制数)
    \xhh 按照16进制ASCII码表输出字符(hh为2位16进制数)

    <关联>:ASCII码对照表
    如:echo -e "\x68\x65\x6C\x6C\x6F\t2019\nFighting"

    输出颜色:

    # 输出颜色
    echo -e "\e[1;31m hello 2019 \e[0m"
    颜色:
    30m--31m--32m--33m--34m--35m--36m--37m
    黑----红---绿---黄---蓝---洋红--青---白
    

    2. 第一个Shell脚本(.sh)

    以命令vi hello.sh新建Shell脚本文件,文件开头填写 #!/bin/bash 为必填内容,目的是为了规范使用,且保证在Shell中调用其他语言时正常运行

    #!/bin/bash
    
    # 第1个Shell脚本
    echo -e "\e[1;34m Hello World ! \e[0m"
    

    3. 脚本执行

    方式①:赋予执行权限,直接运行

    chmod 755 hello.sh
    ./hello.sh
    

    方式②:通过Bash调用执行脚本(无须赋权)

    bash hello.sh
    

    三、Bash的基本功能

    1. 别名与快捷键

    1)别名查看&设置
    # 查看系统中已经生效的命令别名
    alias
    # 设置命令的别名(临时设置)
    alias 别名='原命令'
    # 删除别名(临时删除)
    unalias 别名
    

    PS:别名设置时,等号=左右不留空格,否则可能设置不成功

    vim作为vi的增强版,可将vim的别名设置为vi,如:alias vi='vim'
    取消设置:unalias vi

    使别名配置永久生效:

    # 写入环境变量配置文件(永久生效)
    vi ~/.bashrc
    # 使配置文件立即生效
    source .bashrc
    
    2)命令生效执行优先顺序

    No.1:绝对or相对路径执行的命令
    No.2:别名设置的命令
    No.3:Bash内部命令
    No.4:$PATH环境变量定义的目录下查找到的命令

    3)常用快捷键

    【CTRL+C】 ==> 强制终止当前命令的执行
    【CTRL+L】 ==> 清屏
    【CTRL+A】 ==> 光标移动到命令行首
    【CTRL+E】 ==> 光标移动到命令行尾
    【CTRL+U】 ==> 从光标所在位置删除直至行首
    【CTRL+Z】 ==> 把命令放入后台(未终止命令,还会占用一定的系统资源)
    【CTRL+R】 ==> 在历史命令中搜索

    2. 历史命令:history

    history [选项] [历史命令保存文件]
    选项:
    -c  清空历史命令
    -w  把缓存中的历史命令写入历史命令保存文件 ~/.bash_history
    
    1)查看历史命令存储的文件

    vi /etc/profile

    2)历史命令的调用

    ①使用上下箭头 ↑↓ 调用以前的历史命令
    ②使用 "!字串" 重复执行最后一条以该字串开头的命令
    如:service network restart,执行一次之后,下一次可用 !ser 执行,提升操作效率

    3)命令补全

    Bash中命令与文件补全,可用Tab键,连续2次按Tab键则会展示该字符串开头的所有命令备选;相似的,连续按2次Tab键则会展示某个目录下的所有子目录

    3. 输出重定向

    1)标准输入&输出
    设备 设备文件名 文件描述符 类型
    键盘 /dev/stdin 0 标准输入
    显示器 /dev/stdout 1 标准输出
    显示器 /dev/stderr 2 标准错误输出
    2)输出重定向

    从把本来会输出到显示器上的信息,改变方向写入到指定文件中保存而不在显示器输出
    应用场景:Linux服务器上人为维护以外的时间,设置定时执行某个命令,然后将其结果保存到指定文件中成为日志,以备查看

    a-标准正确输出重定向

    符号 作用
    命令 > 文件 把命令的正确输出保存到指定文件or设备中
    (覆盖原内容)
    命令 >> 文件 (追加到原内容之后)

    b-标准错误输出重定向

    符号 作用
    错误命令 2>文件 把命令的错误输出保存到指定文件or设备中
    (覆盖)
    错误命令 2>>文件 (追加)

    PS:对于错误输出,建议符号>左右两侧不留空格

    c-同时保存正确输出和错误输出的结果

    符号 作用
    命令 > 文件 2>&1
    命令 &>文件
    把正确输出和错误输出都保存到同一个文件中
    (覆盖)
    命令 >> 文件 2>&1
    命令 &>>文件
    把正确输出和错误输出都保存到同一个文件中
    (追加)
    命令>>文件1 2>>文件2 把正确输出追加到文件1中,把错误输出追加到文件2中
    3)输入重定向
    wc [选项] [文件名]
    选项:
    -c  统计字节数
    -w  统计单词数
    -l  统计行数
    

    命令 < 文件:把文件作为命令的输入,统计文件中的字符
    命令 << 标识符:把出现标识符及以前的内容作为输入,统计其中的字符

    4. 管道符

    1)多命令顺序执行
    执行符 格式 作用
    ; 命令1; 命令2 多个命令顺序执行,命令之间没有任何逻辑联系
    && 命令1 && 命令2 逻辑与
    当命令1执行正确,则才会执行命令2
    || 命令1 || 命令2 逻辑或
    当命令1执行错误,则才会执行命令2
    应用场景

    【1】执行某个or几个命令所需的时间计算:
    date; xxx命令; date
    如:
    date; dbupdate; date

    【2】判断某个命令执行是否正确:
    xxx命令 && echo yes || echo no
    如:
    pwd && echo yes || echo no
    password && echo yes || echo no

    2)管道符
    # 命令1的正确输出,作为命令2的操作对象
    命令1 | 命令2
    

    如:
    对上一个命令的查询结果,通过下一个命令进行分屏查看:ll -a /etc/ | more
    查询服务器上连接的用户:netstat -an | grep ESTABLISHED
    统计服务器上连接的用户数:netstat -an | grep ESTABLISHED | wc -l

    5. 通配符

    1)常用通配符
    通配符 作用
    ? 匹配一个任意字符
    * 匹配0个or任意多个任意字符(匹配任何内容)
    [] 匹配中括号中的任意一个字符
    [-] 匹配中括号中的任意一个字符,符号-连接字符的范围
    [^] 逻辑非,匹配非中括号内的一个字符。如:[^0-9]
    2)Bash中的其他特殊符号
    符号 作用
    ' 单引号。在其内所有的特殊符号都无特殊含义,以普通字符处理
    "" 双引号。在其内$可调用变量的值,`可引用命令,\可作转义符
    `` 反引号。其内引用的是系统命令,在Bash中会先执行它
    $() 和反引号作用一致,用来引用系统命令
    # 在Shell脚本中,#开头的行代表注释
    $ 用于调用变量的值
    \ 转义符。跟在\之后的特殊符号将会失去特殊含义,变为普通字符

    相关文章

      网友评论

        本文标题:[LN_06] Shell基础:Bash基本功能(别名|输出重定

        本文链接:https://www.haomeiwen.com/subject/pjbwjqtx.html