Shell基础

什么是Shell

介绍

Shell 是linux内核的命令解释器,在底层硬件和linux内核之间起到一个中间人的作用,我们在shell端输入的命令可以被它解释成linux内核可以理解的语言,然后linux内核来完成硬件的交互 然后返回结果
下图很直观:
在这里插入图片描述

Shell 的分类

在这里插入图片描述

Shell脚本的执行方式-- 编写一个shell脚本

vim hello.sh --创建一个shell脚本
在这里插入图片描述
第一行 #!/bin/bash 是必写的 用来申明这是一个shell脚本
然后其他内容可以自己来写啦

运行 shell脚本 ./hello.sh or /root/hello.sh 绝对路径或者相对路径
在这里插入图片描述
我第一次没有运行成功 是因为没有执行权限 改一下权限就可以运行了

Bash的功能

history命令 -用来查历史使用命令
在这里插入图片描述
解释一下 把缓存中的历史命令写入历史保存文件 家目录下的 .bash_history 文件下
一般我们执行的命令,使用history 可以查到,但此时的命令记录还没有写入这个文件,只有我们退出之后重新登陆才可以看到,如果使用-w,就是直接写入了,不需要退出登陆
在这里插入图片描述

命令别名:
查看命令别名: alias
在这里插入图片描述
给vim 取别名 vi
alias vim=’vi’
在这里插入图片描述
unalias 别名 删除别名
要想让别名永久生效:需要改配置文件 是家目录下的.bashrc文件
对root来说 /root/.bashrc 对user1用户来说 /home/user1/.bashrc
在这里插入图片描述
把别名写进去就行了。

Bash 常用快捷键:
在这里插入图片描述
输入输出重定向:
首先理解什么叫做输出重定向,就是把原本应该输入到屏幕显示出来的内容输入到一个文件里面了。
输出重定向的分类
在这里插入图片描述

就是你当你输入错误命令的时候,使用标准错误输出重定向 会把错误信息输入到文件里面
你输入的命令是正确的时候,会把命令的结果输出到文件里面,这两个命令不能混用。

如果嫌分类有点麻烦 可以使用如下命令: 就不用区分命令错误或者正确了。
在这里插入图片描述
这里注意一个文件 /dev/null 可以把他看作垃圾箱,往里面输入的数据都会消失掉,一般在shell脚本输出的一些作用不大的信息,我们会直接重定向到这个文件里面。

输入重定向:
不用我们手来敲打内容输入到文件里面,而是直接把文件内容作为输入到另一个文件里面。
例如:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里直接把文件的内容作为WC命令的输入了。

多命令顺序执行:
在这里插入图片描述
管道符:
在这里插入图片描述
举个例子:
在这里插入图片描述
通配符:
在这里插入图片描述
其他特殊符号:
在这里插入图片描述

shell中的变量

包括
用户自定义变量
环境变量
位置参数变量
预定义变量

变量的概念在编程语言里面已经谈泛了,概念也是类似的
变量分类:
在这里插入图片描述
用户自定义变量:
在这里插入图片描述
第二个 aa输出 是123456
set 命令 可以查看系统当中的所有变量 包括环境变量
unset 变量名 删除变量

环境变量:
环境变量是什么:
在这里插入图片描述
怎么理解shell和子shell 怎么理解shell和子shell
在这里插入图片描述
我们一开始登陆进去,是拥有shell的,这里我们输入 bash命令 再进入一个shell,这个shell就是子shell 我在第一个bash中 用户自定义变量可能在第二个bash 中就看不到了
举个例子:
在第一个Shell(也就是父shell里面)
在这里插入图片描述
可以看到 name变量

第二个bash 中
在这里插入图片描述
看不到 name 这个变量了

设置环境变量
在这里插入图片描述
pstree 可以看到当前shell解释器关系 :
在这里插入图片描述
创建子shell bash之后
在这里插入图片描述
系统常见的环境变量:
在这里插入图片描述
这就解释了为什么我们不用输入命令的绝对路径 就可以执行,全靠PATH这个变量,系统会向PATH路径指定的位置去寻找命令,这也是PATH命令的作用,当然我们也可以手工来定义添加路径。
在这里插入图片描述
系统提示符就是这个东西: 是可以根据需要进行修改的。
在这里插入图片描述
位置变量参数:
这个和大多数编程语言差不多,可以理解理解成一种占位符,学过C的我们都知道
printf(“welcomte to C %d’,a) 相当于把a这个变量的值写入%d这个位置。
在这里插入图片描述
举个例子:
我编写的sh脚本:
在这里插入图片描述
在这里插入图片描述
预定义变量:
环境变量实则属于特殊的预定义变量
在这里插入图片描述
接受键盘输入:
在这里插入图片描述
举个例子 :
在这里插入图片描述
在这里插入图片描述

数值运算与运算符

这里的数值运算与编程语言差别还是有的:
这个CC变量的结果并不是aa和bb的数值相加,而是字符串形式连接
在这里插入图片描述
采用上面的方法,声明为整数然后相加 是一种实现方式:
在这里插入图片描述
这个也是一种方法:
在这里插入图片描述
更常用的方法:
在这里插入图片描述
在这里插入图片描述

运算符:(和大多数编程语言大同小异)
在这里插入图片描述
变量测试:

用的时候查一下表就好了,主要是对y变量是否存在做一个检测,因为在编写shell脚本的过程中,计算机不能像人一样识别,从肉眼看出来y存不存在,它只能通过一些指令和返回的结果来判断
在这里插入图片描述
环境变量的配置文件:

一旦写入,永久性生效,开启重启仍然有效

source 配置文件 --一般我们修改完环境变量配置文件之后,得重新登录重启后才生效,使用这个命令可以直接生效
在这里插入图片描述
五个环境变量的配置文件如下:
在这里插入图片描述
环境配置文件的作用和调用顺序:
在这里插入图片描述
解释一下 我们在输入账号密码登录之后,在我们看到命令提示符之前
在这里插入图片描述
会经过这么多个读取步骤,每个配置文件都有相应的环境变量,读取它们,要注意的就是,到第7步之后,如果你此时不需要账号密码登陆(比如你登陆之后,再创建一个bash)这个时候会执行2 3 4 步骤。
配置文件的一些说明:
/etc/profile 文件:
在这里插入图片描述
~/.bash_profile的作用
在这里插入图片描述
/etc/bashrc的作用
在这里插入图片描述
其他配置文件的登陆信息:

注销时生效的环境变量配置文件 ~/.bash_logout
历史命令配置文件 ~/bash_history
本地终端(从本机登陆)欢迎信息配置文件 /etc/issue
在这里插入图片描述
远程终端欢迎信息: /etc/issue.net
在这里插入图片描述
登录后欢迎信息 /etc/motd 不管是远程登陆还是本地登陆都可以显示出来。

Shell编程

正则表达式:(基本概念和其他编程语言中的差不多,用法语法上面可能有点区别)
正则表达式是包含匹配 通配符是完全匹配
基础正则表达式:
在这里插入图片描述

字符截取命令: cut、grep、printf、awk、sed
cut命令: --用于提取列
在这里插入图片描述
默认的分隔符 是TAB键
Demo:
在这里插入图片描述
在这里插入图片描述
cut -d “:” -f 1,3 /etc/passwd 以“:”作分割
在这里插入图片描述
cut 命令主要是截取列的,它的局限是不能以空格作为分割。
grep命令 主要是截取行的
Demo:
在这里插入图片描述
printf命令 格式化输出:和编程语言有点类似
在这里插入图片描述
在这里插入图片描述
printf命令主要是配合awk命令来使用的

awk命令 带条件性截取列:
在这里插入图片描述
Demo:
在这里插入图片描述
在这里插入图片描述
以上两个awk使用都没有条件,直接printf格式化输出了。
在这里插入图片描述
在这里插入图片描述
FS指定分隔符:
在这里插入图片描述
awk命令带条件的例子:
**加粗样式**

sed命令 :
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Demo:
用例子来体会:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
字符处理命令:
Sort
在这里插入图片描述
在这里插入图片描述
Wc命令:
在这里插入图片描述
在这里插入图片描述
条件判断:
语法:
使用 test 或者[ ]

1.按文件类型进行判断:
在这里插入图片描述
Demo:
第一种写法:
在这里插入图片描述
第二种写法:
在这里插入图片描述
注意使用中括号这种形式 一定要空格 !

1.按照文件权限进行判断
在这里插入图片描述
Demo:
在这里插入图片描述
所属者,所属组,其他人中只要含有w权限就为真。

两个文件之间的比较:
在这里插入图片描述
在这里插入图片描述
两个整数之间的比较:
在这里插入图片描述
字符串的比较:
在这里插入图片描述
Demo:
在这里插入图片描述
在这里插入图片描述
多重条件判断:
在这里插入图片描述
Demo:
在这里插入图片描述
在这里插入图片描述
流程控制:
If 语句 语法格式 以及 简单举例 :
在这里插入图片描述
注意空格 对仗 一般感觉用第二个格式顺眼一点吧
Demo:
在这里插入图片描述
在这里插入图片描述
Demo:
在这里插入图片描述
注意使用else 不用加 then

case语句:
在这里插入图片描述
在这里插入图片描述
While 循环:
在这里插入图片描述
在这里插入图片描述

书写规则坑太多了。。。。一定要注意书写规范
Until 就是while 反着来。while是当条件满足时,执行语句
Until 就是直到条件满足时才停止

for 循环
语法 1

在这里插入图片描述
在这里插入图片描述
语法2
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值