文章目录
- 一,什么是shell
- 二,shell脚本和作用
- 1. shell脚本
- 2. 作用
- 三,shell脚本的构成内容
- 四,创建和运行Shell脚本
- 五,重定向与管道操作
- 1. 交互式硬件设备
- 2. 重定向操作概览表
- 3. 管道操作
一,什么是shell
- shell是一个命令行解释器。为用户提供了一个界面,用于与操作系统进行交互。Shell可以接受用户输入的命令,并将这些命令传递给操作系统执行。
centos中有
bash ( /bin/bash)是目前大多数Linux版本采用的默认Shell
nologin:可以让用户无法登录主机
以下都被bash代替
- 系统某些服务在运行过程中,会去检查用户是否能够使用的shells,而这些shell的查询结果就是由/etc/shells这个文件产生。
- 在登陆时,系统就会给shell权限去操作,登录获得的shell就记录在/etc/passwd这个文件内。
- 不同的shell有不同的功能,shell决定了linux里面默认的shell是/bin/bsah。
- 多数linux系统默认使用的是bash shell,默认登陆shell是/bin/bash,可以查看/etc/passwd文件里注明
- 是针对用户而言的,可以查看/etc/passwd里面的最后的字段使用的是哪个shell,如果想要修改可以用chmod -s或者chsh -s来重新指定。
二,shell脚本和作用
它介于操作系统内核与用户之间,是一个命令解释器,负责把用户输入的操作命令并解释,将需要执行的操作传递给内核执行,并输出执行结果。
shell有以下种类
- Bourne Shell (sh)
- Bourne Again Shell (bash)
- C Shell (csh)
- Korn Shell (ksh)
- Z Shell (zsh)
1. shell脚本
把 linux 命令或语句放在一个文件中,然后通过这个程序文件去执行时,这个程序为 shell 脚本或 shell 程序;可以在脚本中输入一系统的命令以及相关的语法语句组合,比如变量,流程控制语句等,把他们有机结合起来就形成了一个功能强大的 shell 脚本
2. 作用
- 自动化完成任务:Shell脚本可以自动化执行重复性任务,如备份、系统监控、文件处理等。
- 简化命令执行:通过脚本,可以将多个命令组合成一个文件,简化命令执行过程。
- 灵活性:支持变量、条件判断、循环等编程结构,使得脚本可以处理复杂的逻辑。
- 跨平台:大多数Shell脚本可以在不同的类Unix系统上运行,如Linux、macOS、BSD等。
三,shell脚本的构成内容
#!/bin/bash”,脚本申明(默认解释器):表示此行以下的代码语句是通过/bin/bash程序来执行。还有其他类型的解释器,
比如#!/usr/bin/python、#!/usr/bin/expect
注释信息:以“#”开头的语句表示为注释信息,被注释的语句在脚本运行时不会被执行
可执行语句:如echo命令,用于输出“ ”之间的字符串
四,创建和运行Shell脚本
- 创建脚本文件:使用文本编辑器(如
nano
、vi
、gedit
)创建一个脚本文件,例如myscript.sh
。 - 编写脚本:在文件中输入需要执行的命令和逻辑。
- 保存并退出:保存文件并退出编辑器。
- 赋予执行权限:使用
chmod +x myscript.sh
赋予脚本执行权限。 - 执行脚本:使用
./myscript.sh
或sh myscript.sh
来执行脚本。
shell 脚本的执行方式
方法一:当前路径(决定路径与相对路径)下执行脚本(要有执行权限)
/home/first.sh 或者 ./first.sh
方法二:sh 、bash脚本文件路劲(这种方式可以不对脚本文件添加执行权限)
bash first.sh 或 sh first.sh
方法三:source 脚本文件路劲(可以没有执行权限)
source first.sh
方法四:其他方法
sh < first.sh 或者 cat first.sh |sh(bash)
创建脚本文件
编写保存退出
赋予权限
执行
例1
例2
五,重定向与管道操作
1. 交互式硬件设备
- 标准输入:从该设备接收用户输入的数据。
- 标准输出:通过该设备向用户输出数据。
- 标准错误:通过该设备报告执行出错信息。
| 类型 | 设备文件 | 交互式硬件设备 | 文件描述符编号 | 默认设备 |
| — | — | — | — | — |
| 标准输入 | /dev/stdin | 从该设备接收用户输入的数据 | 0 | 键盘 |
| 标准输出 | /dev/stdout | 通过该设备向用户输出数据 | 1 | 显示器 |
| 标准错误输出 | /dev/stderr | 通过该设备报告执行出错信息 | 2 | 显示器 |
2. 重定向操作概览表
类型 | 操作符 | 用途 | 示例 |
---|---|---|---|
重定向输入 | < | 从指定的文件读取数据,而不是从键盘输入 | command < inputfile |
重定向输出 | > | 将输出结果保存到指定的文件(覆盖原有内容) | command > outputfile |
>> | 将输出结果追加到指定的文件尾部 | command >> outputfile | |
标准错误输出 | 2> | 将错误信息保存到指定的文件(覆盖原有内容) | command 2> errorfile |
2>> | 将错误信息追加到指定的文件中 | command 2>> errorfile | |
混合输出 | &> | 将标准输出和标准错误的内容保存到同一个文件中 | command &> outputfile |
**例1重定向输出 **
**例2重定向输出 **
例3重定向输入
例4重定向输入
以0作为分界符,只要不输入0就会一直输入数据从而显示到屏幕
例5重定向输出
/dev/null类似黑洞,所有写入它的内容都会永远丢失. 从它那儿读取内容则什么也读不到. /dev/null 对命令行和脚本都非常的有用
例6
例7重定向输入
可以把输入重定向和输出重定向结合使用,把从屏幕输出的内容保存到文件
例7错误重定向
把正确和错误的消息输入到相同的位置
1>&2 把标准输出重定向到标准错误
或者
2>&1 把标准错误重定向到标准输出
3. 管道操作
**管道(pipe)操作为不同命令之间的协同工作提供了一种机制,位于管道符号“|”左侧的命令输出的结果,将作为右侧命令的输入(处理对象),同一行命令中可以使用多个管道。 **
在 Shell 脚本应用中,管道操作通常用来过滤所需要的关键信息。
$bash 表示系统提示符, 表示系统提示符, 表示系统提示符, 表示此用户为普通用户,超级用户的提示符是#,
bash是shell的一种,是linux下最常用的一种shell
$bash的意思是执行一个子shell,子shell为bash。
例1
grep “/bin/bash$” /etc/passwd | awk -F: ‘{print $1,$7}’