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

第9章 Shell基础(2)_Bash基本功能的更多相关文章

  1. 第9章 Shell基础(4)_Bash的运算符及环境变量配置文件

    5. Bash的运算符 5.1 数值运算与运算符 5.1.1 declare 声明变量类型:#declare [+/-] [选项] 变量名 选项 说明 - 给变量设定类型属性 + 取消变量的类型属性 ...

  2. 第9章 Shell基础(3)_Bash的变量

    4. Bash的变量 4.1 用户自定义变量 4.1.1 什么是变量 变量是计算机的内存单元,其中存放的值可以改变.当Shell脚本需要保存一些信息时,如一个文件名或是一个数字,就把它存放在一个变量中 ...

  3. 第9章 Shell基础(1)_Shell简介和脚本执行方式

    1. Shell概述 1.1 Shell简介 (1)Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动.挂起.停止甚至是编 ...

  4. Linux学习笔记(15)shell基础之Bash基本功能

    1 shell概述 shell是一个命令解释器,为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序.用户可以用shell启动.挂起.停止甚至是编写一些程序. shell是一个功能强大 ...

  5. shell基础知识讲解

    第1章 shell基础 1.1 什么叫做shell编程 shell编程也叫做bash高级编程语法 1.2 常见的shell命令解释器 bash            redhat和centos使用 d ...

  6. UNIX环境高级编程--第一章 UNIX基础知识

    第一章 UNIX基础知识 1.2 UNIX体系结构   从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境.我们将这种软件称为内核(kernel),因为 它相对较小,且 ...

  7. CentOS 7.4 初次手记:第三章 CentOS基础了解

    第三章 CentOS基础了解... 36 第一节 语言编码.终端... 36 I 查看语言编码... 36 II Tty?.pts/?. 36 第二节 bash/sh command. 38 I 查找 ...

  8. Shell 基础笔记

    1-22-shell脚本的基础 本节所讲内容:      shell 基本语法      变量 第1章 什么是SHELL?.. 2 1.1 shell编程.. 3 第2章 shell变量及运用.. ...

  9. Shell基础学习小结

    0 shell基础概念 Shell是解释性语言,使用脚本编程语言的好处是,它们多半运行在比编译型语言还高的层级,能够轻易处理文件与目录之类的对象:缺点是它们的效率通常不如编译型语言.Shell命令有本 ...

随机推荐

  1. 聊聊excel生成图片的几种方式

    目录     I:需求.  II:实现思路.     III:实现方式.     IV:优缺点分析.     V:结论.     VI:wps安装与配置. 正文 1.需求:把excel生成等比的图片. ...

  2. 【NLP】Tika 文本预处理:抽取各种格式文件内容

    Tika常见格式文件抽取内容并做预处理 作者 白宁超 2016年3月30日18:57:08 摘要:本文主要针对自然语言处理(NLP)过程中,重要基础部分抽取文本内容的预处理.首先我们要意识到预处理的重 ...

  3. SQL Tuning 基础概述01 - Autotrace的设定

    1.autotrace的设定 SQL> set autotrace Usage: SET AUTOT[RACE] {OFF | ON | TRACE[ONLY]} [EXP[LAIN]] [ST ...

  4. ASP.NET Core 中文文档 第三章 原理(10)依赖注入

    原文:Dependency Injection 作者:Steve Smith 翻译:刘浩杨 校对:许登洋(Seay).高嵩 ASP.NET Core 的底层设计支持和使用依赖注入.ASP.NET Co ...

  5. 一个由Response.Redirect 引起的性能问题的分析

    现象: 某系统通过单点登录(SSO) 技术验证用户登录.用户在SSO 系统上通过验证后,跳转到某系统的主页上面.而跳转的时间很长,约1分钟以上. 分析步骤: 在问题复现时抓取Hang dump 进行分 ...

  6. Kafka消息时间戳(kafka message timestamp)

    最近碰到了消息时间戳的问题,于是花了一些功夫研究了一下,特此记录一下.   Kafka消息的时间戳 在消息中增加了一个时间戳字段和时间戳类型.目前支持的时间戳类型有两种: CreateTime 和 L ...

  7. [转]在 .NET 中远程请求 https 内容时,发生错误:根据验证过程,远程证书无效

    该文原网址:http://www.cnblogs.com/xwgli/p/5487930.html 在 .NET 中远程请求 https 内容时,发生错误:根据验证过程,远程证书无效.   当访问 h ...

  8. asp.net mvc View视图相关

    1.0 @helper语法 @helper语法可以定义可重复使用的帮助器方法: 例如 @helper methodName(type paramName,...){ //todo } 调用:@meth ...

  9. 使用PublishSetting快速在Powershell中登录Azure

    使用Powershell 来管理Azure资源实在是一大快事. 在使用power script之前, 需要先连接到Azure上,其中使用导入PublishSetting文件是最方便的方法. 步骤: 1 ...

  10. 决策树ID3算法的java实现(基本试用所有的ID3)

    已知:流感训练数据集,预定义两个类别: 求:用ID3算法建立流感的属性描述决策树 流感训练数据集 No. 头痛 肌肉痛 体温 患流感 1 是(1) 是(1) 正常(0) 否(0) 2 是(1) 是(1 ...