Shell脚本基础

159 阅读4分钟

一、Shell是什么

     Linux系统中运行的一种特殊程序

1.shell的作用

     介于系统内核与用户之间,负责解释命令行

2.当用户登录shell

 -   用户登陆Linux系统时,自动加载一个Shell程序
 -   bash是Linux系统中默认使用的Shell程序
 -   bash文件位于/bin/bash

3.应用场景

  • 重复性操作
  • 交互性任务
  • 批量事务处理
  • 服务运行状态监控
  • 定时任务执行

二、linux 中常见的shell

  1. bash:基于GUN的框架下发展的shell

  2. csh:类似C语言的shell

  3. tcsh:整合了csh 提供了更多功能

  4. sh:已经被bash替换

    bash(/bin/bash)是目前大多数 Linux 版本采用的默认 shell。
    

bash特性:

  1. 支持快捷键:比如 ctrl+c 强制终止进程、ctrl+l清屏 、Tab补齐等
  2. 支持查看历史命令(history)
  3. 支持别名
  4. 标准输入和标准输出的重定向
  5. 管道符
  6. 文件名通配机制
  7. 支持命令
  8. 支持变量

三、shell脚本

1.编写脚本代码

  • 使用vim文本编辑器
  • 每行一条Linux命令,按执行顺序依次编写

2.常用执行脚本文件的方法 1、相对路径(都需要x权限)

相对路径:
chmod +x txt.sh
./txt.sh

2、绝对路径

绝对路径:
chmod +x txt.sh
/root/txt.sh

3、指定解释器去执行(bash 脚本名),不需要执行权限。

sh test.sh
或
bash test.sh

4、source或.脚本文件路径

source test.sh
. test.sh
需要相对或绝对路径执行

注意:

  1. 执行脚本时的shell环境:

       source和 . 执行脚本时,会在当前shell环境中执行脚本。
       bash、绝对路径、相对路径 执行脚本时,会创建一个子shell环境,并在这个子shell环境中执行脚本。
    
  2. 不建议使用source来执行脚本,可能会影响一些资源配置。

  3. 脚本中的空白行会被解释器忽略。

  4. 脚本中,除了shebang,余下所有以#开头的行,都回被视作注释行而被忽略。此即为注释行。

四、重定向与管道操作

  1. 交互式硬件设备

标准输入:从该设备接收用户输入的数据

标准输出:通过该设备向用户输出数据

标准错误:通过该设备报告执行出错信息

类型设备文件文件描述编号默认设备
标准输入/dev/stdin0键盘
标准输出/dev/stdout1显示器
标准错误输出/dev/stderr2显示器
  1. 重定向操作
类型操作符用途
重定向输入<从指定的文件读取数据
重定向输出>将标准输出结果保存到指定的文件,并且覆盖原有内容
重定向输出>>将标准输出结果追加到指定的文件的尾部,不覆盖原有内容
标准错误输出2>将错误信息保存到指定的文件,并且覆盖原有内容
标准错误输出2>>将错误信息追加到指定的文件的尾部,不覆盖原有内容
混合输出&>将标准输出、标准错误保存到同一文件中
混合输出2>&1将标准错误输出重定向到标准输出
注:
  • &表示混合,&> 和 >& 都表示将标准输出和错误输出重定向到同一个文件。
  • 命令 > 文件 2>&1,表示把错误输出2重定向给前面的标准输出1 (前面的1被省略了),即将错误输出和标准输出保存到同一个文件中。

例:

1,将“123456789” 重定向输出到 txt1文件中,之后再用txt1文件中的内容给用户zzz设置密码。

image.png

2,将123重定向输出到txt2文件中,之后将111输出到txt2文件中,覆盖原有的123,最后将321追加到txt2文件中。

image.png

3,混合输出,将标准输出和错误输出同时重定向到文件中。

image.png

  1. 管道符号操作"|"

管道符的作用是连接两个命令,将第一个命令的标准输出作为第二个命令的标准输入。 同一行命令中可以使用多个管道符。

格式:命令A | 命令B

image.png