shell,重定向与管道符号

一,什么是shell

  • shell是一个命令行解释器。为用户提供了一个界面,用于与操作系统进行交互。Shell可以接受用户输入的命令,并将这些命令传递给操作系统执行。

centos中有
image.png

bash ( /bin/bash)是目前大多数Linux版本采用的默认Shell
nologin:可以让用户无法登录主机
以下都被bash代替
image.png

  • 系统某些服务在运行过程中,会去检查用户是否能够使用的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. 作用

  1. 自动化完成任务:Shell脚本可以自动化执行重复性任务,如备份、系统监控、文件处理等。
  2. 简化命令执行:通过脚本,可以将多个命令组合成一个文件,简化命令执行过程。
  3. 灵活性:支持变量、条件判断、循环等编程结构,使得脚本可以处理复杂的逻辑。
  4. 跨平台:大多数Shell脚本可以在不同的类Unix系统上运行,如Linux、macOS、BSD等。

三,shell脚本的构成内容


#!/bin/bash”,脚本申明(默认解释器):表示此行以下的代码语句是通过/bin/bash程序来执行。还有其他类型的解释器,
比如#!/usr/bin/python、#!/usr/bin/expect
注释信息:以“#”开头的语句表示为注释信息,被注释的语句在脚本运行时不会被执行
可执行语句:如echo命令,用于输出“ ”之间的字符串

四,创建和运行Shell脚本

  1. 创建脚本文件:使用文本编辑器(如 nanovigedit)创建一个脚本文件,例如 myscript.sh
  2. 编写脚本:在文件中输入需要执行的命令和逻辑。
  3. 保存并退出:保存文件并退出编辑器。
  4. 赋予执行权限:使用 chmod +x myscript.sh 赋予脚本执行权限。
  5. 执行脚本:使用 ./myscript.shsh 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)

创建脚本文件
image.png
编写保存退出
image.png
赋予权限
image.png
执行
image.png

例1
image.png
image.png
image.png

例2
image.pngimage.pngimage.png

五,重定向与管道操作

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重定向输出 **
image.png

**例2重定向输出 **
image.png

例3重定向输入
image.pngimage.pngimage.png

例4重定向输入
以0作为分界符,只要不输入0就会一直输入数据从而显示到屏幕
image.png

例5重定向输出
/dev/null类似黑洞,所有写入它的内容都会永远丢失. 从它那儿读取内容则什么也读不到. /dev/null 对命令行和脚本都非常的有用
image.png
例6
image.png

例7重定向输入
可以把输入重定向和输出重定向结合使用,把从屏幕输出的内容保存到文件
image.png

例7错误重定向
把正确和错误的消息输入到相同的位置
1>&2 把标准输出重定向到标准错误
image.png
或者
2>&1 把标准错误重定向到标准输出
image.png

3. 管道操作

**管道(pipe)操作为不同命令之间的协同工作提供了一种机制,位于管道符号“|”左侧的命令输出的结果,将作为右侧命令的输入(处理对象),同一行命令中可以使用多个管道。 **
在 Shell 脚本应用中,管道操作通常用来过滤所需要的关键信息。
$bash 表示系统提示符, 表示系统提示符, 表示系统提示符, 表示此用户为普通用户,超级用户的提示符是#,
bash是shell的一种,是linux下最常用的一种shell
$bash的意思是执行一个子shell,子shell为bash。

例1
image.png
grep “/bin/bash$” /etc/passwd | awk -F: ‘{print $1,$7}’

image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值