【Linux Shell学习笔记】Linux Shell基本流程和基本语法

第一部分:Linux Shell 简介

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。
当一个用户登陆linux 系统后,系统就会为该用户创建一个shell程序。
Shell的版本:

  • Bourne Shell:是贝尔实验室开发的,unix普遍使用的shell,在编程方面比较优秀,但在用户交互方面没有其他shell优秀。
  • BASH:是GNU的Bourne Again Shell,是GNU操作系统上默认的shell,在bourne shell基础上增强了很多特性,如命令补全,命令历史表等等
  • Korn Shell:是对Bourne Shell 的发展,在大部分内容上与Bourne Shell兼容,集成了C Shell和Bourne shell优点。
  • C Shell:是SUN公司Shell的BSD版本,语法与c语言相似,比bourne shell 更适合编程

第二部分:shell编程的基本流程

1、用vim创建一个后缀为.sh的文件

 注:脚本文件的后缀,即使不是.sh也是可以正常执行的。

2、在.sh文件中写入内容

 第一行固定写法:

#!/bin/bash           #用来指定bash解释器
第二行脚本正文内容:

以#开头的是注释行

3、给脚本进行赋权

chmod  +x  脚本


4、执行脚本

./脚本

注:当然我们也可以跳过第三步直接执行脚本

bash  脚本文件

三、shell编程基础语法

1、变量
定义变量:变量名=变量值

注:

1)直接用等号进行定义;

2)等号两侧不能出现空格;

变量名的定义规则

只能是数字、字母、下划线
不能以数字开头
建议变量名见名知意,例:驼峰写法
输出变量值:$变量名

2、数据类型

字符串类型、数值类型、布尔类型【真|假】

3、 输入和输出


输入:read  -p  "提示信息"  变量名
# 提示信息:给用户看要输入什么内容
输出:echo  "要输出的内容 $变量名"


4、 判断基础

[ 判断表达式 ]
# 方括号两侧要留空格,否则会报错
# 返回结果:真:0  假:1


4.1 比较两个数大小的符号


-gt  表示大于(>)

-ge 表示大于等于(>=)

-lt   表示小于(<)

-le  表示小于等于(<=)

-eq 表示等于(==)

-ne 表示不等于(!=) 

4.2 比较两个字符串是否相同


== 表示字符串相同                                

!= 表示字符串不同

4.3 判断文件


 判断文件是否存在:

        [ -a  文件名 ]  文件存在,返回真;文件不存在,返回假

        [ -e 文件名 ]   文件存在,返回真;文件不存在,返回假

判断文件类型:

        [ -d 文件名 ] 判断文件是否为目录,如果是目录,返回真;如果不是目录,返回假

        [ -f 文件名 ]  判断文件是否为一般文件,如果是一般文件,返回真;如果不是一般文件,返回假

4.5 关于$?

特殊的内置变量

这个变量可以表示离他最近的判断条件的结果

        如果结果为真,$?=0

        如果结果为假,$? !=0   这个变量中保存的值是非0的

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

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

相关文章

计算机基础知识——数据的表示概述

目录 1 进制转换 1.1 二进制、十进制和十六进制等常用数制及其相互转换 1.2 十进制和二进制之间转换 1.3 二进制数与八进制数、十六进制数之间的转换 2 码值&#xff1a;原码、反码、补码 2.1 原码 2.2 反码 2.3 补码 3 浮点数表示 3.1 浮点数的运算 1 进制转换 1…

MR实战:网址去重

文章目录 一、实战概述二、提出任务三、完成任务&#xff08;一&#xff09;准备数据1、在虚拟机上创建文本文件2、上传文件到HDFS指定目录 &#xff08;二&#xff09;实现步骤1、创建Maven项目2、添加相关依赖3、创建日志属性文件4、创建网址去重映射器类5、创建网址去重归并…

【Java】LockSupport原理与使用

LockSupport&#xff1a; 关键字段&#xff1a; private static final sun.misc.Unsafe UNSAFE;private static final long parkBlockerOffset; Unsafe&#xff1a;"魔法类"&#xff0c;较为底层&#xff0c;在LockSupport类中用于线程调度(线程阻塞、线程恢复等)。…

Windows安装部署nginx

1、官网下载安装包&#xff1a; 官网地址&#xff1a;https://nginx.org/en/download.html 下载好后&#xff0c;解压即可&#xff1a; 在nginx的配置文件是conf目录下的nginx.conf&#xff0c;默认配置的nginx监听的端口为80&#xff0c;如果本地80端口已经被使用则修改成其…

STM32F103C8T6制作简易示波器

1设计需求 通过stm32f103c8t6实现一个简易示波器功能&#xff0c;该示波器可以检测0-3.6khz频率范围内的波形。 也可以输出波形&#xff0c;输出方波、三角波、正弦波。 2技术方案 通过stm32的ADC功能&#xff0c;采集输入信号&#xff0c;最后由oled屏进行显示。 采样频率…

图像分割实战-系列教程10:U2NET显著性检测实战2

&#x1f341;&#x1f341;&#x1f341;图像分割实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 U2NET显著性检测实战1 U2NET显著性检测实战2 U2NET显著性检测实战3 5、残差Unet模块 class RSU7(n…

2024.1.5

今天真是狂学了一天的C&#xff0c;什么期末考试&#xff0c;滚tmd&#xff08;就一门政治&#xff0c;不能影响我c的脚步&#xff09;&#xff0c;今天还是指针&#xff0c;主要是函数指针和函数指针数组&#xff0c;将简单的两位数计算器程序用此方式更加简单的实现了&#x…

MySQL基础篇(四)事务

一、事务简介 事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一期向系统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 注意&#xff1a; 默认 MySQL 的事务是 自动提交 的&#…

重磅发布|博睿数据2023年度精选案例集—— IT运维之光

当前&#xff0c;数字经济已经成为全球经济增长的重要引擎。随着新技术的飞速发展&#xff0c;企业数字化转型机遇不断涌现&#xff0c;而稳定、安全、可靠的IT运维环境是实现数字化转型的关键。 在此背景下&#xff0c;AIOps 智能运维正成为企业高效管控种类繁多数量庞大的物…

CommonJS 和 ES6 Module:一场模块规范的对决(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

oracle23c安装部署centos8.3

oracle23c安装部署centos8.3 目前Oracle已经更新到23c的版本&#xff0c;又是一个长期支持的版本。 Oracle 数据库的最新版本 Oracle Database 23c 现已在基于 OCI 的 Oracle Base Database Service 中正式发布。该版本具有许多增强功能&#xff0c;可为开发人员提供强大支持…

【Python学习】2024PyCharm插件推荐

目录 【Python学习】2024PyCharm插件推荐 1. Key Promoter X2.Rainbow CSV3.Markdown4.Rainbow Brackets5.Indent Rainbow6.Regex Tester7.Regex Tester8.Background Image Plus9.Material Theme UI10. Chinese 汉化插件参考 文章所属专区 Python学习 1. Key Promoter X 方便…

frp配置内网穿透访问家里的nas

frp配置内网穿透访问家里的nas 需求 家里局域网内有台nas&#xff0c;在去公司的路上想访问它 其内网地址为&#xff1a; http://192.168.50.8:6002 工具 1.frp版本v0.53.2 下载地址&#xff1a; https://github.com/fatedier/frp/releases/download/v0.53.2/frp_0.53.2_li…

十、基本对话框大集合(Qt5 GUI系列)

目录 一、设计需求 二、实现代码 三、代码解析 四、总结 一、设计需求 Qt提供了很多标准的对话框。例如标准文件对话框(QFileDialog)、标准颜色对话框(QColorDialog)、标准字体对话框 (QFontDialog)、标准输入对话框 (QInputDialog) 及消息对话框 (QMessageBox)。本文展示各…

1.4补码范围,溢出,补码加减法、加法器、竞争与冒险、杂项

正数三码合一 负数的原码有1的符号位&#xff0c;反码为除了符号位以外全部取反&#xff0c;补码在反码的基础上再加1 移码的符号位中0表示负数&#xff0c;1表示正数&#xff0c;简单来说&#xff0c;原码的补码数值位不变&#xff0c;符号位取反就是移码。 对于8位寄存器: …

【docker】一文讲完docker搭建私有仓库

一、docker搭建私有仓库方法总结 搭建Docker私有仓库主要有以下几种方式&#xff1a; 使用Docker官方提供的Registry镜像&#xff1a;Docker官方提供了一个用于构建私有镜像仓库的Registry镜像&#xff0c;只需将镜像下载并运行容器&#xff0c;然后暴露5000端口即可使用。可以…

Go语言中的HTTP路由处理

在Web开发中&#xff0c;路由处理是至关重要的部分。它决定了当用户访问某个URL时&#xff0c;服务器应该如何响应。Go语言提供了多种库和工具来处理HTTP路由。下面&#xff0c;我们将深入了解如何在Go语言中处理HTTP路由。 Go语言的net/http包本身提供了基本的功能来处理路由…

大数据毕业设计:python房源数据爬虫分析预测系统+可视化 +商品房数据(源码+讲解视频)✅

毕业设计&#xff1a;2023-2024年计算机专业毕业设计选题汇总&#xff08;建议收藏&#xff09; 毕业设计&#xff1a;2023-2024年最新最全计算机专业毕设选题推荐汇总 &#x1f345;感兴趣的可以先收藏起来&#xff0c;点赞、关注不迷路&#xff0c;大家在毕设选题&#xff…

【Spring 篇】Spring:轻松驾驭 Java 世界的利器

在 Java 开发领域&#xff0c;Spring 框架无疑是一颗璀璨的明星&#xff0c;它不仅提供了全面的企业级特性&#xff0c;还为开发者提供了简便而强大的开发方式。本文将深入探讨 Spring 框架的简介、配置和快速入门&#xff0c;带你轻松驾驭 Java 世界的利器。 Spring 简介 Sp…

golang sync.Once实现只执行一次的操作

sync.Once 是 Go 语言标准库中的一个类型&#xff0c;用于实现只执行一次的操作。 sync.Once 类型提供了一个方法 Do&#xff0c;它接受一个函数作为参数&#xff0c;并且确保该函数只会被执行一次&#xff0c;无论 Do 方法被调用多少次。 sync.Once 的工作原理是通过一个布尔…