自学linux运维(shell基础篇)

shell基础

shell是一个命令解释器:把用户输入的命令给操作系统的核心(可以是交互也可以是非交互)

gcc编译器:将人类理解的语言翻译成机器理解的语言

shell脚本:把原来linu命令或语句放在一个文件中,然后通过这个程序文件去执行时,我们就说这个程序为shell脚本或shell程序;我们可以在脚本中输入一系统的命令以及相关的语法语句组合,比如变量,流程控制语句等,把他们有机结合起来就形成了一个功能强大的shell脚本

shell脚本:
#!/bin/bash //开头 作用:告诉脚本使用的那种命令解释器。

#echo this is shell 
echo “hello word”
mkdir /tmp/test
touch /tmp/test/a.txt
chmod +x 刚才创建的shell名称  //给一个可执行的权限
执行  ./shell.sh
shell脚本以.sh结尾

创建shell的步骤:
1.创建一个包含命令和控制结构的文件
2.修改这个文件的权限使它可以执行 chmod + x test.sh
3.检测语法错误
4.执行 ./example

shell脚本的执行方式

1./root/test.sh  或者 ./test.sh (当前路径下执行脚本的话要有执行权限chmod +x)
2.bash test.sh 或 sh test.sh(这种方式可以不对脚本文件添加执行权限)
3.source test.sh (可以没有执行权限)
4.sh<test.sh 或者 cat test.sh|sh(bash)

shell变量及运用。
变量是一种传递数据的方法。变量是用来代表每个值得符号名,我们可以把变量当成一个容器,通过变量,可以在内存中储存数据。也可以在脚本执行中进行修改

shell 变量设置规则
1.变量名称通常以大写字母,它可以由数字、字母(大小写)和下划线_组成,变量名区分大小写;但是注意变量名称不能以数字开头
2.等号两把不能有空格
3.变量储存得数据类型是整数值和字符串值
4.在对变量赋予字符串值时,建议用括号将其括起来。如果字符串中存在空格符号,需要使用单引号和双引号括起来
5.要对变量进行调用,可以在变量名称前加美元符号$
6.如果需要增加变量得值,那么可以进行变量值得叠加。不过变量需要用双引号包含

变量分类:
1.用户自定义变量
2.环境变量:这种变量中主要保存得是和系统操作环境相关得数据
3.位置参数变量“:这种变量主要是用来向脚本当中传递参数或这数据得,变量名不能自定义,变量作用是固定得
4.预定义变量:是bash中已经定义好的变量,变量名不能自定义,变量作用也是固定得

变量作用域分成2类:全局变量(环境变量,不会随shell消失而消失)和局部变量

1.在终端定义一个变量VAR1=123

调用:echo $VAR1
variable   //变量

2.变量值的叠加:

${name}

3.命令的替换:$()或者反引号
date是显示时间或着设置时间
-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号
<+时间日期格式>:指定显示时,使用特定的日期时间格式。

date +"%Y -%m -%d %H:%M:%S"
        年 月   日 时  分 秒

注:%y年份只显示两位,%Y显示四位
$(date)调用函数

find /root/ -name *.txt   //去root下边找.txt的文件 

4.命令嵌套:
( ( (( ))

特殊变量:
1.单引号和双引号的区别:
在单引号中所有的字符包括特殊字符(KaTeX parse error: Undefined control sequence: \) at position 6: ,",'和\̲)̲都将解释成字符本身而成为普通字…,",'和\以外所有的字符都解释成字符本身,拥有“调用变量的值”、“引用命令”和“转义字符”的特殊含义
注意:\是转义的意思,在\后边的将失去任何意义,变成了普通字符

删除一个变量:unset $var1

环境变量:
在bash shell中,环境变量分为两类:全局变量和局部变量
全局变量:对于shell会话和所有的子shell都是可见的
局部变量:它只在自己的进程当中使用 (bash b.sh //执行

b.sh时,会使用另一个bash去执行,就访问不到变量的值)
pstree  // 查看树
env //查看全局变量
export //设置全局变量,可以写入

让变量永久生效:
可以把定义好的变量写入配置文件中
当登录系统或新开启一个ssh连接来启动bash进程时,一定会加载这4个配置文件:

vim /etc/profile  #系统全局变量和登录系统的一些配置
vim /etc/bashrc  #bash全局自义配置文件,用于自定义bash
vim /root/bashrc #用于单独自定义某个用户的bash
vim /root/.bash_profile  #用户单独自定义某个用户的系统环境

将文件后面加一个echo /etc/profile #后面加上他的目录

***注意:可以在这里写木马程序,管理员登录之后,就可以触发木马程序 ***

ehco 'touch /tmp/profile.txt'  >> /etc/profile
echo 'touch /tmp/bash_profile.txt' >> /root/.bash_profile

追加写入程序,可以在文件里面执行成功touch

/tmp/bash_profile.txt 这一段命令
  export VAR9=123  #等号两边不能有空格
source  /etc/profile  #重新加载profile文件

设置PATH环境变量
PATH变量是用来定义bash查找命令的目录,安装第三方程序后,可以把第三方程序bin目录添加到这个path路径内,就可以在全局调用这个第三方程序

例如:
在一个目录下边写一个备份

vim /opt/z1
#!/bin/bash
echo '123456'   //内容
chmod +x /opt/z1   //给一个执行权限
z1  //直接去执行不能直接执行

将z1命令添加PATH中

PATH=/opt/:$PATH

z1 //发现可以执行成功了

vim /etc/profile  //在文件后面追加一下内容 永久生效》》
export PATH=/opt/:$PATH
source  /etc/profile   //加载一下文件,使配置文件生效

shell位置变量(图):
shell解释执行用户的命令时,将命令行的第一个字符作为名字,而其它字符作为参数。
$0 获取当前执行shell脚本的文件文件名,包括脚本路径,命令本身
n 获 取 当 前 脚 本 的 第 n 个 参 数 n = 1 , 2 , . . . . n 当 n 大 于 9 时 用 n 获取当前脚本的第n个参数n=1,2,....n当n大于9时 用 nnn=12....nn9{10}表示

/etc/init.d/network restart  //服务器启动传参数

在这里插入图片描述

shell特殊变量(图):
有些变量是一开始执行script脚本时就会设定,且不能被修改,但我们不叫他只读的系统变量,而叫它特殊变量。这些当一执行程序时就有了
在这里插入图片描述

常用的环境变量(图):

echo $HOME   //输出家目录
echo $PATH    //输出执行路径
echo $PEW    //输出当前路径

在这里插入图片描述

#数学运算符

expr命令
1.正确输出为1,错误输出0
expr 2\ >5 //要比较2是否大于5,大于号前边要加一个转义符,如果正确输出1,错误输出2

2.字符串
expr length “ni hao” //求一个字符串的长度,空格也算一个字符
expr substr “ni hao” 2 4 //取一个字符串,从第二个字符开始的位置取四个字符串 》》i ha
3.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值