shell基本知识

Linux 系统中 shell 的基本知识

1 什么是 shell

Shell 是一种命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的界面系统级程序。用户可以用 shell 来启动、挂起、停止甚至是编写一些程序。

2 Linux 启动过程

Linux 系统的启动过程可以概括为以下几个步骤:

  1. BIOS 自检
  2. MBR 加载 BootLoader
  3. BootLoader 加载内核
  4. 内核初始化
  5. 系统初始化
  6. 登录 shell

shell 位于系统初始化阶段,由 init 进程调用。shell 接收用户的命令,并将其送入内核去执行。

在这里插入图片描述

3 shell 编程

shell 也是一个功能相当强大的编程语言,它易编写、易调试、灵活性较强。shell 是解释执行的脚本语言,在 shell 中可以直接调用 Linux 系统命令。

shell 脚本的格式如下:

#!/bin/bash# 脚本内容

第一行是注释行,用于指定 shell 解释器。

查看系统的解释器

[root@shell shells]# cat /etc/shells
/bin/sh
/bin/bash #一般用这个就好了
/usr/bin/sh
/usr/bin/bash

4 实验示例

1 列出当前目录下的所有文件

#!/bin/bashls

2 打印当前目录的绝对路径

#!/bin/bashpwd

3 查看当前目录下的文件大小

#!/bin/bashdu -sh *

5 扩展知识

内置命令和外部命令

内置命令是 shell 内置的命令,不需要通过其他程序来执行。外部命令是需要通过其他程序来执行的命令。

内置命令和外部命令的区别如下:

区别内置命令外部命令
是否需要其他程序不需要需要
是否产生子进程不会产生会产生
是否对当前 shell 生效会生效不会生效

变量

变量是 shell 中用来存储数据的一种特殊标识符。变量可以用来保存用户输入的值,也可以用来保存计算结果。

变量的格式如下:

变量名=值

变量的命名规则如下:

  • 变量名可以由字母、数字、下划线组成。
  • 变量名不能以数字开头。
  • 变量名不能是关键字。

运算符

shell 中支持的运算符如下:

运算符描述
+
-
*
/
%取余
=赋值
==等于
!=不等于
>=大于等于
<=小于等于
&&逻辑与

流程控制

shell 中支持的流程控制语句如下:

语句描述
if条件判断
for循环
while循环
until循环
case条件判断
break跳出循环
continue跳过本次循环
return返回

函数

shell 中可以使用函数来组织代码。函数的定义格式如下:

function 函数名() {# 函数体
}

函数的调用格式如下:

函数名()

如何编写一个脚本

  • shell 脚本的命名规范,能够快速定位到需要执行的脚本。
  • shell脚本中填写"脚本信息",方便后续修改,联系等。
# Author:
# Created Time:
# Version:
# Script Description:
//以上分别对应中文
# 作者信息
# 创建时间
# 版本
# 脚本描述

下面是一个完美脚本的内容:

#!/bin/bash
# Author: Josh
# Created Time: 2023/11/21
# Version: v1
# Script Description: create fileread -p "输入需要创建的文件名:" file
touch $file
if [ $? -ne 0 ];then
echo "文件创建错误"
else
echo "成功创建 $file 文件"
fi

运行脚本

第一种方式:脚本赋予执行权限运行,那上面的脚本举例:

root@shell shells]# chmod +x test.sh
[root@localhost shell]# ./test.sh 
输入需要创建的文件名:test.txt
成功创建 test.txt 文件

结语

shell 是 Linux 系统中非常重要的一个工具,它可以用来完成各种任务,包括系统管理、软件开发、脚本编写等。掌握 shell 的基本知识,可以帮助我们更好地使用 Linux 系统。

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

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

相关文章

【深度挖掘Java性能调优】「底层技术原理体系」深入探索Java服务器性能监控Metrics框架的实现原理分析(Counter篇)

目录 前提概要监控工作可以分为四个部分 监控开发任务Metrics中的基础数据类型计数器&#xff08;Counter&#xff09;统计 API 访问中异常&#xff08;1000/1500&#xff09;的次数统计 API 的调用量统计特定事件发生的次数Counter的底层原理基础 (Base) 计数器单元 (Cell) 数…

【华为数据之道学习笔记】2-建立企业级数据综合治理体系

数据作为一种新的生产要素&#xff0c;在企业构筑竞争优势的过程中起着重要作用&#xff0c;企业应将数据作为一种战略资产进行管理。数据从业务中产生&#xff0c;在IT系统中承载&#xff0c;要对数据进行有效治理&#xff0c;需要业务充分参与&#xff0c;IT系统确保遵从&…

mmdetection里的测速脚本

由于大论文里需要对各个算法进行测速&#xff0c;因此抛开官方文档的使用说明&#xff0c;记录一下我是怎么使用mmdetection里的脚本进行测速的。 mmdetection版本&#xff1a;2.23.0 一、新版本benchmark.py&#xff08;需要分布式&#xff09; 打开tools/analysis_tools/b…

xml文本转Java对象

Java对象转String public static String toData(Object object) throws Exception {JAXBContext jc JAXBContext.newInstance(object.getClass());Marshaller m jc.createMarshaller();StringWriter output new StringWriter(2048);m.marshal(object, output);String data …

C# 任务并行类库Parallel调用示例

写在前面 Task Parallel Library 是微软.NET框架基础类库&#xff08;BCL&#xff09;中的一个&#xff0c;主要目的是为了简化并行编程&#xff0c;可以实现在不同的处理器上并行处理不同任务&#xff0c;以提升运行效率。Parallel常用的方法有For/ForEach/Invoke三个静态方法…

如何确认网站是否有漏洞,如何找出网站存在的漏洞,找到漏洞该如何处理

如何确认网站或者服务器是否有漏洞 判断一个网站是否是存在漏洞的方法&#xff1a; 1.可以借助德迅云安全漏洞扫描功能来检查漏洞。 2.打开德迅云安全首页&#xff0c;点击最上面导航栏中的“安全产品”。 3.滑到“漏洞扫描”&#xff0c;选择“产品价格”服务。 4.选择您需…

python源码,在线读取传奇列表,并解析为需要的JSON格式

python源码&#xff0c;在线读取传奇列表&#xff0c;并解析为需要的JSON格式 [Server] ; 使用“/”字符分开颜色&#xff0c;也可以不使用颜色&#xff0c;支持以前的旧格式&#xff0c;只有标题和服务器标题支持颜色 ; 标题/颜色代码(0-255)|服务器标题/颜色代码(0-255)|服务…

ThinkPHP如何讲链接多个数据库

为什么要使用多个数据库 数据分片&#xff1a; 当数据量非常大时&#xff0c;可能需要将数据分布在不同的数据库中&#xff0c;以提高查询性能。这被称为数据分片&#xff0c;其中不同的数据库负责存储不同范围的数据。 业务分离&#xff1a; 有时&#xff0c;一个大型项目可…

GPT-Crawler一键爬虫构建GPTs知识库

GPT-Crawler一键爬虫构建GPTs知识库 写在最前面安装node.js安装GPT-Crawler启动爬虫结合 OpenAI自定义 assistant自定义 GPTs&#xff08;笔者用的这个&#xff09; 总结 写在最前面 GPT-Crawler一键爬虫构建GPTs知识库 能够爬取网站数据&#xff0c;构建GPTs的知识库&#xf…

nginx多端口部署

1.配置nginx.conf文件 有几个端口需要部署就写几个server&#xff0c;我这里只部署了两个端口分别为80和81端口&#xff0c;所以有两个server文件。80端口项目入口在根目录的test文件中&#xff0c;81端口项目入口在根目录的test1文件夹中。 2.准备项目文件html文件 在/test1…

电脑出现这些现象,说明你的固态硬盘要坏了

与传统机械硬盘&#xff08;HDD&#xff09;相比&#xff0c;固态硬盘&#xff08;SSD&#xff09;速度更快、更稳定、功耗更低。但固态硬盘并不是完美无瑕的&#xff0c;由于颗粒写入机制&#xff0c;可能会在七到十年的预期寿命之前出现故障。所以用户最好为最终故障做好准备…

SQL之string的使用与模拟实现

SQL之string的使用与模拟实现 1.官方库中string类的使用接口1.1 工具网站搜索string类的使用2.2string类的常用接口说明 2.模拟实现重要/常用的成员函数接口2.1 准备工作2.1.1. 解决命名冲突2.1.2. 成员变量2.1.3. 默认成员函数——构造函数/拷贝构造函数/析构函数2.1.4赋值运算…

12.9_黑马数据结构与算法笔记Java

目录 057 多路递归 e03 杨辉三角2 057 多路递归 e03 杨辉三角3 058 链表 e01 反转单向链表1 058 链表 e01 反转单向链表2 058 链表 e01 反转单向链表3 递归 058 链表 e01 反转单向链表4 058 链表 e01 反转单向链表5 058 链表 e02 根据值删除节点1 058 链表 e02 根据值…

【动手学深度学习】(十一)池化层+LeNet

文章目录 一、池化层1.理论知识2.代码 二、LeNet1.理论知识2.代码实现 【相关总结】nn.MaxPool2d() 卷积层对位置比较敏感 一、池化层 1.理论知识 二维最大池化 填充、步幅和多个通道 池化层与卷积层类似&#xff0c;都具有填充和步幅没有可学习的参数在每个输入通道应用池…

【Kubernetes】四层代理Service

Service四层代理 一、Service概念原理1.1、为什么要有Service1.2、Service概述1.3、工作原理1.4、三类IP地址【1】Node Network&#xff08;节点网络&#xff09;【2】Pod network&#xff08;pod 网络&#xff09;【3】Cluster Network&#xff08;服务网络&#xff09; 二、S…

基于Springboot的校园失物招领系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的校园失物招领系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…

微信小程序 -- ios 底部小黑条样式问题

问题&#xff1a; 如图&#xff0c;ios有的机型底部伪home键会显示在按钮之上&#xff0c;导致点击按钮的时候误触 解决&#xff1a; App.vue <script>export default {wx.getSystemInfo({success: res > {let bottomHeight res.screenHeight - res.safeArea.bott…

准确!!!在 CentOS 8 上配置 PostgreSQL 14 的主从复制

在 CentOS 8 上配置 PostgreSQL 14 的主从复制&#xff0c;并设置 WAL 归档到特定路径 /home/postgres/archive 的步骤如下&#xff1a; 主服务器配置&#xff08;主机&#xff09; 配置 PostgreSQL&#xff1a; 编辑 postgresql.conf 文件&#xff1a; vim /data/postgres/p…

什么是呼叫中心的语音通道?呼叫中心语音线路有几种?

什么是呼叫中心的语音通道&#xff1f; 呼叫中心的语音通道是指在呼叫中心中使用的语音信号传输通道&#xff0c;它是呼叫中心中至关重要的一部分&#xff0c;负责将客户的语音信息传递给客服代表&#xff0c;以及将客服代表的语音信息传递给客户。在呼叫中心的运营中&#xf…

C语言——字符函数和字符串函数(一)

&#x1f4dd;前言&#xff1a; 这篇文章对我最近学习的有关字符串的函数做一个总结和整理&#xff0c;主要讲解字符函数和字符串函数&#xff08;strlen&#xff0c;strcpy和strncpy&#xff0c;strcat和strncat&#xff09;的使用方法&#xff0c;使用场景和一些注意事项&…