Linux 学习 (八) Shell
Linux达人养成计划 I 学习笔记
Shell 是什么:
- Shell 是一个命令解释器
- Shell 还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强
Shell 的分类:
- Bourne Shell:主要包括 sh, ksh, Bash(Linux 标准 Shell,与 sh 兼容), psh, zsh
- C Shell:主要包括 csh, tcsh
注:系统支持的Shell类型可以在 /etc/shells 文件查询
脚本执行方式
echo [选项] [输出内容]
- -e:支持反斜线控制的字符转换
| 控制字符 | 作用 |
|---|---|
| \a | 输出警告音 |
| \b | 退格键 |
| \n | 换行符 |
| \r | 回车键 |
| \t | 制表符 |
| \v | 垂直制表符 |
| \0nnn | 按照八进制ASCII码表输出字符,其中0是数字零,nnn是三位八进制数 |
| \xhh | 按照十六进制ASCII码表输出字符,其中hh是两位十六进制数 |
echo -e "\e[1;颜色代号 输出内容 \e[0m"
- 30m 黑色
- 31m 红色
- 32m 绿色
- 33m 黄色
- 34m 蓝色
- 35m 洋红
- 36m 青色
- 37m 白色
脚本
- #!/bin/bash :脚本第一句,不能省略
脚本执行:
- 赋予执行权限,直接运行
- chmod 755 hello.sh
- ./hello.sh
- 通过 Bash 调用执行脚本
- bash hello.sh
Bash 的基本功能
命令的别名与快捷键
alias :查看系统中所有的命令别名
alias 别名= '原命令' :设定命令别名(临时生效)
vi ~/.bashrc :写入变量配置文件(永久生效,需重新登陆或者执行 source ~/.bashrc 命令)
unalias :删除别名(临时生效)
命令生效顺序:
- 第一顺位执行用绝对路径或者相对路径执行的命令
- 第二顺位执行别名
- 第三顺位执行 Bash 的内部命令
- 第四顺位执行按照 $PATH 环境变量定义的目录查找顺序找到的第一个命令
常用快捷键:
- ctrl+c :强制终止当前命令
- ctrl+l :清屏,等于 clear 命令
- ctrl+a :光标移动到命令行首
- ctrl+e :光标移动到命令行尾
- ctrl+u :从光标所在位置删除到行首
- ctrl+z :把命令放入后台
- ctrl+r :在历史命令中搜索
历史命令
history [选项] [历史命令保存文件]
- -c:清空历史命令
- -w:把缓存中的历史命令写入历史命令保存文件 ~/.bash_history
历史命令默认会保存1000条,可以在环境变量配置文件 /etc/profile 中进行修改
历史命令的调用:
- 使用上、下箭头调用以前的历史命令
- 使用 "!n" 重复执行第 n 条历史命令
- 使用 "!!"" 重复执行上一条命令
- 使用 "!字符串" 重复执行最后一条以该字符串开通的命令
在 Bash 中,按 "Tab" 键就会自动进行补全
输出重定向
标准输入输出:
| 设备 | 设备文件名 | 文件描述符 | 类型 |
|---|---|---|---|
| 键盘 | /dev/stdin | 0 | 标准输入 |
| 显示器 | /dev/sdtout | 1 | 标准输出 |
| 显示器 | /dev/sdterr | 2 | 标准错误输出 |
输出重定向:
| 类型 | 符号 | 作用 |
|---|---|---|
| 标准输出重定向 | 命令 > 文件 | 以覆盖的方式,把命令的正确输出输出到指定的文件或设备当中 |
| - | 命令 >> 文件 | 以追加的方式,把命令的正确输出输出到指定的文件或设备当中 |
| 标准错误输出重定向 | 错误命令 2> 文件 | 以覆盖的方式,把命令的错误输出输出到指定的文件或设备当中 |
| - | 错误命令 2>> 文件 | 以追加的方式,把命令的错误输出输出到指定的文件或设备当中 |
| 正确输出和错误输出同时保存 | 命令 > 文件 2>&1 | 以覆盖的方式,把正确输出和错误的输出都保存到同一个文件中 |
| - | 命令 >> 文件 2>&1 | 以追加的方式,把正确输出和错误的输出都保存到同一个文件中 |
| - | 命令 &> 文件 | 以覆盖的方式,把正确输出和错误的输出都保存到同一个文件中 |
| - | 命令 &>> 文件 | 以追加的方式,把正确输出和错误的输出都保存到同一个文件中 |
| - | 命令 >> 文件1 2>> 文件2 | 把正确的输出追加到文件1中,把错误的输出追加到文件2中 |
注:把命令结果输出到 /dev/null 相当于丢弃输出结果
输入重定向
wc [选项] [文件名]
- -c :统计字节数
- -w :统计单词数
- -l :统计行数
- ctrl + d :得到统计结果
| 符号 | 作用 |
|---|---|
| 命令 < 文件 | 把文件作为命令的输入 |
| 命令 << 标识符 ... 标识符 | 把标识符之间内容作为命令时的输入 |
管道符
多命令顺序执行:
| 多命令执行符 | 格式 | 作用 |
|---|---|---|
| ; | 命令1 ; 命令2 | 多个命令顺序执行,命令之间没有任何逻辑关系 |
| && | 命令1 && 命令2 | 当命令1正确执行,则命令2才会执行 |
| || | 命令1 || 命令2 | 当命令1执行不正确,则命令2才会执行 |
命令1 | 命令2 :命令1的正确输出作为命令2的操作对象
通配符
| 通配符 | 作用 |
|---|---|
| ? | 匹配一个任意字符 |
| * | 匹配0个或任意多个任意字符,也就是可以匹配任何容 |
| [] | 匹配中括号中任意一个字符 |
| [-] | 匹配中括号中任意一个字符,-代表一个范围 |
| [^] | 匹配不是中括号内的一个字符 |
其他特殊符号:
| 符号 | 作用 |
|---|---|
| '' | 在单引号中所有的特殊符号都没有特殊含义 |
| "" | 在双引号中特殊符号都没有特殊含义,但是"$", "`", ""例外 |
| `` | 反引号括起来的内容是系统命令,在 Bash 中会先执行它。和$()作用一样,不过推荐使用$(),因为反引号非常容易看错 |
| $() | 和反引号作用一样,用来引用系统命令 |
| # | #开头的行代表注释 |
| $ | 用来调用变量的值 |
| \ | 转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符 |
Linux 学习 (八) Shell的更多相关文章
- (原创)鸟哥linux学习script shell相关笔记
在使用鸟哥linux进行script shell学习的过程中碰到一些不太明白的知识点,在这里进行一些记录 1. [root@www scripts]# vi sh03.sh #!/bin/bash # ...
- (零)linux 学习 -- 从 shell 开始
The Linux Command Line 读书笔记 - 部分内容来自 http://billie66.github.io/TLCL/book/chap02.html 文章目录 前言 什么是 she ...
- linux 学习10 shell 基础
10.1 Shell概述 .Shell是什么 Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动.挂起.停止甚至是编写一 ...
- Linux学习——自定义shell终端提示符
转自:here 我使用的Linux发行版是LinuxMint 17.2 Rafaela,默认情况下Terminal中的shell提示包括了用户名.主机名.当前目录(绝对路径)和提示符.这样会导致当进入 ...
- linux 学习随笔-shell基础知识
1:用户的shell历史命令保存在home/username/.bash_history中 #!! 执行用户的上一条命令 #!pw 执行命令历史中最近一次以pw开头的命令 2:'*'来匹配零或多个 ...
- Linux学习之Shell编程基础
转自:http://my.oschina.net/itblog/blog/204410 1 语法基本介绍1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来 ...
- 【Linux学习八】脚本编程
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 一.多层bash#.和source都是当前bash [root@nod ...
- linux学习总结----shell编程
## 环境变量 ## 全局变量 ``` 常见的全局环境变量 PATH 指令的搜索路径 HOME 用户的家目录 LOGNAME 登录名 SHELL 脚本的类型 使用全局环境变量 echo $PATH 自 ...
- (六)linux 学习 -- 从 shell 眼中看世界
The Linux Command Line 读书笔记 - 部分内容来自 http://billie66.github.io/TLCL/book/chap08.html 文章目录 字符展开 `*` 路 ...
随机推荐
- python爬虫之静态网页——全国空气质量指数(AQI)爬取
首先爬取地址:http://www.air-level.com/ 利用的python库,最近最流行的requests,BeautifulSoup. requests:用于下载html Beautifu ...
- 虚拟机下centos7.x简易命令大全与试玩体验
OS: liunxversion: centos7.xdate: 2019-01-18 1. cd / : 进入服务器根目录2. cd . ...
- BIM特点及格式文件说明
BIM行业是建筑与IT结合而形成的一个新兴行业,既然能说是行业,说明它包含的内容非常丰富,懂一点和完全懂是两码事,就好像一滴水和一片大海的范围一样.现在国内有很多高校开设了BIM专业,并对口招收了学生 ...
- 探究高级的Kotlin Coroutines知识
要说程序如何从简单走向复杂, 线程的引入必然功不可没, 当我们期望利用线程来提升程序效能的过程中, 处理线程的方式也发生了从原始时代向科技时代发生了一步一步的进化, 正如我们的Elisha大神所著文章 ...
- 数据库连接不上的原因以及springBoot的ioc无法自动注入
无法自动注入解决了,数据池的连接还有问题: 错误原因1: :数据库用的是Mysql8版本,以前的配置mysql驱动包却是5.1.37版本.只需修改驱动包为8.0.11版本即可. <!-- mys ...
- 一天一个Linux命令--find
文件查找:(以find为主) which:查找命令字所在的位置 locate:模糊匹配(只要包含关键字的文件都查找出来) 不是实时的,基于数据库查找, updatedb升级loca ...
- 什么是tomcat集群?
什么是tomcat集群? 利用nginx对请求进行分流,将请求分配给不同的tomcat去处理,减少每个tomcat的负载量,提高服务器的响应速度. 目标 实现高性能负载均衡的tomcat集群. 工具 ...
- CentOS7.2重置root密码的处理方法
第一个里程碑 --在启动GRUB菜单中选择编辑选项,按键 "e" 进入编辑; 第二个里程碑 -- 大约在第16行找到 "ro" 将 "ro" ...
- 推荐一套Angular2的UI模板
Core UI Core UI是一款基于Bootstrap4的UI模板,有html.angular2,react和vue版.我是在使用angular2版本中发现其项目结构不符合angular风格指南推 ...
- Mysql数据中Packet for query is too large错误的解决方法
有时,程序在连接mysql执行操作数据库时,会出现如下类似错误信息: Packet for query is too large (4230 > 1024). You can change th ...