shell入门

一、SHELL 快速入门
1、shell的定义
在计算机科学中,Shell就是一个命令解释器。shell就是在操作系统和应用程序之间的一个命令翻译工具。
2、shell的分类
基本上shell分两大类:图形界面shell和命令行shell
图形界面shell
图形界面shell就是我们常说的桌面  
命令行式shell
windows系统:
cmd.exe 命令提示字符
linux系统:
sh / csh / ksh / bash / …
查看系统shell信息
查看当前系统的shell类型:echo $SHELL
查看当前系统环境支持的shell:cat /etc/shells
3、shell脚本
shell使用方式
手工方式:
手工敲击键盘,在shell的命令行输入命令,按Enter后,执行通过键盘输入的命令,然后shell返回并显示命令执行的结果。如:echo “nihao”
重点:逐行输入命令、逐行进行确认执行

脚本方式:
就是说我们把手工执行的命令a,写到一个脚本文件b中,然后通过执行脚本b,达到执行命令a的效果.

shell脚本定义
当可执行的Linux命令或语句不在命令行状态下执行,而是通过一个文件执行时,我们称文件为shell脚本。
shell脚本示例
现在我们来使用脚本的方式来执行以下

#!/bin/bash
#这是临时shell脚本
echo 'nihao'
echo 'itcast'

二、SHELL基础知识
1、shell脚本
1.1、脚本的创建:
1、创建脚本的常见编辑器是 vi/vim
2、注释:
2.1、单行注释:除了首行的#不是注释外,其他所有行内容,只要首个字符是#,那么就表示该行是注释
2.2、多行注释:多行注释方法::<<! … !
2、变量
2.1 本地变量
本地变量就是:在当前系统的某个环境下才能生效的变量,作用范围小。
本地变量包含两种:普通变量和命令变量
2.1.1普通变量:
普通变量的定义方式有如下三种,接下来我们就分别说一下这三种方式:

方式一:
变量名=变量值 (变量值为数值时使用)
重点:
变量值必须是一个整体,中间没有特殊字符
方式二:
变量名=‘变量值’
重点:
我看到的内容,我就输出什么内容
方式三:
变量名=“变量值” # 一般使用这种格式
重点:
如果变量值范围内,有可以解析的变量A,那么首先解析变量A,将A的结果和其他内容组合成一个整体,重新赋值给变量B
习惯:
数字不加引号,其他默认加双引号
2.1.2命令变量:
命令变量有两种定义方式,接下来我们就来介绍一下这两种方式
定义方式一(不推荐使用):
变量名=命令
注意:
` 是反引号

定义方式二(推荐使用):
变量名=KaTeX parse error: Expected 'EOF', got '&' at position 18: …令) 如果有多个命令,用;或者&̲分割。如:变量名=(pwd;ls&clear)
执行流程:
1、执行`或者$()范围内的命令
2、将命令执行后的结果,赋值给新的变量名A
2.2 全局变量
在这里插入图片描述
查看全局变量命令
可以通过命令查看环境变量
env 只显示全局变量
定义全局变量
方法一:
变量=值
export 变量
方法二:(最常用)
export 变量=值
1.2、脚本的执行
shell执行的方式
Shell脚本的执行通常可以采用以下几种方式
bash /path/to/script-name 或 /bin/bash /path/to/script-name(强烈推荐使用)
脚本开发规范:
1、脚本命名要有意义,文件后缀是.sh
2、脚本文件首行是而且必须是脚本解释器
#!/bin/bash
3、脚本文件解释器后面要有脚本的基本信息等内容
脚本文件中尽量不用中文注释;
尽量用英文注释,防止本机或切换系统环境后中文乱码的困扰
常见的注释信息:脚本名称、脚本功能描述、脚本版本、脚本作者、联系方式等
4、脚本文件常见执行方式:bash 脚本名
5、脚本内容执行:从上到下,依次执行
6、代码书写优秀习惯;
1)成对内容的一次性写出来,防止遗漏。
如:()、{}、[]、’’、``、""
2)[]中括号两端要有空格,书写时即可留出空格[ ],然后再退格书写内容。
3)流程控制语句一次性书写完,再添加内容
7、通过缩进让代码易读;(即该有空格的地方就要有空格)

2.3 变量查看和取消
2.3.1查看变量:
方式一:
变 量 名 场 景 : 私 下 里 , 在 命 令 行 / 脚 本 中 使 用 图 省 事 方 式 二 : &quot; 变量名 场景: 私下里,在命令行/脚本中使用 图省事 方式二: &quot; /使"变量名"
场景:
私下里,在命令行/脚本中使用
图省事
方式三:
${变量名}
场景:
echo " dsa dsafsa dsafsa 变 量 名 f &quot; 使 用 频 率 较 高 方 式 四 : &quot; {变量名} f &quot; 使用频率较高 方式四: &quot; f"使"{变量名}"
场景:
标准使用方式
2.3.2取消变量
unset 变量名
2.4 shell内置变量
2.4.1和脚本文件有关
符号 意义
$0 获取当前执行的shell脚本文件名,包括脚本路径
n 获 取 当 前 执 行 的 s h e l l 脚 本 的 第 n 个 参 数 值 , n = 1..9 , 当 n 为 0 时 表 示 脚 本 的 文 件 名 , 如 果 n 大 于 9 就 要 用 大 括 号 括 起 来 n 获取当前执行的shell脚本的第n个参数值,n=1..9,当n为0时表示脚本的文件名,如果n大于9就要用大括号括起来 nshellnn=1..9n0n9{10}
$# 获取当前shell命令行中参数的总个数
? 获 取 执 行 上 一 个 指 令 的 返 回 值 ( 0 为 成 功 , 非 0 为 失 败 ) 2.4.2 字 符 串 精 确 截 取 格 式 : ? 获取执行上一个指令的返回值(0为成功,非0为失败) 2.4.2字符串精确截取 格式: ?002.4.2{变量名:起始位置:截取长度}
示例:
${file:0:5} 从第1个字符开始,截取5个字符
${file::5} 从第1个字符开始,截取5个字符
${file:5:5} 从第6个字符开始,截取5个字符
${file:5} 从第6个字符开始,截取后面所有的字符
${file:0-5} 从倒数第5个字符开始,截取后面所有的字符
${file:0-6:3} 从倒数第6个字符开始,截取之后的3个字符
2.4.3默认值相关
场景一:
变量a如果有内容,那么就输出a的变量值
变量a如果没有内容,那么就输出默认的内容

格式:
	${变量名:—默认值}

场景二:
无论变量a是否有内容,都输出默认值
格式:
变 量 名 + 默 认 值 三 、 S H E L L 进 阶 1 、 表 达 式 1.1 测 试 语 句 S h e l l 环 境 根 据 命 令 执 行 后 的 返 回 状 态 值 ( {变量名+默认值} 三、SHELL 进阶 1、表达式 1.1测试语句 Shell环境根据命令执行后的返回状态值( +SHELL11.1Shell(?)来判断是否执行成功,当返回值为0,表示成功,值为其他时,表示失败。
测试语句形式
A: test 条件表达式
B: [ 条件表达式 ] 常用
后者需要注意方括号[ ]与条件表达式之间至少有一个空格。
test跟 [] 的意思一样
条件成立,状态返回值是0
条件不成立,状态返回值是1

操作注意:
[]两侧要有空格
测试语句中的 [ 条件表达式 ] 这一部分,测试的结果使用 echo $? 来查看
1.2条件表达式
逻辑表达式
常见的逻辑表达式有: && 和 ||
&&
命令1 && 命令2
如果命令1执行成功,那么我才执行命令2 – 夫唱妇随
如果命令1执行失败,那么命令2也不执行

||
命令1 || 命令2
如果命令1执行成功,那么命令2不执行 – 对着干
如果命令1执行失败,那么命令2执行
文件表达式
-f 判断输入内容是否是一个文件
如:[ -f weizhi.sh ] && echo “是一个文件”

-d 判断输入内容是否是一个目录
如:[ -d weizhi.sddh ] || echo “不是一个目录”

-x 判断输入内容是否可执行
如:[ -x age.sh ] || echo "文件没有执行权限”
数值操作符
主要根据给定的两个值,判断第一个与第二个数的关系,如是否大于、小于、等于第二个数。常见选项如下:
n1 -eq n2 相等
n1 -gt n2 大于
n1 -ge n2 大于等于
n1 -lt n2 小于
n1 -le n2 小于等于
n1 -ne n2 不等于
字符串比较
str1 == str2 str1和str2字符串内容一致
str1 != str2 str1和str2字符串内容不一致,!表示相反的意思
1.3计算表达式

定义:
计算表达式,简单来说就是对具体的内容进行算数计算

格式:
方式一:
$(()) $(( 计算表达式 ))
方式二:
let let 计算表达式

注意:
$(())中只能用±*/和()运算符,并且只能做整数运算
2、linux常见符号
linux的场景符号:重定向符号、管道符、其他符号
2.1重定向符号
在shell脚本中有两种常见的重定向符号 > 和 >>

符号
表示将符号左侧的内容,以覆盖的方式输入到右侧文件中

符号
表示将符号左侧的内容,以追加的方式输入到右侧文件的末尾行中
2.2管道符 |
使用格式:
命令1 | 命令2
管道符左侧命令1 执行后的结果,传递给管道符右侧的命令2使用
2.3其他符号
后台展示符号 &
定义:
& 就是将一个命令从前台转到后台执行
使用格式:
命令 &

Ctrl+Z 让当前任务转入到后台并停止
jobs 查看后台任务
fg 让后台进程转入到前台执行
bg 让后台停止的任务继续在后台执行
全部信息符号 2>&1
符号详解:
1 表示正确输出的信息
2 表示错误输出的信息
2>&1 代表所有输出的信息
linux系统垃圾桶
/dev/null 是linux下的一个设备文件,
这个文件类似于一个垃圾桶,特点是:容量无限大
使用方法:
如:cat /etc/passed | grep python > /dev/null 2>&1

3、常见命令详解:
3.1 grep命令详解:
在这里插入图片描述
3.2 sed命令详解:
关键字匹配格式:
‘/关键字/’
注意:
隔离符号 / 可以更换成 @、#、!等符号
根据情况使用,如果关键字和隔离符号有冲突,就更换成其他的符号即可。
在这里插入图片描述

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值