shell脚本编程规范与变量

Shell编程规范及变量 文章目录一.Shell脚本1.1Shell概述1.2Shell脚本 一.Shell脚本 1.1Shell概述 Shell是Linux系统中开机自动加载的一个特殊程序,它将用户输入的指令,转换成Linux内核可以识别的语言,从而让内核执行调用硬件。 Bash是Linux系统中默认使用shell的程序,它位于/bin/bash。 1.2Shell脚本 将需要执行的命令保存到一个文件中,按照顺序执行,它不需要编译,它是解释型的 ... 阅读详情

一、shell脚本编程

1.1、编程语言排名

https://www.tiobe.com/tiobe-index/

1.2、什么是shell

Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户进行对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕反馈给用户。

这种对话方式可是交互也可以是非交互式的,我们所输入的命令计算机是不识别的,这时就需要一种程序来帮助我们进行翻译,变成计算机能识别的二进制程序,同时又把计算机生成的结果返回给我们。

1.3、shell的作用

Linux系统中的Shell是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。 
常见的 Shell 解释器程序有很多种,使用不同的 Shell时,其内部指令、命令行提示符等方面会存在一些区别。通过/etc/shells 文件可以了解当前系统所支持的 Shell 脚本种类。

cat /etc/shells

/bin/sh   #是bash命令的软链接  (已经被/bin/bash所替换)
/bin/bash   基准于GNU的框架下发展出的Shell。
/usr/bin/sh   已经被bash所替换。
/usr/bin/bash   #centos和redhat系统默认使用bash shell
/bin/tcsh   #csh的增强版,与csh完全兼容 整合了csh,提供更多的功能。
/bin/csh   #已经被/bin/bash 所替换  (整合C shell,提供更多的功能)

注:nologin:奇怪的shell,这个shell可以让用户无法登录主机。
       bash ( /bin/bash)是目前大多数Linux版本采用的默认Shell。

1.4、关于shell的一些问题

1.4.1、为什么我们的系统上合法的shell要写入/etc/shells这个文件?


这是因为系统某些服务在运行过程中,会去检查用户能够使用的shells,而这些shell的查询就是借由/etc/shells这个文件。

1.4.2、用户什么时候可以取得shell来工作?还有我这个默认会取得哪一个shell?

当我登录的时候,系统就会给我shell让我来工作,而这个登录取得的shell就记录在/etc/passwd这个文件内。

不同的shell具备不同的功能,shell还决定了Linux中默认的shell是/bin/bash,

流行的shell有ash、bash、ksh、csh、zsh等,不同的shell都有自己的特点以及用途目前大多数linux系统默认使用的是bash shell,默认登陆shell是/bin/bash,可以查看/etc/passwd文件里注明
这个shell是针对用户而言的,可以查看/etc/passwd里面的最后的字段使用的是哪个shell,如果想要修改可以用chmod -s或者chsh -s来重新指定

1.4.3、shell脚本能干什么

自动化完成软件的安装部署,如安装部署LAMP架构服务
自动化完成系统的管理,如批量添加用户
自动化完成备份,如数据库定时备份
自动化的分析处理,如网站访问量

1.4.4、shell脚本使用场景

在需要完成大量复杂、重复性的工作时,不需要在命令行重复执行命令,直接运行shell脚本即可,大大的节省了时间提高了效率


1.4.5、如何学习shell脚本

熟悉掌握各种linux命令
掌握脚本的标准格式
掌握脚本的基本语法

1.5、shell脚本的构成

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

1.6、shell初入门

1.6.1、创建 shell 程序的步骤:

第一步:创建一个包含命令和控制结构的文件。
第二步:修改这个文件的权限使它可以执行     # 使用 chmod +x  test.sh  
第三步:检测语法错误           
第四步:执行 ./first.sh

1.6.2、shell脚本执行

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.6.3、案例

vim first.sh

#!/bin/bash
# This is my first Shell-Script.
cd /boot
echo "当前的目录位于:"
pwd
echo "其中以vml开头的文件包括:"
ls -lh vml*

二、重定向与管道操作

2.1、重定向

重定向的意思就是 ,不输出到默认设备上,输出到指定的位置(文件 其他输出设备)

用户通过操作系统处理信息的过程中,包括以下几类交互设备文件
标准输入(STDIN):默认的设备是键盘,设备文件/dev/stdin,文件编号为 0,命令将从标准输入文件中读取在执行过程中需要的输入数据。 
标准输出(STDOUT):默认的设备是显示器,设备文件/dev/stdout,文件编号为 1,命令将执行后的输出结果发送到标准输出文件。 
标准错误(STDERR):默认的设备是显示器,设备文件/dev/stderr 文件编号为 2,命令将执行期间的各种错误信息发送到标准错误文件。
从键盘接收用户输入的各种命令字串、辅助控制信息,并将命令结果输出到屏幕上;如果命令执行出错,也会将错误信息反馈到屏幕上。

交互式硬件设别
- 标准输入:从该设备接收用户输入的数据
- 标准输出:通过该设备向用户输出数据
- 标准错误:通过该设备报告执行出错信息

类型操作符用途
重定向输入<从指定的文件读取数据,而不是从键盘输入
重定向输出1>将输出结果保存到指定的文件(覆盖原有内容)
>>将输出结果追加到指定的文件尾部
标准错误输出2>将错误信息保存到指定的文件(覆盖原有内容)
2>>标准错误输出结果追加到指定的文件尾部
混合输出&>将标准输出、标准错误的内容保存到同一个文件中

2.1.1、重定向输出 

重定向输出指的是将命令的正常输出结果保存到指定的文件中,而不是直接显示在显示器的屏幕上。
重定向输出使用“>”或“>>”操作符号,分别用于覆盖或追加文件。
若重定向输出的目标文件不存在,则会新建该文件,然后将前面命令的输出结果保存到该文件中;若目标文件已经存在,则将输出结果覆盖或追加到文件中。

2.1.1.1、实验
  • >意思是当原来文件中有内容的话,原来的内容会被覆盖掉
  • >>意思是当原来文件中有内容的话,新加的内容会追加到里面而不会覆盖原来的内容

2.1.2、重定向输入

重定向输入指的是将命令中接收输入的途径由默认的键盘改为指定的文件,而不是等待 从键盘输入。重定向输入使用“<”操作符。 通过重定向输入可以使一些交互式操作过程能够通过读取文件来完成。

例如,使用 passwd 命令为用户设置密码时,每次都必须根据提示输入两次密码字串,非常烦琐,若改 用重定向输入将可以省略交互式的过程,而自动完成密码设置(结合 passwd 命令的“--stdin” 选项来识别标准输入)。


2.1.2.1、实验

#添加初始密码串内容"123456" 123456
vim pass.txt    

#从pass.txt读入密码给paswd命令而不是等待用户从键盘输入123456
passwd --stdin jk < pass.txt 

2.1.2.2、探讨

系统默认以键盘为输入设备,需要我们输入东西,然后读取

 跟cat 1.txt 结果是一样的,但是这是以1.txt文件作为输入设备了

默认情况下,cat 命令会接受标准输入设备(键盘)的输入,并显示到控制台,但如果用文件代替键盘作为输入设备,那么该命令会以指定的文件作为输入设备,并将文件中的内容读取并显示到控制台。

cat <<0    以0作为分界符,只要不输入0就会一直输入数据从而显示到屏幕

单个<不行

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

2.1.4、错误重定向

属于重定向输出的一种情况
错误重定向指的是将执行命令过程中出现的错误信息(如选项或参数错误等)保存到指 定的文件,而不是直接显示在屏幕上。错误重定向使用“2>”操作符。

作用:

  • 在实际应用中,错误重定向可用来收集程序执行的错误信息,为排错提供依据,还可以将无关紧要的错误信息重定向到空文件/dev/null 中,以保持脚本输出的简洁

使用“2>”操作符时,会像使用“>”操作符一样覆盖目标文件的内容,若要追加内容而不是覆盖文件,则应改用“2>>”操作符

当命令输出的结果可能既包括标准输出(正常执行)信息,又包括错误输出信息时,可以使用操作符“>”“2>”将两类输出信息分别保存到不同的文件,也可以使用“&>”操作符将两类 输出信息保存到同一个文件


 /dev/null  把它看作"黑洞",所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到,  /dev/null 对命令行和脚本都非常的有用
echo blackhole> /dev/null
cat /dev/null 什么信息也看不到

2.1.4.1、&>和>&符号
  1. &表示等同于的意思

  2. 把正确和错误的消息输入到相同的位置

  3. 1>&2 把标准输出重定向到标准错误

  4. 2>&1 把标准错误重定向到标准输出

本来标准输出不可以输出,但是我现在等同于错误了

ls /tmp xxxx >1.txt   2>&1         

2>&1 把标准错误重定向到标准输出

看图好理解

ls /tmp xxxx 2>2.txt 1>&2  

如果是1>&2再写>file.txt,&2代表前面错误的文件,显示,然后1的内容保存

画图理解

如果你先写2>&1再写>999.txt,那么标准错误会被重定向到当前的标准输出位置,显示了

但随后标准输出被重定向到999.txt

&>   是将标准输出、标准错误的内容保存到同一个文件中

2.1.4.2、实验1

例 1: 将错误显示的内容和正确显示的内容分开


注:使用 2> 操作符时,会像使用 > 一样覆盖目标文件的内容,若追加而不覆盖文件的内容即可使用 2>> 操作符

2.1.4.2、实验2

在编译源码包的自动化脚本中,若要忽略 make、make install 等操作过程信息,则可以将其定向到空文件/dev/null。

#!/bin/bash # 自动编译安装 httpd 服务器的脚本
cd /usr/src/httpd-2.4.25/ 

./configure --prefix=/usr/local/httpd --enable-so &> /dev/null 
make &> /dev/null 
make install &> /dev/null  #/dev/null等同于make install > /dev/null 2>&1

2.2、管道操作

管道(pipe)操作为不同命令之间的协同工作提供了一种机制,位于管道符号“   |   ”左侧的命令输出的结果,将作为右侧命令的输入(处理对象),同一行命令中可以使用多个管道。 

简单的说:

  • 管道(pipe)符号用于将一个命令的输出作为另一个命令的输入。

在 Shell 脚本应用中,管道操作通常用来过滤所需要的关键信息。
$bash  

bash是shell的一种,是linux下最常用的一种shell
$bash的意思是执行一个子shell,此子shell为bash。

$表示系统提示符,$ 表示此用户为普通用户,超级用户的提示符是#,

2.2.1、实验1

grep "/bin/bash$" /etc/passwd | awk -F: '{print $1,$7}'

2.2.2、实验2

df -hT | grep "/$" | awk '{print $6}'

  • "/$" 是一个正则表达式,用于匹配以 / 结尾的行。在 df 命令的输出中,根文件系统的挂载点就是 /,所以这个表达式用于筛选出根文件系统的行。(^是开头)

总结:
重定向与管道操作是 Shell 环境中十分常用的功能,若能够熟练掌握并灵活运用,将有助于编写代码简洁但功能强大的 Shell 脚本程序

shell脚本 无 阅读详情

相关推荐

嵌入式C开发必备:用Cursor规则搞定代码风格检查(附Pikachu项目实战)

本文以Pikachu开源项目为例,详细介绍了如何利用Cursor的AI代理规则系统,为嵌入式C开发项目配置一套完整的代码风格检查与规范执行方案。通过实战演示,指导开发者创建项目级规则,实现命名、格式、硬件抽象层及驱动开发的自动化规范,从而提升代码一致性、可维护性和团队协作效率。

weixin_29181861的博客 597

linux脚本打开文件任意行,shell脚本语言(超全超详细)

shell脚本语言1、shell的概述2、脚本的调用形式打开终端时系统自动调用:/etc/profile 或 ~/.bashrc3、shell语法初识3.1、定义以开头:#!/bin/bash3.2、单个"#"号代表注释当前行第一步:编写脚本文件第二步:加上可执行权限第三步:运行三种执行方式 (./xxx.sh bash xxx.sh . xxx.sh)./xxx.sh :先按照 文件中#!指定的...

weixin_33767088的博客 3010

从‘包饺子’到‘包络线’:一个生活化比喻讲透长期与短期成本决策

本文通过饺子馆经营的生活化比喻,深入浅出地解析了长期与短期成本决策的核心逻辑。从调整人力(可变成本)到扩建厨房(固定成本),揭示了包络线理论在商业决策中的实际应用,帮助企业主在规模经济与成本控制间找到平衡点。

weixin_32006655的博客 337

shell脚本详解

目录 一、shell脚本的详细介绍1.1 基础概念1.2 几种常见的Shell1.3 Shell与编译型语言的差异1.4 什么时候使用Shell二、shell脚本的使用2.1 建立和运行shell程序2.2 shell变量2.3 shell特殊变量2.4 常用shell内嵌命令2.5 条件测试三、shell脚本编程基础知识3.1 shell基本运算符3.2 shell条件语句3.3 shell循环类型四、shell数组五、shell函数5.1 创建函数:5.2 参数传递给函数:5.3 从函数的返回值:5.4

创作不易,请多支持,将为本站提供更多「有价值的文章」。 2万+

树莓派4B+红外传感器:手把手教你DIY一个能走黑线的智能小车(Python代码全解析)

本文详细介绍了如何使用树莓派4B和红外传感器DIY一个智能循迹小车,包括硬件配置、GPIO连接、Python代码实现及优化算法。通过动态PWM调速、状态机设计和赛道记忆算法,提升小车的循迹性能和稳定性。适合初学者和电子爱好者动手实践。

weixin_29188043的博客 266

基于python的奥运会历史数据分析【120年】

数据分析实战案例

xff123456_的博客 3338

Shell脚本编程规范与变量的小白总结

目录一、Shell脚本编程规范1.1 Shell脚本应用场景1.2 Shell脚本编程规范1.2.1 Shell解释器种类1.2.2 Shell脚本编辑1.2.3 Shell脚本执行1.2.4 Shell脚本输出提示性信息1.2.5 重定向与管道操作管道操作符号 “|”二、变量 一、Shell脚本编程规范 1.1 Shell脚本应用场景 Shell脚本(Shell Script)就是将要执行的命令按照顺序保存到一个文本文件中,并给该文件可执行权限,方便一次性执行的一个程序文件。主要是方便管理员进行设置或者

weixin_47219725的博客 798

RT-Thread Studio使用笔记(四):带片外Flash(W25Q128)的OTA(YModem)

前言 在学习OTA之前,请先参考上两篇博客写的关于SPI设备及W25Q128的使用方法,传送门: https://blog.youkuaiyun.com/tigerots/article/details/107423633 https://blog.youkuaiyun.com/tigerots/article/details/107933991 如何使用OTA 一. 制作BootLoader 打开Bootloader 在线获取地址,注册,并根据RT-thread官方文档生成BootLoader,官方文档已经写的很清楚,再此

tigerots的专栏 4007

Shell脚本编程规范与变量

Shell脚本编程规范与变量

wwwu1998的博客 655

国产数据库PolarDB-X实战:5分钟快速搭建本地开发环境(附Docker一键部署脚本)

本文提供了一份详尽的国产分布式数据库PolarDB-X本地开发环境搭建指南。通过Docker Compose一键部署脚本,开发者可在5分钟内快速启动一个功能完整的PolarDB-X实例,涵盖环境准备、脚本解析、连接验证及日常维护,极大简化了国产数据库的入门和体验流程。

weixin_29246195的博客 356

科研神器: 用Gemini 3

Edge藏了个科研开挂神器!免TZ/免谷歌账号用Gemini 3,1分钟上手(附保姆级教程) 做科研查文献、理数据总卡壳?想蹭Gemini 3的AI能力,却被“谷歌账号+TZ+节点筛选”三连劝退? 现在不用折腾了!Edge浏览器里装个插件,直接把Gemini 3揣进口袋——**免翻墙、免谷歌账号、国内直接用**,分分钟让你的科研效率翻三倍,导师都得问你“偷偷开了啥挂”!

ZhangJiqun&191cm&85kg 1159

shell脚本概述——shell编程规范与变量

目录前言一、shell脚本编程规范1.1:开发语言概述1.2:shell脚本应用场景1.3:shell编程规范1.3.1:shell的作用1.4 编写shell脚本1.5 执行脚本文件1.5.1 方法一:sh脚本文件路径1.5.2 方法二:source脚本文件路径1.5.3 方法三:. [空格] 脚本文件路径1.5.4 方法四:脚本文件路径(绝对路径与相对路径)1.6 更完善的脚本构成1.7 管道与重定向1.7.1 交互式硬件设备1.7.2 重定向操作 前言 在一些复杂的 Linux 维护工作中,大量重复性

qq_48191100的博客 1531

Python爬虫实战:高效爬取中国版权登记数据

本文将详细介绍如何使用Python最新技术栈构建一个高效、稳定的中国版权登记数据爬虫系统。我们将使用Playwright+Asyncio实现无头浏览器自动化,结合Redis分布式任务队列和MongoDB数据存储,打造一个能够应对反爬机制的企业级数据采集方案。文章包含完整代码实现、性能优化技巧以及法律合规建议,帮助开发者快速掌握大规模数据采集的核心技术。本文详细介绍了2024年使用Python最新技术栈构建中国版权登记数据爬虫的完整方案。基于Playwright的无头浏览器自动化。

2201_76125261的博客 1897

Shell脚本编程规范及变量

Shell脚本编程规范及变量前言一、Shell脚本概述(1)什么是Shell(2)Shell脚本的基本概念(3)Shell脚本作用Shell中有哪些Shell二、Shell编程规范(1)创建Shell脚本程序步骤(2)脚本构成(3)Shell脚本执行方式三、重定向与管道符号(1)交互式硬件设备(2)重定向操作(3)管道符号四、Shell变量的作用(1)变量的作用(2)变量类型五、自定义变量(1)定义新的变量(2)查看定义的变量的值(3)赋值时,使用引号(4)从键盘输入内容为变量赋值(5)export命令(6

qq1356059950的博客 565

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Shell脚本攻略:Shell编程规范与变量

(1)Shell简介Linux 系统中的 Shell 是一个特殊的应用程序,它介于操作系统内核与用户之间,充当 了一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执 行的操作传递给内核执行,并输出执行结果。(2)Shell脚本的概念及处理逻辑① Shell脚本1)将要执行的命令按顺序保存到一个文本文件2)给该文件可执行权限3)可结合各种Shell控制语句完成更复杂的操作② 处理处理1)顺序执行:程序按从上到下的顺序执行。

cronaldo91的博客 2363

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Linux系统Shell脚本 ----- 编程规范和变量详细解读(一)

1.定义新的变量:自定义变量 变量名=变量值变量名以字母或者下划线开头,区分大小写,建议全大写,长度不超过20个。

zzzxxx520369的博客 1811

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

shell脚本详解之编程规范及变量

Shell脚本编程概述 Shell的作用 Shell基本概念 将要执行的命令按顺序保存到一个文本文件; 给该文件可执行权限; 可结合各种Shell控制语句以完成更复杂的操作。 Shell脚本应用场景 重复性操作 交互性任务 批量事务处理 服务运行状态监控 定时任务执行 Shell作用——翻译官 shell是一个特殊的应用程序,它介于操作系统内核和用户之间,充当了一个“命令解释器”的角色,负责接收用户输入的操作指令并进行解释,将需要执行的操作传递

weixin_47062656的博客 410

shell编程--规范与变量(shell编程规范,管道、重定向用法,shell脚本变量)

文章目录一、 shell脚本与编程规范1.1 shell脚本1.2 shell编程规范1.3 shell脚本的执行二、 管道与重定向2.1 管道操作2.1.1 管道符号与正则表达式的应用实例2.2 重定向操作2.2.1 重定向输入2.2.2 重定向输出 一、 shell脚本与编程规范 在一些复杂Linux维护工作中,会有大量的重复性工作和交互操作,如果一直用人工的方式操作,不但费时费力,还容易出错,而编写一个shell脚本程序就可以很好的解决这个问题。 1.1 shell脚本 shell脚本(Shell S

kimowinter的博客 639

Shell脚本: 编程规范与变量,开启小白的shell之路

导航表shell脚本编程规范■Shell脚本的概念■Shell脚本应用场景■Shell的作用——命令解释器,“翻译官编写第一个shell脚本■编写脚本代码■赋武予可执行权限■执行脚本文件(四种方法)执行脚本文件(四种方法)的总结■更完善的脚本构成■管道与重定向■交互式硬件设备■重定向操作■管道操作符号 ‘|’Shell变量的作用、类型■变量的作用■变量的类型■定义一个新的变量与查看变量的值■赋值时使用引号与从键盘输入内容为变量赋值■设置变量的作用范围■自定义变量■常用运算符特殊的Shell变量■环境变量

著名艺术家 730

shell脚本的编程规范与变量

一、Shell脚本的概述 1.1Shell脚本的概念 将要执行的命令按顺序保存到一个文本文件 给该文件可执行权限 可结合各种Shell控制语句以完成更复杂的操作 1.2 Shell脚本应用场景 重复性操作 交互性任务 批量事务处理 服务运行状态监控 定时任务执行 1.3 shell 的作用 作用:命令解释器,翻译官 介于系统内核与用户之间,负责解释命令行 Linux系统中的 shell 是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个"命令解释器"的角色,负责接收用户输入

m0_59579177的博客 605

Shell编程规范和Shell脚本变量

编程(Programming)是指通过编写特定格式的指令(代码),让计算机完成特定任务或解决实际问题的过程。编程的核心是将人类逻辑转化为计算机可执行的指令,涉及算法设计、数据结构、调试优化等步骤。Shell是操作系统的命令行解释器(Command Interpreter),充当用户与内核(Kernel)之间的桥梁。它接收用户输入的命令,将其转换为系统调用,并返回执行结果。Shell 脚本是由Shell 解释器执行的文本文件,其中包含一系列命令、控制结构和变量,用于自动化完成特定任务。

qq_54324852的博客 779
上一篇: PXE高效批量网络装机
下一篇: shell脚本变量和运算
YCyjs
博客等级 码龄2年 4496粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值