shell,重定向与管道符号

文章目录

  • 一,什么是shell
  • 二,shell脚本和作用
    • 1. shell脚本
    • 2. 作用
  • 三,shell脚本的构成内容
  • 四,创建和运行Shell脚本
  • 五,重定向与管道操作
    • 1. 交互式硬件设备
    • 2. 重定向操作概览表
    • 3. 管道操作

一,什么是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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/46529.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Matlab 判断直线上一点

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 判断一个点是否位于一直线上有很多方法,这里使用一种很有趣的坐标:Plucker线坐标,它的定义如下所示: 这个坐标有个很有趣的性质,我们可以使用Plucker坐标矢量构建一个Plucker矩阵: 则它与位于对应线上的齐次点…

排序(三)——归并排序(MergeSort)

欢迎来到繁星的CSDN&#xff0c;本期内容主要包括归并排序(MergeSort)的实现 一、归并排序的主要思路 归并排序和上一期讲的快速排序很像&#xff0c;都利用了分治的思想&#xff0c;将一整个数组拆成一个个小数组&#xff0c;排序完毕后进行再排序&#xff0c;直到整个数组排序…

文章管理小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;作者管理&#xff0c;文章管理&#xff0c;文章分类管理&#xff0c;论坛&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;文章&#xff0c;论坛&#xff0c;我的 开发系统…

代码随想录算法训练营第五十四天|99.岛屿数量 深搜、广搜、100.岛屿的最大面积

99.岛屿数量 题目链接&#xff1a;99.岛屿数量 文档讲解&#xff1a;代码随想录 状态&#xff1a;不会 深搜 思路&#xff1a; 遍历网格&#xff0c;发现岛屿&#xff1a;我们需要遍历整个二维网格&#xff0c;检查每一个位置上的元素。如果在遍历过程中遇到陆地&#xff08;…

计网(1.1~1.4)

1.1计算机网络在信息时代的作用 21世纪的重要特征数字化、网络化和信息化 有三类网络&#xff1a;电信网络、有线电视网络和计算机网络 互联网两个重要基本特点&#xff0c;即连通性和共享 1.2因特网概述 &#xff08;1&#xff09;网络、互联网和互连网 网络:由若干结点和连接…

企业全历史行为数据 让你对竞争对手的一切清清楚楚

关于商业竞争&#xff0c;在刚进入信息时代的那些年&#xff0c;人们说“现代商战就是信息战”&#xff0c;强调用非对称的或者更快获得的信息来赢得竞争&#xff1b;近些年进入大数据时代&#xff0c;人们又说“得数据者得天下”&#xff0c;发现“数据算法”有很多妙用&#…

2024 Q1:AVP时代下全球XR头显市场动态与展望

随着苹果Vision Pro&#xff08;AVP&#xff09;的发布&#xff0c;空间计算时代正式拉开序幕&#xff0c;全球扩展现实&#xff08;XR&#xff09;产业迎来新的发展机遇与挑战。尽管苹果的加入激发了市场活力&#xff0c;但2024年第一季度的XR头显市场却呈现出复杂多变的格局&…

压缩视频的最佳方法,视频压縮大小不影响画质

在数字媒体时代&#xff0c;视频已成为我们记录生活和传递信息的重要方式。但随着视频分辨率的提升和拍摄时长的增加&#xff0c;视频文件的大小也随之“膨胀”。大视频文件不仅占用大量存储空间&#xff0c;还在分享和传输过程中造成不便。如何在保证画质的前提下&#xff0c;…

《基于 LatentFactor + Redis + ES 实现动态药房分配方法》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; 近期刚转战 CSDN&#xff0c;会严格把控文章质量&#xff0c;绝不滥竽充数&#xff0c;欢迎多多交流。&am…

LabVIEW液压数据采集测试系统

液压系统是装载机的重要组成部分&#xff0c;通过液压传动和控制实现各项作业功能&#xff0c;如提升、倾斜、转向等。液压系统的性能直接影响装载机的作业效率和稳定性。为了保证装载机液压系统的正常运行和优化设计&#xff0c;需要对其进行数据采集和测试。本文介绍了一套基…

vue学习day09-自定义指令、插槽

29、自定义指令 &#xff08;1&#xff09;概念&#xff1a;自己定义的指令&#xff0c;可以封装一些dom操作&#xff0c;扩展额外的功能。 &#xff08;2&#xff09;分类&#xff1a; 1&#xff09;全局注册 2&#xff09;局部注册 3&#xff09;示例&#xff1a; 让表…

gorm多表联合查询 Joins方法 LEFT JOIN , RIGHT JOIN , INNER JOIN, FULL JOIN 使用总结

gorm中多表联合查询&#xff0c;我们可以使用Joins来完成&#xff0c;这个Joins方法很灵活&#xff0c;我们可以非常方便的多多表进行联合查询&#xff0c; 我们先来看看这个方法的官方定义和使用示例&#xff1a; Joins方法定义和使用示例 当然我们这里要说的使用方式是官方示…

CUDA编程 - clock 学习记录

clock 学习记录 一、完整代码二、核函数流程三、main 函数流程四、学习总结&#xff08;共享内存的声明和使用&#xff09;&#xff1a;4.1、例子4.2、数据从全局内存复制到共享内存&#xff1a; 该程序利用CUDA并行计算能力&#xff0c;执行归约操作以找到每个块内的最小值&am…

Spark项目通用开发框架

文章目录 1. 大数据项目结构2. 类说明2.1 公共接口类2.2 TaskNameEnum指定每个任务的名称2.3 TaskRunner中编写任务的业务逻辑 3. 任务执行脚本 每个公司内部都有一套自己的架子&#xff0c;一般新人来了就直接在已有的架子上开发业务。 以下仅仅作为记录下自己使用的架子&…

16_网络IPC1-套接字描述符

用户数据报协议(UDP) 与 传输控制协议(TCP) 文件描述符函数使用套接字的行为 禁止套接字IO

vue 自定义滚动条同步拖动(移动端)

实现效果&#xff0c;拖动左右箭头实现图片区域同步滚动&#xff0c;到边缘停止拖动。 HTML代码 <template><div touchstart"onClick"><!--使用draggable组件 图片列表区域--><draggablev-model"select_list"end"onEnd"cl…

[Windows] 无需PS基础也香 Inpaint v10.2高级便携版

描述 对于经常在互联网上进行操作的学生&#xff0c;白领等&#xff01; 一款好用的软件总是能得心应手&#xff0c;事半功倍。 今天给大家带了一款高科技软件 Inpaint v10.2高级便携版 无需额外付费&#xff0c;永久免费&#xff01; 亲测可运行&#xff01;&#xff01; 内容…

AV1 编码标准中帧内预测技术概述

AV1 编码标准帧内预测 AV1&#xff08;AOMedia Video 1&#xff09;是一种开源的视频编码格式&#xff0c;旨在提供比现有标准更高的压缩效率和更好的视频质量。在帧内预测方面&#xff0c;AV1相较于其前身VP9和其他编解码标准&#xff0c;如H.264/AVC和H.265/HEVC&#xff0c;…

EMR 集群时钟同步问题及解决方案An error occurred (InvalidSignatureException)

目录 1. 问题描述2. 问题原因3. 解决过程4. 时钟同步的重要性5. Linux 系统中的时钟同步方式6. 检查 Linux 系统时钟同步状态7. EMR 集群中的时钟同步配置8. 时钟同步对大数据组件的影响9. 监控和告警策略10. 故障排除和最佳实践11. 自动化时钟同步管理12. 时钟同步与数据一致性…

C++20中的constinit说明符

constinit说明符断言(assert)变量具有静态初始化&#xff0c;即零初始化和常量初始化(zero initialization and constant initialization)&#xff0c;否则程序格式不正确(program is ill-formed)。 constinit说明符声明具有静态或线程存储持续时间(thread storage duration)的…