【Linux Shell】基础知识

Linux Shell基础知识

  • 一、Linux Shell基础概念
    • 1.1 Shell定义
    • 1.2 命令行提示符
  • 二、初识Shell
    • 2.1 Shell定义
    • 2.2 登录Shell相关文件
    • 2.3 Shell中的变量
      • 变量类型
      • 变量的引用
      • 单引号\' '与双引号\" \"
      • 变量的删除与检查
    • 2.4 Shell中的扩展
      • 大括号扩展{ }
      • 其他扩展

一、Linux Shell基础概念

1.1 Shell定义

Linux Shell是用户和Linux内核之间的接口程序,为用户提供使用操作系统的接口。
从定义我们可以看出,Linux Shell本质上还是一个应用程序,这个程序最主要的功能就是解译使用者在命令行提示符中输入的指令

1.2 命令行提示符

通常,可以通过命令行提示符来区分用户属性

  • "$"代表超级用户(root)
    在这里插入图片描述

  • "#"表示普通用户
    在这里插入图片描述

在bash中,可以通过修改bashrc配置文件修改命令行提示符格式,如图:
在这里插入图片描述
系统的bashrc文件位于/etc/bashrc,用户的路径是/home/.bashrc。

二、初识Shell

2.1 Shell定义

Shell脚本是通过编写一系列的Shell命令和控制结构,来实现自动化任务批处理系统管理等功能。
关于Bash Shell:Bash Shell是Bourn-Again Shell的简写,是对Bourne Shell的改进版本。后面关于Linux Shell的概念都是以Bash为平台。

2.2 登录Shell相关文件

系统级

  • /etc/profile——系统级别的初始化文件,包含了系统范围的环境变量初始化脚本,用户登录时会自动执行该文件。并设置系统的环境变量和默认配置,可以在该文件中配置"PATH"和自定义的全局的命令。
  • /ect/bashrc——也是系统级别的初始化文件,但是该文件特定于Bash Shell,只有当交互式的Shell启动时才会执行该文件,不对其他非交互式的Shell生效,如sh等。
  • /etc/bash.logout——系统级别的Shell清理脚本,Shell退出时执行。

用户级

  • ~/.bash_profile、~.bash_login、~.profile——用户个人初始化脚本,这三个文件存在多个时按顺序查找,执行第一个,后面的不执行。该文件仅在用户登录时执行一次,用于设置用户的环境变量和启动程序。
  • ~/.bashrc——用户个人的每个交互式Shell的启动脚本。每次启动新的交互式 Bash Shell 时执行,用于自定义 Bash Shell 的行为和功能。这里区分.bash_profile和.bashrc,前者是指通过用户名和密码登录到操作系统时执行一次,后者是指每次在终端打开新的交互式Bash Shell时都会执行。
  • ~/.bash_logout——用户个人的登录Shell清理脚本,当登录Shell退出时执行。

2.3 Shell中的变量

变量类型

Shell中有两种类型的变量:系统变量(环境变量)和用户自定义的变量

  • 系统变量,如PATH、HOSTNAME、SHELL等,可以通过env或者printenv指令查看当前系统中的所有系统变量。
    环境变量本质上是操作系统提供的一种全局数据结构,用于存储和访问各种配置信息、运行时参数和系统状态等。它们可以在不同的进程之间进行传递,并在不同的应用程序中使用。操作系统将环境变量存储在其内部数据结构中,并通过API提供对这些变量的访问。应用程序可以通过读取和设置环境变量来获得操作系统所提供的配置信息和功能。
  • 用户变量,即用户创建和维护的变量,用户变量的生命周期仅限于Shell会话,打开一个新的窗口或Shell重启变量不再有效。使用"=“为变量赋值使用”$"后跟变量名表示变量的值
    在这里插入图片描述

变量的引用

使用"$“后跟变量名表示变量的值,引用变量时根据需要加上”"。
在这里插入图片描述

单引号’ '与双引号" "

当使用单引号 ’ 进行字符串扩展时,会完全保留字符串中的原始文本,不进行任何变量扩展或转义字符替换。这意味着在单引号内部,所有的特殊字符和变量都被视为普通字符,不进行解析。
相比之下,使用双引号 " 进行字符串扩展时,会进行变量扩展和部分转义字符替换。双引号内的变量会被替换为其对应的值,而某些转义字符如 \n 会被解释为相应的特殊字符(换行符)。
下面的例子体现了使用单引号和双引号的区别:
在这里插入图片描述

变量的删除与检查

删除,通常使用unset指令来删除一个变量
在这里插入图片描述
检查,即检查一个变量是否存在,一般有两种格式

  • {变量名? 错误信息}
    在这里插入图片描述
  • {变量名?: 错误信息},区别是当要查找的变量不存在时,第二种方式也会打印 ? 后面的内容
    在这里插入图片描述

2.4 Shell中的扩展

在Shell中,扩展(Expansion)是指将特定的表达式替换为相应的字符串值的过程。Shell中的扩展方式有8种,它们分别是(按扩展的先后顺序排序):大括号扩展、波浪号扩展、参数和变量扩展、命令替换、算术扩展、进程替换、单词拆分和文件名扩展。

大括号扩展{ }

大括号扩展的模式在形式上有一个可选的前缀,其后是一组包含在大括号内的用逗号分隔的字符串或是序列表达式,最后是一个可选的后缀。
例如,echo {a,b,c} 将输出 a b c。看一个较复杂的例子:
在这里插入图片描述
大括号扩展的问题可以分层理解,在本例中,一级只有一项,即最外层的大括号,a和i分别是其前缀和后缀;二级是最外层大括号内部的内容,有两个大括号扩展和一个单独的h。之后按顺序逐项回显。
利用大括号扩展批量创建目录或者文件:
在这里插入图片描述
大括号扩展中的范围表示

  • {<START>…<END>}
    以{a…z}为例,在大括号扩展 {a…z} 中的两个点号(…)表示范围。这种语法可以用于生成连续的字符序列.
    在这里插入图片描述
  • {<START>…<END>…<INCR>}
    Bash 4.0中提供的大括号扩展的新功能,与前面的区别是这里多了一个增量INCR,用于指定每次的增量,如{a…z…5},{1…100…10}。
    在这里插入图片描述

其他扩展

  • 波浪号扩展
    使用波浪号 ~ 来扩展用户主目录的路径。例如,ls ~/Documents 将列出当前用户主目录下的 “Documents” 目录。
  • 命令替换
    使用反引号``或者$()进行命令替换,注意区分反引号和单引号。
    在这里插入图片描述
    除此以外,还有参数和变量扩展、算术扩展、进程替换、单词拆分和文件名扩展等,此处不展开讲述。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用springboot进行后端开发100问

properties和yaml文件怎么互转 安装插件 properties文件和yaml文件区别 properties 文件通过“.”和“”赋值&#xff0c;值前不加空格&#xff0c;yaml通过“:”赋值&#xff0c;值前面加一个空格&#xff1b;yaml文件缩进用空格&#xff1b; properties只支持键值对&#x…

flash attention 2论文学习

flash attention作者Tri Dao发布了flash attention 2&#xff0c;性能为flash attention的2倍。 优化点主要如下&#xff1a; 一、减少 non-matmul FLOPs A00中由于tensor core的存在&#xff0c;使得gpu对于浮点矩阵运算吞吐很高&#xff0c;如FP16/BF16可以达到312 TFLOPs/…

LINUX中的myaql(一)安装

目录 前言 一、概述 二、数据库类型 三、数据库模型 四、MYSQL的安装 &#xff08;一&#xff09;yum安装MYSQL &#xff08;二&#xff09;rpm安装MYSQL 五、MYSQL本地登录 rpm安装MYSQL本地登录 六、重置密码 总结 前言 MySQL是一种常用的开源关系型数据库管理系统&#xff…

蛋白质分子结构设计

paper read 1 Created by: 银晗 张 Created time: May 27, 2023 3:47 PM Tags: Product 补充了解蛋白质的生物学知识学习一下Diffusion的原理 &#x1f4a1; Method & Innovations Framework Summary: first deep learning models to perform antibody sequence-stru…

banner轮播图实现、激活状态显示和分类列表渲染、解决路由缓存问题、使用逻辑函数拆分业务(一级分类)【Vue3】

一级分类 - banner轮播图实现 分类轮播图实现 分类轮播图和首页轮播图的区别只有一个&#xff0c;接口参数不同&#xff0c;其余逻辑完成一致 适配接口 export function getBannerAPI (params {}) {// 默认为1 商品为2const { distributionSite 1 } paramsreturn httpIn…

pearcmd.php文件包含妙用

文章目录 pearcmd.php文件包含妙用利用条件原理利用config-createinstalldownload pearcmd关键词被ban参考 pearcmd.php文件包含妙用 利用条件 php.ini中register_argc_argvOn开启安装pecl/pear pecl是PHP中用于管理扩展而使用的命令行工具&#xff0c;而pear是pecl依赖的类…

从新手到专业人士:探索 C++ STL 以获得终极性能

探索 C STL 以获得终极性能 博主简介一、引言二、C STL 简介2.1、STL 是什么&#xff1f;2.2、STL 中的常用组件2.3、STL 的优点 三、入门指南&#xff1a;了解基本概念和用法3.1、容器&#xff1a;vector、list、deque、set、map 等3.2、算法&#xff1a;查找、排序、遍历等3.…

Javascript程序异常处理

什么是异常&#xff0c;异常就是我们在编写Javascript程序时出现的一些错误&#xff0c;并会在控制台中抛出这个错误&#xff0c;出现异常其实并不是一件坏事&#xff0c;相对的呢它可以提醒我们开发人员哪里出现了错误&#xff0c;方便我们后续的修改&#xff0c;能让我们的代…

OSI 和 TCP/IP 网络分层模型详解(基础)

OSI模型: 即开放式通信系统互联参考模型&#xff08;Open System Interconnection Reference Model&#xff09;&#xff0c;是国际标准化组织&#xff08;ISO&#xff09;提出的一个试图使各种计算机在世界范围内互连为网络的标准框架&#xff0c;简称OSI。 OSI 七层模型 OS…

centos逻辑分区磁盘扩展

最近碰到服务器磁盘空间不足&#xff0c;需要扩展逻辑分区的需求&#xff0c;特地做下小笔记&#xff0c;方便后续自己回忆。下图是磁盘的相关概念示意图&#xff1a; 1、查看磁盘空间 [rootlocalhost ~]# df -h #查看磁盘空间&#xff0c;根分区的大小是18G&#xff0c;已经用…

RISCV -3 RV32I/RV64I基本整型指令集

RISCV -3 RV32I/RV64I基本整型指令集 1 RV32I Base Integer Instruction Set1.1 Programmers’ Model for Base Integer ISA1.2 Base Instruction Formats1.3 Immediate Encoding Variants1.4 Integer Computational Instructions1.4.1 Integer Register-Immediate Instruction…

深入浅出多种开发语言对接淘宝京东1688阿里巴巴等电商平台,获取实时商品详情数据API接口介绍

api接口详解大全?优秀的设计是产品变得卓越的原因设计API意味着提供有效的接口&#xff0c;可以帮助API使用者更好地了解、使用和集成&#xff0c;同时帮助人们有效地维护它每个产品都需要使用手册&#xff0c;API也不例外在API领域&#xff0c;可以将设计视为服务器和客户端之…

iPortal 注册登录模块扩展开发

作者&#xff1a;yx 文章目录 前言一、示例代码简介二、对接 iPortal REST API 接口2.1、登录模块扩展开发2.2、注册模块扩展开发 三、页面内容及样式实现四、配置启用定制页面 前言 针对注册登录模块&#xff0c;iPortal 允许用户通过 iFrame 方式接入自行开发的页面&#xf…

pytorch安装GPU版本 (Cuda12.1)教程: Windows、Mac和Linux系统快速安装指南

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

语言尽头的奇幻旅程:如何求解最后一个单词的长度?

本篇博客会讲解力扣“58. 最后一个单词的长度”的解题思路&#xff0c;这是题目链接。 以示例2为例&#xff1a;s " fly me to the moon " 首先&#xff0c;找到字符串末尾的\0。s一开始指向首字符f&#xff0c;我们从这个位置开始&#xff0c;向后遍历&#xff0c…

基于高斯混合模型聚类的风电场短期功率预测方法(Pythonmatlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 2.1 Python 2.2 Matlab &#x1f389;3 参考文献 &#x1f308;4 Matlab代码、数据、文章讲解 &#x1f4a5;1 概述 文献来源&#xff1a; 摘要&#xff1a;对任意来流条件下的风电场发电功率进行准确预测,是提高电网对风电…

153、仿真-基于51单片机四相步进电机正反转控制系统设计(程序+Proteus仿真+参考论文+流程图+配套资料等)

毕设帮助、开题指导、技术解答(有偿)见文未 目录 一、设计功能 二、Proteus仿真图​ 三、程序源码 资料包括&#xff1a; 需要完整的资料可以点击下面的名片加下我&#xff0c;找我要资源压缩包的百度网盘下载地址及提取码。 方案选择 单片机的选择 方案一&#xff1a;ST…

vuejs源码之模版编译原理

之前我们说过虚拟dom&#xff0c;也就是虚拟dom拿到vnode后所做的事情&#xff0c;而模版编译是如何让虚拟dom拿到vnode。 模版编译的目标就是生成渲染函数&#xff0c;而渲染函数的作用是每次执行它&#xff0c;它就会使用当前最新的状态生成一份新的vnode&#xff0c;然后用…

ES6基础知识八:你是怎么理解ES6中Proxy的?使用场景?

一、介绍 定义&#xff1a; 用于定义基本操作的自定义行为 本质&#xff1a; 修改的是程序默认形为&#xff0c;就形同于在编程语言层面上做修改&#xff0c;属于元编程(meta programming) 元编程&#xff08;Metaprogramming&#xff0c;又译超编程&#xff0c;是指某类计算…

.360勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复

引言&#xff1a; 近年来&#xff0c;随着互联网的普及和信息技术的快速发展&#xff0c;网络安全问题日益严峻。其中&#xff0c;勒索病毒成为网络安全领域的一大威胁。本文91数据恢复将重点介绍一种名为“.360勒索病毒”的恶意软件&#xff0c;并探讨被该病毒加密的数据文件…