shell脚本基础 && 脚本中的变量 && Linux系统命令别名的设定

6 篇文章 0 订阅

什么是内核
内核是多用户多任务的操作系统中的一个程序调度器,决定程序什么时候开始,什么时候结束,及优先级的大小;但内核不能直接与第三方软件进行交流,直接交流,内核所控制的程序会发生错乱。

什么是shell
shell是内核的保护层,命名为壳,壳中内容为内核;由于内核不能直接与第三方软件交流,需要shell这个保护罩来保护,shell会过滤掉坏的信息,将接收到的信息传递给内核,保护内核的安全运行。本质上讲,shell就是一个桥梁,用户和内核之间建立的“友谊”,都是通过这个“桥梁完成的”,也就是我们想让内核帮我们做一些事情,首先需要将用户的指令去传递给shell,翻译成内核可以理解的一些信息,从而让内核为我们服务。

什么是脚本
脚本:顾名思义,有脚能够跑的文本,也就是能够运行的文本。shell是能够用文本名称运行文本内容的文件;脚本中的代码是一种解释性的语言,不用编译代码:机器能够识别的代码,其依赖解释器来解释给机器,机器识别执行命令,在系统中写好就可以运行。

脚本作用:记录我们在系统中操作的步骤,实现自动化的控管

1. shell脚本基础

1.1 shell 脚本执行方式

(1)不需要执行权限:
1)sh file.sh
2)source file.sh 不开启子程序,让程序在我们当前的环境中直接运行生效(. file.sh相同)
3). file.sh
(2) 需要执行权限(绝对路径):

chmod +x file.sh
./file.sh

1.2 脚本的创建

vim file.sh 用vim编写脚本

  • 脚本说明参数
参数含义
#!/bin/bash幻数 bash表示脚本运行时最先开启的程序,可更改
#AUTHOR脚本作者
#DATE脚本创作时间
#MAIL脚本作者联系方式
#VERSION脚本的版本
  • 方便起见,可以在vim配置文件中编辑永久脚本说明
    vim /etc/vimrc 可以编写快捷键方式,也可以编写默认方式
    快捷键map [快捷键] ms:call [函数名称] <cr>'s ##表示快捷键映射函数
    默认存在autocmd BufNewFile *.sh exec ":call [函数名]" ##表示在建立.sh结尾的新文件时,新自动会添加所写函数
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

1.3 脚本的调试

  • 调试脚本检测错误,当我们不清楚脚本中哪里有错误时,可以通过调试的输出分析来确定错误

    sh -x [脚本名称]

  • 输出解释:带+号为指令,不带+为输出
    在这里插入图片描述

在这里插入图片描述

2.脚本中的变量

2.1 基础概念

  • 变量:在程序运行过程中他的值是允许改变的量,变量是用一串固定的字符来标识不固定的值的一种方法;变量也是一种方便的占位符,内存地址的地址符;在shell中变量是不能永久保存在系统中的,必须在文件中声明。

  • shell环境变量分为bashrc 和profile环境变量

  • 查看环境中的变量env

  • shell中的变量用大写字母表示

2.2 shell中变量的种类

环境级变量;用户级变量;系统级变量

(1) 环境级变量:只在当前bash环境中生效,具有临时性重,重新启动,资源被回收bash变量不生效。

export 共享变量
  • su student 没有切换用户的环境变量,环境变量依旧生效
    su student 不切换用户环境原因:系统只会读取bashrc,加载shell的配置,不会读取profile,因此不加载系统中用户环境变量profile

在这里插入图片描述

(2)用户级变量:对当前用户生效

vim ~/.bash_profile
export a=x
source ~/.bash_profile
  • su student 变量也不生效了,用户身份被切换

在这里插入图片描述
在这里插入图片描述
(3) 系统级变量:对系统永久生效,记录在硬盘里,不会被回收

vim /etc/profile
export a=x
source /etc/profile

在这里插入图片描述

在这里插入图片描述

2.3 变量名称的规范

变量名称中通常包含大小写字母,数字,下划线

2.4 字符的转译及变量的声明

\转译单个字符
“”强引用,批量转译;不能转译"","`","!","$"
‘’弱转译,批量转译;可以转译强引用不能转译的
${}变量声明
  • A=1
    echo $Ab
    echo ${A}b
    在这里插入图片描述
  • \*
    在这里插入图片描述

2.5 变量的值传递

$1脚本执行命令后的第一串字符串
$2执行命令后的第二串字符串
$3第三串字符串
$#所有字符串的个数
$*脚本执行命令后的所有字符串,模式为“1 2 3”
$@所有字符串,模式为“1”“2”“3”
$0脚本名称

在这里插入图片描述
在这里插入图片描述
read:

read -p "input... " WORD ##在终端输出“input”内容,让用户输入变量WORD且输入有回显
read -s             WORD  ##与-p一起使用,只是用户输入没有回显

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.6 利用命令执行结果的变量设定

HOSTNAME=$(hostname) 或者 HOSTNAME=`hostname`  将命令hostname的输出设定为变量HOSTNAME

3.Linux系统中命令别名的设定

3.1 环境级命令别名设定重新开启不生效
命令行设定: alias kan='cat'

  • su student 命令重命名不生效

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 用户级命令别名设定对设定的用户生效,重新开启shell依旧生效
vim /root/.bashrc 编辑配置文件

alias hh='vim'

source /root/.bashrc 让设定生效
在这里插入图片描述

3.3 系统级命令别名设定对所有用户生效,重新开启shell依旧生效

vim /etc/bashrc 编辑系统配置文件

alias xixi='df'

source /etc/bashrc 让设定生效
在这里插入图片描述
在这里插入图片描述

4.$? 退出值

  • 退出值范围:0-255
  • 查看退出值 echo $?
  • 命令没有错误时退出值为0,在不设定exit退出值的情况下,命令执行有错误报错,则退出值不为0
  • 退出值的设定:在脚本中直接设定 exit 66 设定退出值为66
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

5. 系统读取目录的设定

(1) 查看系统自动识别的目录echo $PATH

(2)设定系统自动识别的目录

vim ~/.bash_profile 编辑profile文件

10 PATH=$PATH:$HOME/bin :/mnt  ##添加系统自动识别/mnt目录

source ~/.bash_profile 让设定生效

  • 设定后,/mnt下的脚本,在被给予执行权力后,可以直接用文件名执行
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值