「Linux系列」Shell介绍及起步
文章目录
- 一、Shell简介
- 二、Shell脚本
- 三、Shell解释器
- 四、相关链接
一、Shell简介
Shell本身是一个用C语言编写的程序,它既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
Shell的基本功能
- 执行命令:Shell最基本的功能就是执行命令。用户可以在Shell中输入命令并执行,Shell会将命令转换为操作系统能够理解的指令,并执行相应的操作。
- 管理文件和目录:Shell还可以用于管理文件和目录。用户可以使用Shell命令来创建、删除、移动和复制文件和目录。
- 管理环境变量:环境变量是操作系统中用于存储系统设置和配置信息的变量。用户可以使用Shell命令来设置、修改和删除环境变量。
- 管道和I/O重定向:Shell还支持管道和I/O重定向。管道是一种将一个命令的输出作为另一个命令的输入的机制;I/O重定向是一种将命令的输入或输出重定向到文件或其他设备的机制。
Shell的类型和变量
Shell有多种类型,如Bourne Shell、Bash Shell、Korn Shell等。每种Shell都有自己的特点和语法。
Shell中的变量包括字符串、整型、浮点型、布尔型、数组和字典等。用户可以根据需要定义和使用这些变量。
Shell脚本的执行方法
- 切换到shell脚本所在的目录,使用“./脚本名”的方式执行。
- 使用绝对路径的方式执行bash shell脚本。
- 切换到工作目录下,直接使用bash或sh来执行bash shell脚本,无需给shell脚本加执行权限。
Shell编程基础
Shell编程涉及到条件判断、循环结构、函数定义和调用等基本概念。通过掌握这些基础,用户可以编写出复杂的Shell脚本,实现自动化任务和批量处理等功能。
二、Shell脚本
Shell 脚本是一种用 Shell 语言编写的程序,用于自动化执行一系列常见的系统任务。Shell 脚本结合了常见的 Shell 命令、条件判断、循环控制、变量和函数等,以完成复杂的操作。
一个简单的 Shell 脚本示例,演示基本的脚本结构和常用命令
#!/bin/bash
# 这是一个简单的 Shell 脚本示例# 打印欢迎信息
echo "欢迎使用 Shell 脚本!"# 声明一个变量
NAME="张三"# 输出变量的值
echo "我的名字是:$NAME"# 使用条件判断
if [ -f "somefile.txt" ]; thenecho "somefile.txt 文件存在。"
elseecho "somefile.txt 文件不存在。"
fi# 使用循环结构
for i in {1..5}
doecho "这是循环的第 $i 次迭代。"
done# 调用系统命令
ls -l
在上面的脚本中:
- 第一行
#!/bin/bash指定了脚本使用的 Shell 解释器。 - 注释以
#开头,用于解释脚本的作用或说明某些代码段。 echo命令用于输出文本到终端。- 变量使用
NAME="张三"的形式声明,并在使用时通过$NAME引用。 if语句用于条件判断,[ -f "somefile.txt" ]检查文件是否存在。for循环用于重复执行一系列命令。ls -l是一个系统命令,用于列出当前目录下的文件和目录的详细信息。
要运行这个脚本,你需要将它保存到一个文件中,比如命名为 myscript.sh。然后,你需要给这个文件执行权限,使用 chmod 命令:
chmod +x myscript.sh
之后,你就可以通过以下方式运行这个脚本:
./myscript.sh
或者:
bash myscript.sh
Shell 脚本提供了巨大的灵活性,可以执行几乎任何你可以在命令行上手动执行的任务,而且可以通过组合命令和逻辑结构来创建复杂的自动化任务。
三、Shell解释器
Shell常用解释器包括Bash、sh、csh和ksh等。这些解释器各有特点,提供了丰富的功能和灵活性,使得用户可以更方便地进行系统操作和任务自动化。
- Bash(Bourne Again Shell):
- Bash是最常用的Shell解释器之一,也是许多Linux系统的默认Shell。
- 它提供了许多强大的功能,如命令行编辑、命令历史、命令别名等。
- Bash的的语法与Bourne Shell(sh)兼容,但增加了一些扩展和特性。
案例:使用Bash编写一个简单的脚本,用于输出当前登录的用户信息。
#!/bin/bash
# 输出当前登录用户信息
echo "当前登录用户: $USER"
echo "用户家目录: $HOME"
保存为user_info.sh,赋予执行权限后运行:
chmod +x user_info.sh
./user_info.sh
- sh(Bourne Shell):
- sh是Unix系统上的标准Shell,也是最早的Shell解释器之一。
- 它的语法相对简单,主要用于编写脚本。
案例:使用sh编写一个脚本,用于打印指定的文本信息。
#!/bin/sh
# 使用sh打印文本信息
echo "Hello, this is a script running with sh."
保存为text_print.sh,赋予执行权限后运行:
chmod +x text_print.sh
./text_print.sh
- csh(C Shell):
- C Shell使用C语言风格的语法,提供了一些便于程序员使用的功能,如命令行编辑和作业控制。
- 它在某些Unix系统中是默认的Shell解释器。
- ksh(Korn Shell):
- Korn Shell是由Bourne Shell和C Shell发展而来的Shell解释器。
- 它继承了两者的特性,并添加了一些新的功能和语法,如命令历史、命令别名等。
每种Shell解释器都有其独特的语法和特性,用户可以根据需要选择合适的解释器来编写脚本。在实际应用中,Bash由于其强大的功能和广泛的兼容性,通常是最常用的选择。
四、相关链接
- Linux官网
- Linux常用命令
- CentOS官网下载地址
- 「Linux系列」Linux简介及常见的Linux系统
- 「Linux系列」Linux 系统启动过程
- 「Linux系列」Linux 系统目录结构/忘记密码解决方法
- 「Linux系列」Linux 远程登录/文件基本属性
- 「Linux系列」Linux 文件与目录管理
- 「Linux系列」Linux 如何学习用户和用户组管理
- 「Linux系列」聊聊Linux磁盘管理的事
- 「Linux系列」聊聊vi/vim的3种命令模式
- 「Linux系列」了解下Linux yum(包管理工具)
相关文章:
「Linux系列」Shell介绍及起步
文章目录 一、Shell简介二、Shell脚本三、Shell解释器四、相关链接 一、Shell简介 Shell本身是一个用C语言编写的程序,它既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计…...
用pdf2docx将PDF转换成word文档
pdf2docx是一个Python模块,可以将PDF文件转换为docx格式的Word文档。 pdf2docx模块基于Python的pdfminer和python-docx库开发,可以在Windows、Linux和Mac系统上运行。它可以从PDF文件中提取文本和图片,并将其转换成可编辑的Word文档…...
STM32U5 ADC 自校准不成功的问题分析
1、引言 很多 STM32 系列中的 ADC 都带有自校准的功能。它提供了一个自动校准的过程,用于驱动包括 ADC 上电/掉电序列在内的所有校准动作。在这个过程中,ADC 计算出一个校准因子,并在内部应用到此 ADC 模块,直到下一次 ADC 掉电。…...
使用光标精灵更换电脑鼠标光标样式,一键安装使用
想要让自己在使用电脑时更具个性化,让工作和娱乐更加愉快,改变你的电脑指针光标皮肤可能是一个简单而有效的方法。很多人或许并不清楚如何轻松地调整电脑光标样式,下面我就来分享一种简单的方法。 电脑光标在系统里通常只有几种默认图案&…...
微服务day04(上)-- RabbitMQ学习与入门
1.初识MQ 1.1.同步和异步通讯 微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应。 异步通讯:就像发邮件,不需要马上回复。 两种方式各有优劣,打电话可以立即得到响应,但…...
Halcon 3D 平面拟合(区域采样、Z值过滤、平面拟合、平面移动)
Halcon 3D 平面拟合(区域采样、Z值过滤、平面拟合、平面移动) 链接:https://pan.baidu.com/s/1UfFyZ6y-EFq9jy0T_DTJGA 提取码:ewdi * 1.读取图片 ****************...
npm 插件 中 版本号为 星号 是什么意思
npm 插件 中 版本号为 星号 是什么意思 "dependencies": {"hstool/side-adaptor": "*","hsui/core": "*","h_ui": "*" }, "devDependencies": {"plugin-jsx": "*","…...
Codeforces\ Round\ 930(C.Bitwise Operation Wizard)
C o d e f o r c e s R o u n d 930 ( C . B i t w i s e O p e r a t i o n W i z a r d ) \Huge{Codeforces\ Round\ 930(C.Bitwise Operation Wizard)} Codeforces Round 930(C.BitwiseOperationWizard) 文章目录 题意思路注意 标程 题目链接:[B.Bitwise Operati…...
监控系统prometheus+grafana+发送告警信息
1、基础环境准备两台或更多的主机 2、关闭selinux vi /etc/selinux/config,修改SELINUX的值为disabled 3、关闭防火墙 systemctl disable firewalld systemctl stop firewalld 4、prometheus官网下载 https://prometheus.io/download/ 5、grafana官网下载 https…...
IoT 物联网场景中如何应对安全风险?——青创智通
工业物联网解决方案-工业IOT-青创智通 随着物联网(IoT)技术的快速发展,越来越多的设备、系统和应用被连接到互联网上,从而构建了一个庞大的物联网生态系统。然而,这种连接性也带来了前所未有的安全风险。在物联网场景…...
滴滴基于 Clickhouse 构建新一代日志存储系统
滴滴基于 Clickhouse 构建新一代日志存储系统 ClickHouse 是2016年开源的用于实时数据分析的一款高性能列式分布式数据库,支持向量化计算引擎、多核并行计算、高压缩比等功能,在分析型数据库中单表查询速度是最快的。2020年开始在滴滴内部大规模地推广和应用,服务网约车和日…...
虚拟主机去除index.php目录地址
复制代码到NGINX设置 虚拟主机去除index.php目录地址-复制代码-NGINX设置 location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s/$1 last; break; } } location ~ /\.ht { deny all; }...
JD商品详情原数据 API 返回值说明
一、应用场景 商品详情原数据API的应用场景广泛而多样。具体来说,它可以被用于以下方面: 1、电商平台数据分析:电商平台可以通过商品详情原数据API提取商品销售数据、质量评分、评论和反馈等信息,从而帮助用户更好地理解市场和竞…...
python日常刷题(一)
前言:本文记录2024年3月11日至2024年3月19日牛客网所做的基础题目(错题本): 🎬个人简介:努力学习ing 📋本专栏:python日常刷题 🎀CSDN主页:愚润求学 文章目录…...
Python 利用pandas和mysql-connector获取Excel数据写入到MySQL数据库
如何将Excel数据插入到MySQL数据库中 在实际应用中,我们可能需要将Excel表格中的数据导入到MySQL数据库中,以便于进行进一步的数据分析和处理。本文将介绍如何使用Python将Excel表格中的数据插入到MySQL数据库中。 导入必要的库 首先,我们…...
Stable Diffusion训练图片时,简陋的数据处理
0 图片从命名 如果有强迫症,看到似乎乱码的命名会不舒服,那么就批量从命名 import osdef rename_files_in_directory(directory, key_word, new_suffix):i 1for filename in os.listdir(directory):new_file key_word str(i).zfill(3) new_suffixsou…...
如何在ubuntu 18.04中升级python 3.6到3.7
在ubuntu下安装python 3.7有两种方法: 1,通过使用Deadsnakes PPA中的标准apt工具(本文暂时只介绍这种方法) 2,从源代码进行构建。 前提条件: 需要以root用户或具有sudo访问权限的用户身份登录才能在Ubuntu系统上安装软件包。 方法一:使用apt工具安装…...
python爬虫基础实验:通过DBLP数据库获取数据挖掘顶会KDD在2023年的论文收录和相关作者信息
Task1 读取网站主页整个页面的 html 内容并解码为文本串(可使用urllib.request的相应方法),将其以UTF-8编码格式写入page.txt文件。 Code1 import urllib.requestwith urllib.request.urlopen(https://dblp.dagstuhl.de/db/conf/kdd/kdd202…...
简单记录一次帮维修手机经历(Vivo x9)
简介 手边有一台朋友亲戚之前坏掉的Vivo X9手机, 一直说要我帮忙修理一下, 我一直是拒绝的, 因为搞程序的不等于维修的(会电脑不等于维修电器),不知道这种思路如何根深蒂固的,不过好吧ÿ…...
ap聚类是什么
AP聚类(Affinity Propagation clustering)是一种聚类算法,它基于数据点之间的相似度进行聚类。AP聚类算法无需预先指定簇的数量,而是根据数据点之间的相似性动态地确定簇的个数和分配情况。 AP聚类的核心思想是通过迭代计算数据点…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...
