第10章:Shell基础
一、shell概述
1、介绍与功能
(1)shell是命令解释器,是用户与内核交互的图形化界面
(2)shell是一个功能强大的编程语言,易编写、易调试、灵活性强。在shell中可以直接调用linux中的命令。
2、分类Shell的两种主要语法类型有Bourne和C,这两注语法彼此不兼容。Bourne家族主要包括:sh、ksh、Bash、psh、zsh;C家族主要包括:csh、tcsh。
注:主流shell是Bash。
3、Linux中支持的shell/etc/shells文件中有Linux默认支持的shell类型
二、shell脚本的执行方式(shell脚本是怎么运行的?)
1、命令:echo 选项 内容-e 支持反斜杠\控制的字符转换
2、第一个脚本vi hello.sh
开始写脚本:#!/bin/bash //此句话的作用是:说明hello.sh是一个Bash脚本程序echo -e "Hello World!\n"
保存退出:wq
3、执行脚本
(方法1)修改脚本的权限755chmod 755 hello.sh./hello.sh
(方法2)直接用Bash执行bash hello.sh
注解: 安装dos2unix yum -y install dos2unix
三、bash的基本功能
1、history 选项 历史命令保存文件-c 清空所有的命令
-w 把缓存中的历史命令写入到历史命令保存文件~/.bash_history
注:默认保存1000条历史命令,可以在环境变量配置文件/etc/profile中修改。
2、历史和文件补全(Tab键)
3、快捷键
Ctrl + a 移动光标到行首
Ctrl + e 移动光标到行尾Ctrl + c 强制终止
Ctrl + l 清屏Ctrl + u 删除/剪切光标之前的行内容
Ctrl + k 删除/剪切光标之后的行内容
Ctrl + y 粘贴4、命令的别名(给命令起了一个小名)alias 查看别名alias vi = "vim"
注1:执行命令顺序优先级:绝对路径 > 别名 > Bash内部命令 > 环境变量$PATH
注2:让别名永久生效vi /root/.bashrc删除别名unalias 别名
5、输入输出重定向
【标准输入、输出】
输出重定向 > 、 >>
输入重定向 < 、<<
命令: wc 选项 文件名
选项 -c 统计字节数-w 统计单词数-l 统计行数
例:wc -l < oldboy.txt 把文件oldboy.txt作为命令wc -l的输入" 命令 << " 的用法更加少见,见下图:
6、多命令顺序执行;&&||dd命令:主要用于磁盘复制dd if=输入文件 of=输出文件 bs=字节数 count=个数
if=输入文件 指定源文件或源设备
of=输出文件 指定目标文件或目标设备
bs=字节数 指定一次输入或输出多少个字节,即一个数据块
count=个数 指定输入或输出多少个数据块
例,见下图:
7、管道符 |命令1 | 命令2
解释:命令1的结果作为命令2的输入grep 选项 文件/目录
选项:-v 反向查找
-n 输出行号
-i 忽略大小写
8、通配符和其它特殊符号
$符号:可以调用变量的值。如 name=SC; echo $name;单引号''、双引号""的相同点、不同点:相同点:引号中都可以包含字符串,为了把字符串当做一个整体来看待不同点:单引号中的内容,会当做本身来看待,特殊字符在单引号中会失去含义; 双引号中的特殊符号不会失去特殊含义。
例,见下图:
反引号`` 与 $() :会告诉系统,反引号中的内容是系统命令abc=`date`echo $abc
四、bash的变量
变量设置规则
(1)在Bash中,默认情况下变量类型是“字符串”,如果要进行数值运算,要转换成“数值”类型。
(2)如果把变量的结果作为变量值赋值给变量,则用下面的格式:$(变量名)或`变量名`
(3)变量的叠加:格式-- "$变量名" 或者 ${变量名}
(4)变量赋值时用等号连接,中间不能有空格;若变量的值中间有空格,要用单引号或者双引号
变量分类:
1、用户自定义的变量:举例子说明name=jawee 定义并初始化变量echo $name 变量的调用name=guo"$name" 或 name=guo${name} 变量叠加echo $name 调用本地变量set 查看所有的变量unset 变量名 :删除本地变量
本地变量和环境变量的区别:作用域的大小--->用户自定义变量只在当前shell中生效;而环境变量在当前shell和子shell中生效,如果把环境变量写入配置文件,那么会永久生效。
2、环境变量(一部分是系统自己定义好的,另外一部分也可以自己定义)export age=18 定义环境变量用export声明export name 把上面的本地变量转为环境变量echo $age enho $name 调用环境变量env 查询环境变量unset 删除环境变量
系统常见的2个环境变量:
(1)PATH 系统查询命令的路径
(2)PS1 定义系统提示符的变量,看下图:
3、位置参数变量
①$n: n表示的是数字,0表示脚本的名称,1-9用$9表示,10用${10}表示,例子:
vim add.sh 编辑一个加法脚本#!/bin/bashnum1=$1num2=$2sum=$(($num1+$num2))echo "sum = num1+num2 = $sum"
执行脚本:chmod 755 add.sh./add.sh 100 1
②$#:返回参数的总个数
③$*与$@,相同点:都表示所有参数; 不同点:
$*:把参数看做一个整体
$@:把参数独立看待
举例子:
vim canshu.sh#!/bin/bashfor i in "$*"do echo $idonefor y in "$@"doecho $ydone
:wqchmod 755 canshu.sh
./canshu.sh4、预定义变量
①$? : 最后一次执行命令的返回状态:如果正确执行,返回为0;如果不正确执行,返回非0。用于:&& || 判断两边的执行结果是否正确
②$$ : 当前进程的进程号PID
③$! : 后台运行最后一个进程的进程号PID5、接受键盘输入:read
read 选项 变量名
选项:-p 在等待read输入时,输出提示信息-t 指定等待时间-n read命令只接受指定的字符数,就会执行-s 隐藏输入的数据,适合保密
例:read -p "please input name:" -t 100 -n 10 -s name echo $name
**数值运算与运算符**数值运算符号:+-*/等
declare 声明变量的类型declare [+-] [选项] [变量名]- 设定变量类型+ 取消变量类型-i 设定为整数类型-x 设置为环境变量-p 显示变量类型
例:a=1 b=2
几种方式:c=$a+$b 输出结果:1+2d=$(($a+$b)) 输出结果:3f=$[$a+$b] 输出结果:3e=$(expr $a + $b) 输出结果:3 注:运算符+两边的空格不能省略**变量测试与内容替换**
环境变量配置文件(简介和作用)
sorce命令:sorce 配置文件 或 . 配置文件 作用:让修改完的配置文件不用注销重启直接生效系统中有下面一组环境变量配置文件:/etc/profile/etc/profile.d/*sh~/.bash_profile~/.bashrc/etc/bashrc
注:/etc/的环境变量配置文件是系统中所有用户都生效,~/的环境变量配置文件只针对于某个用户生效(~/家目录)
注:环境变量可以写在上面的配置文件中,写在后面的配置文件中会覆盖前面的配置文件中的环境变量,除非用变量叠加。/etc/profile 登陆的用户/etc/bashrc 不登录的用户
其他配置文件和登录信息
注销时生效的环境变量配置文件 ~/.bash_logout
历史命令配置文件 ~/bash_history
Shell登录信息
第10章:Shell基础相关推荐
- Linux(b站视频兄弟连)自学笔记第十一章——shell编程
Linux(b站视频兄弟连)自学笔记第十一章--shell基础 正则表达式 字符截取命令 cut命令 printf命令 awk命令 sed命令 字符处理命令 判断条件 流程控制 if语句 case语句 ...
- 第 10 章 树结构的基础部分
第 10 章 树结构的基础部分 1.二叉树 1.1.为什么需要二叉树 1.1.1.数组存储方式的分析 优点: 通过下标方式访问元素, 速度快. 对于有序数组, 还可使用二分查找提高检索速度 缺点: 如 ...
- 计算机绘图图层基本线性,计算机绘图基础-第10章 尺寸标注.ppt
计算机绘图基础-第10章 尺寸标注 第10章 尺 寸 标 注 10.1 尺寸标注基础 10.1.1 尺寸标注的规则 10.1.2 尺寸的组成 10.1.3 尺寸标注的基本类型 AutoCAD提供了四种 ...
- 史上最牛最强的linux学习笔记 10.shell基础
史上最牛最强的linux学习笔记 10.shell基础 写在最前面: 本文是基于某站的视频学习所得,第一个链接如下: https://www.bilibili.com/video/BV1mW411i7 ...
- 第10章 基础API与常见算法
第10章 基础API与常见算法 学习目标 了解数学相关API 了解日期时间API 了解系统类API 掌握数组基础算法 掌握数组工具类的使用 熟练掌握String类的API 熟练掌握StringBuil ...
- 沈超+shell课件_[Linux教程 李明 沈超 兄弟连]10.4.4 Shell基础-Bash变量-预定义变量.ppt...
[Linux教程 李明 沈超 兄弟连]10.4.4 Shell基础-Bash变量-预定义变量 第十讲 Shell基础 主讲人:沈超(/lampsc) 交流论坛: 课程大纲 10.1 Shell概述 1 ...
- 计算机基础知识ppt课件10页,2019第 1 章 计算机基础知识ppt课件.ppt
<2019第 1 章 计算机基础知识ppt课件.ppt>由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关<2019第 1 章 计算机基础知识ppt课件.ppt&g ...
- 非零基础自学Java (老师:韩顺平) 第10章 面向对象编程(高级部分) 10.6 抽象类
非零基础自学Java (老师:韩顺平) ✈[[零基础 快速学Java]韩顺平 零基础30天学会Java] 第10章 面向对象编程(高级部分) 文章目录 非零基础自学Java (老师:韩顺平) 第10章 ...
- python入门学习笔记——详细基础知识篇(第10章 正则表达式(重点)与JSON)
第10章 正则表达式(重点)与JSON 初识正则表达式 元字符与普通字符 字符集 概括字符集 数量词 贪婪与非贪婪 匹配0次1次或者无限多次 边界匹配符(^ .$) 组 匹配模式参数 re.sub正则 ...
- Hadoop基础教程-第10章 HBase:Hadoop数据库(10.1 NoSQL介绍)(草稿)
第10章 HBase:Hadoop数据库 10.1 NoSQL介绍 10.1.1 NoSQL简介 随着互联网技术(互联网+,物联网)发展,特别是大数据时代到来,我们需要存储处理更多数据,这种需求远远超 ...
最新文章
- 鸿蒙申请敏感应用怎么选择,申请鸿蒙系统有一个应用选择怎么选择呢
- python数据处理实例-Python数据分析实例操作
- ssential Diagram for Windows FormsC#/winForm类似visio的拓扑图节点连线控件免费下载
- 导入jar包到Maven本地仓库(maven install jar)
- c++读二进制文件结束的时候总会异常_python专题文件操作
- Openshift 4.4 静态 IP 离线安装系列:准备离线资源
- 7.2版本中安装的插件都是本插件未被启用???
- unserialize用法
- 浅谈面粉厂防爆的重要性及措施(转)
- python调用通达信公式_python读取通达信公式结果
- 泛微oa连接mysql,泛微OA 数据库维护笔记(e-cology)
- matlab给函数积分,MATLAB函数积分
- iOS动画之CAAnimation
- ldd -r xxx.so命令 undefined symbol即错误定位c++filt
- Knowledge Tracing 资源帖2
- 保研面试常考题总结(自用 不断更新)
- 服务器怎么安装debian系统,图解Debian10Linux系统的安装步骤
- Win7重装系统遇到错误怎么办?
- android系统模拟麦克风,在Android模拟器中使用麦克风(Java Android初学者)
- learining user's intrinsic and extrinsic interests for point of interest recommendation IJCAI17
热门文章
- 基于外卖评论的舆情风控
- tomcat架构分析 (Session管理)【转】
- 剖析Elasticsearch集群系列第一篇 Elasticsearch的存储模型和读写操作
- 【风险管理】策略开发流程
- 【大数据-Hadoop】Spark
- epoll与select区别
- 元宇宙企业大比拼:云宇宙数据中台:iwemeta.com
- AIADATA 独家深度解密:百度XuperChain开源区块链基础平台
- http://nlp.stanford.edu:8080/parser/index.jsp
- 从0到1建立一张评分卡之数据预处理