• 第9章 Shell基础(2)_Bash基本功能


    3. Bash的基本功能

    3.1 历史命令与命令补全

    (1)历史命令#history [选项] [历史命令保存文件]

      ①选项:-c:清空历史命令;

          -w:把缓存中的历史命令写入文件~/.bash_history

    (2)历史命令的保存:默认会保存1000条,可修改环境变量配置文件/etc/profile的HISTSIZE变量中的值。

    (3)历史命令的调用

      ①使用上、下箭头调用以前的历史命令

      ②使用“!n”重复执行第n条历史命令

      ③使用“!!”重复执行上一条命令

      ④使用“!字串”重复执行最后一条以该字串开头的命令。

    (4)命令与文件补全

      在Bash中,命令与文件补全是非常方便与常用的功能,只要在输入命令或文件时,按“Tab”键就会自动进行补全

    3.2 命令别名与常用快捷键

    3.2.1 命令别名

    (1)命令别名:

      ①设定命令的别名:#alias 别名='原命令'

      ②查询命令别名:#alias

    (2)命令执行时的顺序

      ①第1顺位执行用绝对路径或相对路径执行的命令

      ②第2顺位执行别名

      ③第3顺位执行Bash的内部命令

      ④第4顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令。

    (3)让别名永久生效:vi /root/.bashrc  //让root用户永久生效。

    (4)删除别名:#unalias 别名

    3.2.2 Bash常用快捷键

    快捷键

    作用

    Ctrl+A

    把光标移动到命令行开头。如果我们输入的命令过长,想要把光标移动命令行开头时使用

    Ctrl+E

    把光标移动到命令行结尾

    Ctrl+C

    强制终止当前命令

    Ctrl+L

    清屏,相当于clear命令

    Ctrl+U

    删除或剪切光标之前的命令。输入了一行很长的命令,不用使用退格键一个一个字符的删除,使用这个快捷键会更别方便。

    Ctrl+K

    删除或剪切光标之后的内容

    Ctrl+Y

    粘贴Ctrl+U或Ctrl+K剪切的内容

    Ctrl+R

    在历史命令中搜索,按下Ctrl+R之后,就会出现搜索界面,只要输入搜索内容,就会从历史命令中搜索

    Ctrl+D

    退出当前终端

    Ctrl+Z

    暂停,并放入后台。这个快捷键牵扯工作管理的内容。在后面的系统管理章节中详细介绍

    Ctrl+S

    暂停屏幕输出

    Ctrl+Q

    恢复屏幕输出

    3.3 输入输出重定向

    3.3.1 标准输入输出

    设备

    设备文件名

    文件描述符

    类型

    键盘

    /dev/stdin

    0

    标准输入

    显示器

    /dev/stdout

    1

    标准输出

    显示器

    /dev/stderr

    2

    标准错误输出

    3.3.2 改变标准输入、标准输出、标准错误的方向

    类型

    操作符

    用途

    重定向标准输入

    将命令中接收输入的途径由默认的键盘更改为指定的文件

    重定向标准输出

    >或

    1>

    以覆盖的方式,将命令的执行的正确结果输出到指定的文件或设备中,而不是直接显示在屏幕上。

    (其中的1表示将正确的结果输出到指定的文件)

    >>或

    1>>

    以追加的方式,将命令执行的正确结果输出到指定文件

    重定向标准错误

    2>

    清空指定文件的内容,并将标准错误信息保存到该文件(其中的2表示命令结果出错时,输出到指定文件!)

    2>>

    将标准错误信息追加输出到指定文件中(注意2和>>之间没有空格)

    重定向标准输出和标准错误

    &>

    将标准输出、标准错误的内容全部保存到指定文件中,而不是直接显示在屏幕上(其中的&表示正确和错误结果的输出)

    注意:上述操作符可以进行组合如:

    #bash hello.sh 1>>a.txt 2>&1 (相于#bash hello.sh &>> a.txt  //将执行hello.sh脚本时出现的正确或错误结果都保存在a.txt文件里。)

    #ls &> /dev/null  //表示不需要命令的结果,直接丢垃圾箱去这种格式可以用于丢弃一些不关心的执行结果。

    #bash hello.sh >>a.txt 2>> b.txt  //将正确的保存在a.txt,错误结果保存在b.txt

    3.3.3 举例说明

    (1)统计文件:#wc [选项] [文件名]

      ①选项:-c:统计字节数;-w:统计单词数;-l:统计行数。

     

    3.4 多命令顺序执行与管道符

    3.4.1 多命令顺序执行

    (1)多命令执行符

    多命令执行符

    格式

    作用

    ;(分号)

    命命1; 命令2

    多个命令顺序执行,命令之间没有任何逻辑联系

    如#ls; cd/user;date

    &&

    命令1 && 命令2

    逻辑与

    当命令1正确执行,则命令2才会执行

    当命令1执行不正确,则命令2不会执行

    ||

    命令1 || 命令2

    逻辑或

    当命令1执行不正确,则命令2才会执行

    当命令1正确执行,则命令2不会执行

    (2)举例

      ①复制文件:#dd if=输入文件 of=输出文件 bs=字节数 count=个数

        其中if=输入文件:指定源文件或源设备。of=输出文件,指定目标文件或目标设备。bs=字节数,指定一次输入/输出多少个字节,即把这些字节看做一个数据块。count=个数,指定输入/输出多少个数据块。

        #date; dd if=/dev/zero of=/root/testfile bs=1k count=100000;date //创建100M的测试文件,并记录起始与结束的时间。

      ②#./configure && make && make install //只有前一个命令正确,下个命令才会被执行。

      ③判断命令是否被正确执行:#命令 && echo yes || echo no

    3.4.2 管道符:|

    (1)格式:#命令1 | 命令2    //命令1的正确输出作为命令2的操作对象

    (2)注意事项:

      ①如果命令出错或没有输出结果,则不能作为命令2的操作对象

    (3)grep 命令:#grep [选项] “搜索内容”

      ①在文件中使用正则表达式搜索文本,并把匹配的行打印出来。

      ②选项:-i:忽略大小写;-n:输出行号;-v反向查找;--color=auto 搜索出的关键字用颜色显示。

    (3)应用举例

      ①分屏显示:# ll -a /etc/ | more

      ②查询所有己经创建的网络连接:#netstat -an | grep "ESTABLISHED"或#netstat -an | grep ESTABLISHED

    3.5 通配符与其他特殊符号

    3.5.1 通配符

    (1)常用通配符

    通配符

    作用

    ?

    匹配一个任意字符

    *

    匹配0个或任意多任意字符,也就是可以匹配任何内容

    []

    匹配中括号中任意一个字符。例如:[abc]代表一定匹配一个字符,或者是a,或者是b,或者是c

    [-]

    匹配中括号中任意一个字符,-代表一个范围。例如:[a-z]代表匹配一个小写字母。

    [^]

    逻辑非,表示匹配不是中括号内的一个字符。例如:[^0-9]代表匹配一个不是数字的字符。

    (2)应用举例

     

    3.5.2 Bash中其他特殊符号

    (1)其他特殊符号

    通配符

    作用

    ''

    单引号。在单引号中所有的特殊符号,如“$”和“`”(反引号)都没有特殊含义

    ""

    双引号。在双引号中特殊符号都没有特殊含义,但是“$”、“`”(反引号)和“”是例外,拥有“调用变量的值”、“引用命令”和“转义符”的特殊含义。

    ``

    反引号,位于ESC按键的下面。反引号括起来的内容是系统命令,在Bash中会先执行它。和$()作用一样,不过推荐使用$(),因为反引号非常容易看错。

    $()

    和反引号作用一样,用来引用系统命令

    #

    在Shell脚本中,以#开头的行代表注释

    $

    用于调用变量的值,如需要调用变量name的值,需要用$name的方式得到变量的值。

    转义符,跟在之后的特殊符号将失去特殊含义,变为普通字符。如$将输出“$”符号,而不当做是变量引用。

    (2)应用举例

      ①单引号与双引号

    #name=sc
    
    #echo '$name'     //输出:$name
    
    #echo "$name"     //输出:sc  ==》echo $name
    
    #echo  '$(date)'  //输出:$(date)
    
    #echo  "$(date)"  //输出当前日期,如2016年 12月 31日 星期六 00:26:45 CST

    ②反引号与$()

    #echo `ls` ==> echo $(ls);输出ls命令的结果
    
    #echo  ls  ==>输出:ls
  • 相关阅读:
    Repeater自定义翻页 存储过程实现
    Redis常用命令
    常用的富文本框插件FreeTextBox、CuteEditor、CKEditor、FCKEditor、TinyMCE、KindEditor ;和CKEditor实例
    网站转接支付宝解决方案
    如何有效抓取SQL Server的BLOCKING信息
    SVN 冲突文件详解
    JavaScript可否多线程? 深入理解JavaScript定时机制
    MS SQL Server:分区表、分区索引详解
    支付宝外部商家购物流程
    排查数据库性能的常用sql语句
  • 原文地址:https://www.cnblogs.com/5iedu/p/6240845.html
Copyright © 2020-2023  润新知