shell基本知识

shell学习教程(超详细完整) 为了方便以后工作和复习,记录一下学习shell脚本的笔记,看这篇文章需要对linux系统熟悉 文章目录一、什么是shell?为什么要学习和使用shell?二、shell的分类shell脚本的执行三、shell变量1.变量的命名规则:2.变量的分类:2.1用户自定义变量:2.1.1变量定义2.1.2变量调用2.1.3变量查看2.1.4变量删除2.2环境变量:1)环境变量设置2)环境变量查询和删除3)系统默认环境变量2.3位置参数变量:2.4预定义变量:3.只读变量:4.接受键盘输入:四、shell 运算符1. 阅读详情

为什么学习和使用Shell编程

什么是Shell

 shell的起源

shell的功能

 shell的分类

如何查看当前系统支持的shell?

如何查看当前系统默认shell?  

驼峰语句

shell脚本的基本元素

shell脚本编写规范 

 shell脚本的执行方式      

shell脚本的退出状态 (查看状态echo $?)

执行脚本的方法


为什么学习和使用Shell编程

对于一个合格的系统管理员来说,学习和掌握 Shell 编程是非常重要的。通过编程,可以在很大程度 上简化日常的维护工作,使得管理员从简单的重复劳动中解脱出来。
shell 程序的特点:
1 、简单易学
2 、解释性语言,不需要编译即可执行

什么是Shell

在学习 Shell 编程之前,必须弄清楚什么是 Shell 。为了能够使读者在学习具体的 Shell 编程之前对 Shell有个基本的了解,本节将对 Shell 进行概括性的介绍,包括 Shell 的起源和功能。

 shell的起源

1964 年,美国 AT&T 公司的贝尔实验室、麻省理工学院及美国通用电气公司共同参与开始研发一套 可以安装在大型主机上的多用户、多任务的操作系统,该操作系统的名称为Multics 。
1970 年,丹尼斯 • 里奇和汤普逊启动了另外一个新的多用户、多任务的操作系统的项目,他们把这 个项目称之为UNICS 。 1973年,使用 C 语言重新编写了 Unix 。通过这次编写,使得 Unix 得以移植到其他的小型机上面。 1979年,第一个重要的标准 UNIX Shell 在 Unix 的第 7 版中推出,并以作者史蒂夫 • 伯恩( Stephen Bourne)的名字命名,叫做 Bourne Shell ,简称为 sh 。
20 世纪 70 年代末, C Shell 作为 2BSD UNIX 的一部分发布,简称 csh 。
之后又出现了许多其他的 Shell 程序,主要包括 Tenex C Shell ( tcsh )、 Korn Shell ( ksh )以及 GNU Bourne-Again shell( bash )。

shell的功能

Shell 又称命令解释器,它能识别用户输入的各种命令,并传递给操作系统。它的作用类似于
Windows 操作系统中的命令行,但是, Shell 的功能远比命令行强大的多。在 UNIX 或者 localhost 中, Shell既是用户交互的界面,也是控制系统的脚本语言。

 shell的分类

Bourne Shell :标识为 sh ,该 Shell 由 Steve Bourne 在贝尔实验室时编写。在许多 Unix 系统中,该 Shell是 root 用户的默认的 Shell 。 Bourne-Again Shell:标识为 bash ,该 Shell 由 Brian Fox 在 1987 年编写,是绝大多数 localhost 发行 版的默认的Shell 。
Korn Shell :标识为 ksh ,该 Shell 由贝尔实验室的 David Korn 在二十世纪八十年代早期编写。它完 全向上兼容 Bourne Shell 并包含了 C Shell 的很多特性。 C Shell:标识为 csh ,该 Shell 由 Bill Joy 在 BSD 系统上开发。由于其语法类似于 C 语言,因此称为 C Shell。

如何查看当前系统支持的shell?

[root@localhost ~] # cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin

如何查看当前系统默认shell?  

[root@localhost ~]# echo $SHELL

/bin/bash

驼峰语句

什么是驼峰语法?
骆驼式命名法就是当变量名或函数名是由一个或多个单词连结在一起,而构成的唯一识别字时, 第 一个单词以小写字母开始;从第二个单词开始以后的每个单词的首字母都采用大写字母 ,例如:
myFirstName 、 myLastName ,这样的变量名看上去就像骆驼峰一样此起彼伏,故得名。
除了驼峰命名法,另外还有匈牙利命名法。基本原则是:变量名 = 属性 + 类型 + 对象描述。匈牙利命
名法关键是:标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单 词或多个单词组合,该单词要指明变量的用途。比如m_lpszStr, 表示指向一个以 0 字符结尾的字符串的长 指针成员变量。 另外,有些程序员喜欢用下划线。比如file_name 。

shell脚本的基本元素

对于一个基本的 Shell 程序来说,应该拥有以下基本元素:
声明:声明用哪个命令解释器来解释并执行当前脚本文件中的语句,一般写的解释器为
#!/bin/bash 。
2. 命令:可执行语句,实现程序的功能。
3. 注释:说明某些代码的功能,通过在代码中增加注释可以提高程序的可读性。
(
1 )单行注释: # 开头的一整行都是注释,例如:
#comment1
#comment2
#comment3
……
2 )多行注释,使用冒号 “:” 配合 here document 可实现多行注释,例如:
:<<BLOCK
…… 注释内容
BLOCK
4. 赋予 rx 的权限

shell脚本编写规范 

1 )脚本文件名应见名知意,例如 backup_mysql.sh
2 )文件开头指定脚本解释器 #!/bin/sh 或 #!/bin/bash
3 )开头加版本特权等信息

# Date: 创建日期
# Author: 作者
# Mail: 联系方式
# Function: 功能
# Version: 版本
4 )脚本中尽量不要用中文注释
别吝啬添加注释,必要的注释方便自己别人理解脚本逻辑和功能;
尽量用英文注释,防止本机或切换系统环境后中文乱码的困扰;
单行注释,可以放在代码行的尾部或代码行的上部;
多行注释,用于注解复杂的功能说明,可以放在程序体中,也可以放在代码块的开始部分。
5 )多使用内部命令
常用的内部命令有: echo 、 eval 、 exec 、 export 、 read 、 shift 、 exit

 shell脚本的执行方式      

1)bash ./filename.sh(产生子进程,再运行,使用当前指定的bash shell去运行)

2 ) ./filename.sh (产生子进程,再运行,使用脚本里面指定的 shell 去运行。使用该种方式执行需要 x 权限
3 ) source ./filename.sh ( source 命令是一个 shell 内部命令,其功能是读取指定的 shell 程序文件,并 且依次执行其中的所有的语句,并没有创建新的子shell 进程,所以脚本里面所有创建的变量都会保存到 当前的shell 里面)
4 ) . filename.sh (和 source 一样,也是使用当前进程执行)

shell脚本的退出状态 (查看状态echo $?)

在 UNIX 或者 Linux 中,每个命令都会返回一个退出状态码。退出状态码是一个整数,其有效范围为 0~255。通常情况下,成功的命令返回 0 ,而不成功的命令返回非 0 值。非 0 值通常都被解释成一个错误 码。行为良好的UNIX 命令,程序和工具都会返回 0 作为退出码来表示成功。
Shell 脚本中的函数和脚本本身也会返回退出状态码。在脚本或者是脚本函数中执行的最后的命令会决定 退出状态码。另外,用户也可以在脚本中使用exit 语句将指定的退出状态码传递给 Shell 。
[root@localhost ~] # vim ~/.vimrc
shell 脚本的执行方式
1 )交互式执行
2 )作为程序文件执行(常用)
对于一组需要经常重复执行的 Shell 语句来说,将它们保存在一个文件中来执行。我们通常称这种包 含多个Shell 语句的文件为 Shell 脚本,或者 Shell 脚本文件。脚本文件是普通的文本文件,可使用任何的 文本编辑器查看或修改Shell 脚本。

执行脚本的方法

1 ) bash ./filename.sh (产生子进程,再运行,使用当前指定的 bash shell 去运行)
2 ) ./filename.sh (产生子进程,再运行,使用脚本里面指定的 shell 去运行。使用该种方式执行需要 x
权限)
autocmd BufNewFile *.py,*.cc,*.sh,*.java exec ":call SetTitle()"
func SetTitle()
if expand( "%:e" ) == 'sh'
call setline(1, "#!/bin/bash" )
call setline(2, "#########################" )
call setline(3, "#File name:" .expand( "%" ))
call setline(4, "#Version:v1.0" )
call setline(5, "#Email:admin@test.com" )
call setline(6, "#Created time:" .strftime( "%F %T" ))
call setline(7, "#Description:" )
call setline(8, "#########################" )
call setline(9, "" )
endif
endfunc

 创建一个shell文件如图

 

shell详细介绍(清晰明了) 变量名称可以由字⺟、数字和下划线组成,但是不能以数字开头,环境变量名建议⼤ 写。等号两侧不能有空格在bash中,变量默认类型都是字符串类型,⽆法直接进⾏数值运算。变量的值如果有空格,需要使⽤双引号或单引号括起来在 Bash 中定义⼀个数组并不难。只需要使⽤⼀对括号来包含所有元素。如下示例:注意:分隔数组中每个元素用空格!!!arr=("陈少熙" "何浩楠" "王一珩") #等号两边不要空格,字符串之间要用空格分隔#遍历数组。 阅读详情

相关推荐

Shell编程【万字Shell详细介绍带你入门建议收藏】

Shell 是系统的用户界面,提供了用户与内核进行交互操作的一种接口Shell 将用户输入的命令并且把它们送到内核去执行,然后返回执行结果Shell 是可编程的,它允许用户编写由 Shell 命令组成的程序在 Unix/Linux 里,一个程序/命令只做好一件事;复杂的问题可以通过多个命令的组合来解决;形式最简单的 Shell 脚本就是一系列命令构成的可执行文件,并可以被其他脚本复用。编写风格良好易读的 Shell 脚本可以提高日常任务的自动化程度和准确性。

小米子的成长日记 3714

Shell基本学习

shell是一个命令行解释器,主要用于翻译用户操作,调用系统内核是一个十分强大的编程语言Linux对shell提供了下面这几个解析器(可去etc/shells中找到解析器列表)/bin/sh/bin/bash/bin/tcsh/bin/csh(1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。(2)等号两侧不能有空格(3)在 bash 中,变量默认类型都是字符串类型,无法直接进行数值运算。(4)变量的值如果有空格,需要使用双引号或单引号括起来。

qq_51260764的博客 1154

S4 Hana SD -信贷管理 - 02

在S4版本中,客户的信用管理数据在事务代码BP维护,业务伙伴角色是UKM000。在维护过程中,我们并不能直接输入信贷控制范围这个组织架构,而是需要输入一个信用段,并且在信用段的维度下去维护相应信用管理数据。对于信用段,可以分为主信用段(信用段是0000)和其他临时信用段,我们可以通过配置把次级信用段的客户信贷负债汇总到主信用段。当然,在后台也有配置,会把信用段和信贷控制范围这两者进行关联.3.2SPROIMG > 财务供应链管理 > 信用管理 > 信贷风险监视 > 主数据 > 创建信用段。

weixin_46525734的博客 1965

学习shell,这一篇就够了(shell基础)

一、shell概述 1、什么是shell shell是一种命令语言,是为使用者提供操作界面的一种软件,软件可以接收用户的命令,并且执行用户输入的命令,然后对相应的程序进行调用。 2、shell可以分为两种方式 1)shell命令行式 例如一些系统linux,从传统的意义上来说,如果不去注明的话,shell一般是命令行式。shell是传统操作和外部的接口,shell是操作系统的最外层,并且管理用户和操作系统之间的交互,操作系统完成用户的操作,并且处理输出结果。shell实现了用户和系统之间的交互,用户在键盘上

Linux爱好者的博客 1万+

GAMES101:MacOS作业环境搭建

查看gcc/clang的位置产看gcc/clang的版本1.1.2 安装cmake。

weixin_38844255的博客 715

信创改造实战:SpringBoot项目迁移到宝兰德BES 9.5.5的完整避坑指南(附依赖与web.xml配置)

本文详细介绍了将SpringBoot项目迁移到宝兰德BES 9.5.5的完整流程,包括依赖改造、web.xml配置降级等关键步骤。通过实战案例和避坑指南,帮助开发者高效完成国产中间件适配,确保项目平稳运行。特别针对Tomcat依赖排除和BES适配器选择提供了专业建议。

weixin_30689307的博客 740

第十章shell基本知识

10.1 什么是shell shell是系统跟计算机硬件交互时使用的中间介质。是系统的一个工具。实际上,在shell和计算机硬件之间还有一层东西——系统内核,用户直接面对的不是计算机硬件而是shell,用户把指令告诉shell,然后shell在传输给系统内核,接着内核再去支配计算机硬件去执行各种操作。 10.1.1 记录命令历史 !是与命令有关的一个特殊字符 1. !!:连续两个!表示执行...

weixin_44789116的博客 362

MacBook Air老本重装系统

手里的这个本子型号是A1466,cpu i5,4G内存,硬盘ssd 120G。 重装系统可以在原系统上升级到更新版本,或者用U盘安装。 先确定,这个本子可以安装什么系统。 最权威的信息当然是apple的官网,地址:https://support.apple.com/zh-cn/HT211683 在“检查兼容性”中,可以依次检查每个系统兼容的硬件型号。Mojave是A1466能安装的最高版本。 确认兼容性后,下一步就是下载安装文件。还是这个页面稍下面一点可以找到。 这里告诉用户文件可以在什

bigwood99的博客 2万+

Shell脚本的基本知识

Shell的基本知识 1.什么是Shell? 在管理计算机的整个硬件过程其实是操作系统的内核,但是内核是需要保护的,所以我们一般的用户只能通过Shell去和内核沟通,只有我们通过Shell将我们的命令与内核沟通,这样内核才能控制硬件来正确无误的工作。 Shell 是操作系统中的一个软件。 它包在 Linux 内核外面,为用户和内核之间的交互提供了一个接口。 系统中的命令用Shell去解释。 She...

xrt0211的博客 233

uniapp - 实现移动端H5微信公众号网页内置浏览器中预览和下载word文档(doc)、excel表格(xls)、ppt文稿、pdf文档等文件,微信内部打开预览和下载到本地详教程,兼容安卓苹果手机

uni-app,微信公众号,h5,移动端,web平台端,网页,网站,Uniapp微信公众号H5网站,内置浏览器下载文档,如何在微信浏览器中预览office文件,word文档,excel文档,pdf文档,ppt文档,office,微信内置浏览器下载文件,下载文件,在微信浏览器里面实现下载任意文件,H5需要在微信浏览器中下载excel文件,UniApp实现网页在微信内置浏览器中下载文件详细教程,安卓点击下载会提示打开浏览器,后端返回流文件,如何解决无法下载文件,跳转至浏览器下载文件,发送到电脑微信,安卓,苹果,

🏆 前端领域优质创作者 1万+

【FPGA教程案例37】通信案例7——基于FPGA的FFT,IFFT傅里叶变换和逆变换

关于FFT和IFFT的相关描述,在上一课程我们已经有所了解,本课程不再重复。在上一课程,我们初步掌握了如何通过FFT对输入信号进行频谱分析,在本课程,我们将学习如何通过FPGA实现FFT和IFFT得到初始信号的过程。关于FFT的IP核配置,和上一课程相同。下面直接介绍其verilog调用过程。我们可以看到,IFFT的配置非常简单,在FFT的基础上,只需要将该参数的最后一位改为0,就可以实现IFFT变化。下面我们通过testbench文件,同时调用FFT和IFFT实现信号的傅里叶变换和逆变换。......

FPGA/MATLAB学习教程/源码/项目合作开发 4517

Shell的基本知识

文章目录 Shell的基本知识 饰演环境的控制 如何开启关闭Shell 设定shell开启的快捷键 Shell的基本知识 什么是内核? 多用户多任务的操作系统(linux)的一个进程调度器;判断进程的重要性的工具。 应用程序与内核如果直接交互会改变内核信息 什么是shell? 第三方软件与内核交流的一个保护罩,将接受到的需要的信息传递给内核。 shell 也是操作系统中的一个 软件 ,它包...

qq_44802123的博客 333

Python与网络爬虫案例:电影评论抓取

接下来,我们就可以通过分析该页面中的HTML代码,来确定需要抓取的内容。在这段代码中,我们首先对每个评论div元素进行for循环,然后通过find方法获取class为'title'、'text'、'rating-other-user-rating'的元素,并将结果分别赋值给title、content和rating变量。在这段代码中,我们首先定义了目标网站的URL和headers信息,然后通过requests.get方法向目标网站发送了一个GET请求,并将返回的响应赋值给了response变量。

吃不胖. 1263

Shell基本知识

shell基本知识及练习

weixin_62173637的博客 209

《ESP32单片机基础入门》第2章:开发环境搭建

【代码】《ESP32单片机基础入门》第2章:开发环境搭建。

2301_79143213的博客 581

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

shell 基本知识总结

#查看进程pid对应的程序 ll /proc/pid_number 【shell命令】 echo 命令 -n 取消末尾的回车符 -e 解释引号(双引号和单引号)里面的特殊字符(比如换行符\n) echo rm * 只会打印要被删除的文件 type 命令 作用:判断命令的来源(外部,内置),如: type ls -t 参数,可以返回一个命令的类型: 别名(alias),关键词(keyword),函数(function),内置命令(builtin)和文件(file)。 模式匹配 [^abc]或[!.

... 985

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

shell的基本知识

1.shell脚本的基本知识 什么是shell 在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器) 负责接收用户命令,然后调用相应的应用程序 同时它又是一种程序设计语言,作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令 作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循...

Zhangxu0606的博客 249

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: Dns域名解析服务器
下一篇: 华为ensp防火墙USG6000V通过web登录教程(及常见40/45报错解决方法。)
熠風
博客等级 码龄6年 108粉丝 59原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值