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

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.xdnf.cn/news/11650.html

相关文章:

  • AjaxPro 在C#中的应用
  • 美国ABC新闻网:全世界最有影响力的五个大黑客
  • 提高效率、降低成本:外贸企业必备好用ERP软件盘点
  • 屏蔽百度及其广告的部分Host
  • 使用asp.net从零开始制作设计网站---转载
  • 基于vivado DDS ip核的DDS信号发生器(可调频调相)
  • Linux服务器命令
  • 《web课程设计》用HTML CSS做一个简洁、漂亮的个人博客网站
  • 逻辑思维训练500题(带答案)
  • 麻雀要革命2 第27节:那还真是一个噩梦
  • 最全BT介绍
  • 用NBSI进行SQL注入***分析及安全解决方案
  • 一文搞懂tracert在windows和linux上的使用方法
  • 华丽转身:艾默生网络能源演变为维谛技术Vertiv,品牌嬗变深度解析
  • telnet登录并使用SMTP和POP收发邮件(QQ邮箱)
  • access2007 mysql_access2007使用方法,access2007使用教程
  • dreamweaver作业静态HTML网页设计——我的家乡海南旅游网站
  • 爱上 GO 语言
  • 输入邮箱后,跳转邮箱地址
  • android 经典界面设置,HTC经典Sense界面Android4.0系统
  • 【c语言】函数:递归(详解+做题技巧)
  • 操作系统常见「名词解释」、「简答题」
  • BREW技术概览
  • 员工行为监控系统是什么?(好用的员工行为监控系统分享)
  • PASCAL VOC数据集分析及下载、解压
  • GridView内容详解(转载)
  • 三星平板 N8000刷机升级安卓版本到7.1过程记录
  • 还你一个优雅的桌面
  • Webservice技术详解
  • 一步一步教你网站同步镜像