网络安全自学笔记08 - Linux之shell

一、shell基本概述

  • 什么是shell脚本?到底能解决什么问题?shell脚本其实就是把一批命令集合在一起,解决一些复杂的问题,有点类似于程序设计(在shell中,变量、分支、循环、函数、数组等与程序设计完全类似的功能),但是本质上来说不是程序设计。shell的程序复杂程度是无法真正与编程语言相提并论的,但是由于与操作系统集合在一起的,所以能够执行一些更加底层的命令组合,且效率很高
  • linux系统中的shell是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个“命令解释器”的角色,负责接收用户输入的操作指令并进行解释,将需要执行的操作传递给内核执行,并输出执行结果
  • 常见的shell解释器程序有很多种,使用不用的shell脚本是,其内部指令、命令行提示等方面会存在一些区别,通过/etcshells文件可以了解当前操作系统支持的shell脚本种类
    #列出系统中所有的shell
    cat /etc/shells
    # 查看当前环境变量$shell的值
    echo $shell
    

二、shell的类型

  • Bourne Shell:是贝尔实验室开发的,unix普遍使用的shell,在编程方面比较优秀,但在用户交互方面没有其他shell优秀
  • Korn Shell:是针对Bourne Shell的发展,在大部分内容上与Bourne Shell兼容,继承了C Shell和Bourne Shell有点。
  • BASH:是GNU的Bourne Again Shell,是GNU操作系统上默认的shell,在Bourne Shell基础上增强了很多特性,如命令补全,命令历史表
  • C Shell:是SUN公司的BSD版本,语法与C语言相似,比Bourne shell跟适合编程

三、创建一个shell并执行

  • 新建shell文件并编写内容

    vi first.sh
    cd /boot
    pwd
    ls -lh vml*
    
  • 添加执行权限

    chmod +x first.sh
    
  • 执行shell脚本(3种执行方法)

    # 当前目录下使用 ./ ,需要添加执行权限
    ./first.sh
    # sh . source执行不需要执行权限
    sh first.sh
    . first.sh
    source first.sh
    

四、重定向与管道操作

1、重定向操作

  • 标准输入:默认的设备是键盘,文件编号为0,命令将从标准输入文件中读取在执行过程中需要的输入数据,使用 < 操作符
  • 标准输出:默认的设备是显示器,文件编号为1,命令执行后的输出结果发送到标准输出文件。使用 > 覆盖或 >> 追加文件
  • 标准错误:默认的设备是显示器,文件编号为2,使用 2> 或 2>> 用来将错误信息覆盖或追加到文件中(在标准输入、标准输出重定向时,实际上省略了1、0编号)
  • 混合输出:使用 &> 将错误和标准信息一同保存到文件中

2、管道操作

  • 管道操作为不同命令之间的协同工作提供了一种机制,位于管道符号“ | ” 左侧的命令输出的结果,将作为右侧命令的输入,同一行命令中可以使用多个管道

五、shell变量

1、定义并输出一个变量

# 定义一个变量
home=jilin
# 打印这个变量的值
echo $home
# 使用read命令定义变量,手动输入,-p选项来设置提示信息
read -p "请输入家乡:"school
echo $school

2、{},“”,‘’,``,的作用

# {}大括号的作用,用于包括变量名,以免与后面相连导致变量名错误
echo ${home}1.2
# ""双引号赋值时的作用,赋值变量时出现括号时使用,是为一整个变量
home="jilin baicheng"
# ""双引号也可以通过$符合引用其他变量的值
home=jilin
home1=baicheng
homes="$home $home1"
echo $homes
# ''单引号的作用,禁止引用其他变量的值,$视为普通字符
homes='$home $home1'
echo $homes
# ``反撇号的作用,命令替换,提取命令执行后的输出结果
ls -lh`which useradd`

3、变量的作用范围

  • 默认为局部变量
  • 可以使用内部命令 export 将指定的变量导出为全局变量

4、变量的运算

  • 在bash shell 环境中,只能进行简单的整数运算,不支持小数运算,整数值的运算主要通过内部命令 expr 进行,运算符与变量之间至少有一个空格
    • + :加法运算
    • - :减法运算
    • \* :乘法运算,不能仅使用 * 不然会被当成文件通配符
    • / :除法运算
    • % :取模运算
X=35
Y=16
expr $X + $Y
expr $X - $Y
expr $X \* $Y
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

imphoon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值