第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
第9章 Shell基础(2)_Bash基本功能的更多相关文章
- 第9章 Shell基础(4)_Bash的运算符及环境变量配置文件
5. Bash的运算符 5.1 数值运算与运算符 5.1.1 declare 声明变量类型:#declare [+/-] [选项] 变量名 选项 说明 - 给变量设定类型属性 + 取消变量的类型属性 ...
- 第9章 Shell基础(3)_Bash的变量
4. Bash的变量 4.1 用户自定义变量 4.1.1 什么是变量 变量是计算机的内存单元,其中存放的值可以改变.当Shell脚本需要保存一些信息时,如一个文件名或是一个数字,就把它存放在一个变量中 ...
- 第9章 Shell基础(1)_Shell简介和脚本执行方式
1. Shell概述 1.1 Shell简介 (1)Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动.挂起.停止甚至是编 ...
- Linux学习笔记(15)shell基础之Bash基本功能
1 shell概述 shell是一个命令解释器,为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序.用户可以用shell启动.挂起.停止甚至是编写一些程序. shell是一个功能强大 ...
- shell基础知识讲解
第1章 shell基础 1.1 什么叫做shell编程 shell编程也叫做bash高级编程语法 1.2 常见的shell命令解释器 bash redhat和centos使用 d ...
- UNIX环境高级编程--第一章 UNIX基础知识
第一章 UNIX基础知识 1.2 UNIX体系结构 从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境.我们将这种软件称为内核(kernel),因为 它相对较小,且 ...
- CentOS 7.4 初次手记:第三章 CentOS基础了解
第三章 CentOS基础了解... 36 第一节 语言编码.终端... 36 I 查看语言编码... 36 II Tty?.pts/?. 36 第二节 bash/sh command. 38 I 查找 ...
- Shell 基础笔记
1-22-shell脚本的基础 本节所讲内容: shell 基本语法 变量 第1章 什么是SHELL?.. 2 1.1 shell编程.. 3 第2章 shell变量及运用.. ...
- Shell基础学习小结
0 shell基础概念 Shell是解释性语言,使用脚本编程语言的好处是,它们多半运行在比编译型语言还高的层级,能够轻易处理文件与目录之类的对象:缺点是它们的效率通常不如编译型语言.Shell命令有本 ...
随机推荐
- MVC5 网站开发之六 管理员 2、添加、删除、重置密码、修改密码、列表浏览
目录 奔跑吧,代码小哥! MVC5网站开发之一 总体概述 MVC5 网站开发之二 创建项目 MVC5 网站开发之三 数据存储层功能实现 MVC5 网站开发之四 业务逻辑层的架构和基本功能 MVC5 网 ...
- CRL2.3(ORM开发框架)源码github发布
简介 CRL是一个面向对象的轻便型ORM业务框架 此框架追求的是使用简单,方便,因此设计为: 不需要代码生成器生成对象类,按标准方式写即可 依托lambda,实现语法解析转换为等效的SQL查询,完全以 ...
- 剖析并利用Visual Studio Code在Mac上编译、调试c#程序
0x00 前言 一周多以前的微软的Build大会上,微软发布了一个让很多人眼前一亮的工具,也是本文的主角——Visual Studio Code.很多使用Windows的朋友都很高兴,认为又多了一个很 ...
- nginx简易教程
概述 什么是nginx? Nginx (engine x) 是一款轻量级的Web 服务器 .反向代理服务器及电子邮件(IMAP/POP3)代理服务器. 什么是反向代理? 反向代理(Reverse Pr ...
- angular2 问题请教
angular2 通过http服务进行对后端api的远程调用? 我简单的尝试了一下,发现了几个问题,记录一下,以方便查找问题. angular2 http服务的跨域问题?跨域本身就是一个很复杂的问题, ...
- MySql Access denied for user 'root'@'localhost' (using password:YES) 解决方案
关于昨天下午说的MySQL服务无法启动的问题,解决之后没有进入数据库,就直接关闭了电脑. 今早打开电脑,开始-运行 输入"mysql -uroot -pmyadmin"后出现以下错 ...
- 关于Net Core 多平台程序的Framework问题
关于Net Core 多平台程序的Framework问题: (本文只是推测,欢迎大家指正) 最近在研究NetCore的多平台问题,起因是有一个Winform的项目,由于跨平台的要求,想改为NetCor ...
- 【转载】PHP PSR-1 基本代码规范(中文版)
基本代码规范 本篇规范制定了代码基本元素的相关标准, 以确保共享的PHP代码间具有较高程度的技术互通性. 关键词 "必须"("MUST")."一定不可 ...
- python爬虫成长之路(一):抓取证券之星的股票数据
获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一.鉴于此,我拾起了Python这把利器,开启了网络爬虫之路. 本篇使用的版本为python3.5,意在抓取证券之星上当天所 ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.5.2
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...