当前位置: 首页 > article >正文

shell学习教程(超详细完整)

为了方便以后工作使用和复习,吐血整理记录一下学习shell脚本的笔记,看这篇文章需要对linux系统熟悉,希望对大家有所帮助!

文章目录

    • 一、什么是shell?
      • 为什么要学习和使用shell?
    • 二、shell的分类
      • Bash 常用快捷键
      • 输入输出重定向
        • linux 的标准输入与输出
        • 输入重定向
        • 输出重定向
          • /dev/null 文件
        • 多命令顺序执行
      • shell脚本的执行
    • 三、shell变量
      • 1. 变量的命名规则:
        • shell中特殊符号
      • 2. 变量的分类:
        • 2.1 用户自定义变量:
          • 2.1.1 变量定义
          • 2.1.2 变量调用
          • 2.1.3 变量查看
          • 2.1.4 变量删除
        • 2.2 环境变量:
          • 2.2.1 环境变量设置
          • 2.2.2 环境变量查询和删除
          • 2.2.3 系统默认环境变量
        • 2.3 位置参数变量:
        • 2.4 预定义变量:
        • 3. 只读变量:
        • 4. 接受键盘输入:
    • 四、shell 运算符
      • 1. 算数运算符
      • 2. 关系运算符
      • 3. 逻辑运算符
      • 4. 字符串运算符
      • 5. 文件测试运算符(重点)
    • 五、流程控制
      • 1. if条件判断
        • 1.1 单分支if条件
        • 1.2 双分支if条件语句
        • 1.3 多分支if条件语句
      • 2. 多分支case条件语句
      • 3. for循环
      • 4. while循环
      • 5. until循环
      • 6. 函数
      • 7. 特殊流程控制语句
        • 7.1 exit语句
        • 7.2 break语句
        • 7.3 break语句
    • 六、字符截取、替换和处理命令
      • 正则表达式
      • 6.1 字符截取、替换命令
        • 6.1.1 cut 列提取命令
        • 6.1.2 awk 编程
          • 6.1.2.1 awk 概述
          • 6.1.2.2 printf 格式化输出
          • 6.1.2.3 awk 基本使用
          • 6.1.2.4 awk 的条件
            • BEGIN
            • END
            • 关系运算符
            • 正则表达式
          • 6.1.2.5 awk 内置变量
            • awk常用统计实例
          • 6.1.2.6 awk 流程控制
          • 6.1.2.7 awk 函数
          • 6.1.2.8 awk 中调用脚本
        • 6.1.3 sed 文本选取、替换、删除、新增的命令
            • 6.1.3.1 提取行数据
            • 6.1.3.2 删除行数据
            • 6.1.3.3 追加插入行数据
            • 6.1.3.4 替换行数据
            • 6.1.3.5 字符串替换
      • 6.2 字符处理命令
        • 6.2.1 sort 排序命令
        • 6.2.2 uniq 取消重复行
        • 6.2.3 wc 统计命令

一、什么是shell?

shell是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

为什么要学习和使用shell?

Shell属于内置的脚本,程序开发的效率非常高,依赖于功能强大的命令可以迅速地完成开发任务(批处理)语法简单,代码写起来比较轻松,简单易学


二、shell的分类

cat /etc/shells
在linux中有很多类型的shell,不同的shell具备不同的功能,shell还决定了脚本中函数的语法,Linux中默认的shell是 / b a s h / b a s h ( 重 点 ) color{#FF3030}{/bash/bash(重点)} /bash/bash(重点),流行的shell有ash、bash、ksh、csh、zsh等,不同的shell都有自己的特点以及用途。

编写规范:

#!/bin/bash				[指定告知系统当前这个脚本要使用的shell解释器]
Shell相关指令

文件命名规范:

文件名.sh .sh是linux下bash shell 的默认后缀

Bash 常用快捷键

快捷键

作用

ctrl+A

把光标移动到命令行开头。如果我们输入的命令过长,想要把光标移动到命令行开头时使用。

ctrl+E

把光标移动到命令行结尾。

ctrl+C

强制终止当前的命令。

ctrl+L

清屏,相当于clear命令。

ctrl+U

删除或剪切光标之前的命令。我输入了一行很长的命令,不用使用退格键一个一个字符的删除,使用这个快捷键会更加方便

ctrl+K

删除或剪切光标之后的内容。

ctrl+Y

粘贴ctrl+U或ctul+K剪切的内容。

ctrl+R

在历史命令中搜索,按下ctrl+R之后,就会出现搜索界面,只要输入搜索内容,就会从历史命令中搜索。

ctrl+D

退出当前终端。

ctrl+Z

暂停,并放入后台。这个快捷键牵扯工作管理的内容,我们在系统管理章节详细介绍。

ctrl+S

暂停屏幕输出。

ctrl+Q

恢复屏幕输出。

输入输出重定向

linux 的标准输入与输出

设备

设备名

文件描述符

类型

键盘

/dev/stdin

0

标准输入

显示器

/dev/stdout

1

标准输出

显示器

/dev/stderr

2

标准错误输出

输入重定向

输入重定向:是指不使用系统提供的标准输入端口,而进行重新的指定。换言之,输入重定向就是不使用标准输入端口输入文件,而是使用指定的文件作为标准输入设备。(重定向简单理解就是使用 “<”符来修改标准输入设备)

类型

符号(语法)

功能

标准输入

命令<文件1

命令把文件1的内容作为标准输入设备

标识符限定输入

命令<<标识符

命令把标准输入中读入内容,直到遇到“标识符”分解符为止

输入输出重定向(同时使用)

命令< 文件1 >文件2

命令把文件1的内容作为标准输入,把文件2作为标准输出。

输出重定向

输出重定向:(通俗的讲,重定向输出就是把要输出的文件信息写入到一个文件中去,而不是将要输出的文件信息输出到控制台(显示屏),在linux中,默认的标准输出设备是控制台(或称为显示器),用户输出的信息默认情况下都会显示到控制台

&表示全部文件,文件不管对错,1表示标准输出文件,2表示标准错误输出。

类型

符号

作用

标住输出重定向

命令 > 文件

以覆盖方式,把命令的正确输出内容输出到指定的文件或设备当中

标住输出重定向

命令 >> 文件

以追加方式,把命令的正确输出内容输出到指定的文件或设备当中

标准错误输出重定向

错误命令2 > 文件

以覆盖方式,把命令的错误输出输出到指定的文件或设备当中

标准错误输出重定向

错误命令2 >> 文件

以追加方式,把命令的错误输出输出到指定的文件或设备当中

正确输出和错误输出同时保存

命令 > 文件 2>&1

以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中。

正确输出和错误输出同时保存

命令 >> 文件 2>&1

以追加的方式,把正确输出和错误输出都保存到同一个文件当中。

正确输出和错误输出同时保存

命令 &> 文件

以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中。

正确输出和错误输出同时保存

命令 &>> 文件

以追加的方式,把正确输出和错误输出都保存到同一个文件当中。

正确输出和错误输出同时保存

命令 >> 文件1 2>>文件2

把正确的输出追加到文件1中,把错误的输出追加到文件2中。

/dev/null 文件

如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到**/dev/null**中

[root@localhost ~]$  command > dev/null
多命令顺序执行

多命令执行符

作用

格式

命令1 ;命令2

多个命令顺序执行,命令之间没有任何逻辑联系

&&

命令1 && 命令2

当命令1正确执行( = 0 ) , 则 命 令 2 才 会 执 行 当 命 令 1 执 行 不 正 确 ( =0),则命令2才会执行 当命令1执行不正确( =0),则命令2才会执行当命令1执行不正确(≠0),则命令2不会执行

ll

命令1 || 命令2

当命令1执行不正确( ≠ 0 ) , 则 命 令 2 才 会 执 行 当 命 令 1 正 确 执 行 ( ≠0),则命令2才会执行当命令1正确执行( =0),则命令2才会执行当命令1正确执行(=0),则命令2不会执行

shell脚本的执行

[root@localhost ~]$ vim test.sh
#!/bin/bash
echo “hello world”

两种方式执行shell脚本

第一种:给文件增加执行权限

[root@localhost ~]$ chmod u+x test.sh
[root@localhost ~]$ ./test.sh  #绝对路径或相对路径执行

第二种(了解):通过Bash调用执行脚本

[root@localhost ~]$ bash test.sh

三、shell变量

什么是变量?
在一个脚本周期内,其值可以发生改变的量就是变量。

1. 变量的命名规则:

在定义变量时,有一些规则需要遵守:

  1. 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。

  2. 等号左右两侧不能有空格,可以使用下划线“_”,变量的值如果有空格,需要使用单引号或双引号包括。如:“test=“hello world!””。其中双引号括起来的内容“$”,“(”和反引号都拥有特殊含义,而单引号括起来的内容都是普通字符。

  3. 不能使用标点符号,不能使用bash里的关键字(可用help命令查看保留关键字)。

  4. 环境变量建议大写,便于区分

  5. 如果需要增加变量的值,那么可以进行变量值的叠加。不过变量需要用双引号包含" 变 量 名 " 或 用 变量名"或用 "{变量名}包含变量名。

    [root@localhost ~]$ test=123
    [root@localhost ~]$ test=" t e s t " 456 [ r o o t @ l o c a l h o s t   ] test"456 [root@localhost ~] test"456[

http://www.lryc.cn/news/2413016.html

相关文章:

  • 玩家开发“提莫快跑”游戏模式获官方认可
  • 苹果5越狱教程_iOS 13.3.1 checkra1n 手机越狱?不用电脑也行
  • qq邮箱服务器地址ip地址,如何查询对方QQ邮箱的ip地址?QQ邮箱ip地址的查询方法...
  • 阿里巴巴拟8月28日在香港完成双重主要上市
  • js实现ctrl+v粘贴并上传图片
  • 如何设置域名泛解析及解决恶意泛域名解析的方法
  • IE浏览器的缓存设置
  • 分析了一下360安全卫士的 HOOK(二)——架构与实现(zt)
  • 不用再为下载而发愁了,提供一款支持115网盘、迅雷、快车、旋风、飞速网盘的专用链接解析出资源的真实地址的软件...
  • Meterpreter木马技术分析与防范
  • web飞信 接口解析
  • Struts 2.0
  • Makefile经典教程(转)
  • aspectjweaver.jar包下载
  • PHP汉字转换拼音的函数代码
  • 证明与计算(3): 二分决策图(Binary Decision Diagram, BDD)
  • Python办公自动化全攻略!从入门到精通,只需这几步!
  • HTML通用代码
  • 白山搜索引擎优化收费_在网络推广中,SEO排名优化是成本最低的方式
  • Null Object模式
  • 迅雷老版本下载地址
  • 管理项目干系人时,巧用工具可以事半功倍
  • python实现labelme_json_to_dataset数据集标签批量提取
  • QQ英文版有点奇怪
  • 2021数学建模国赛B题《对乙醇偶合制备 C4 烯烃的问题研究》省一,第一次参加分享经验
  • 微pe工具箱 系统安装教程_通用PE工具箱装系统(V4.0)——安装原版WIN7系统
  • 酒店客房管理系统的设计与实现毕业设计
  • BIOS下关于CPU性能常用设置的解释及建议
  • Ubuntu11.04内核6.5.0.14系统USB转CAN适配器SOCKETCAN驱动
  • [转]吐血推荐250部必看电影下载 IMDB TOP 250 download