【Linux Shell】基础知识

news2024/12/25 9:32:08

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” 目录。
  • 命令替换
    使用反引号``或者$()进行命令替换,注意区分反引号和单引号。
    在这里插入图片描述
    除此以外,还有参数和变量扩展、算术扩展、进程替换、单词拆分和文件名扩展等,此处不展开讲述。

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

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

相关文章

STM32MX配置EEPROM(AT24C02)------保姆级教程

———————————————————————————————————— ⏩ 大家好哇&#xff01;我是小光&#xff0c;嵌入式爱好者&#xff0c;一个想要成为系统架构师的大三学生。 ⏩最近在开发一个STM32H723ZGT6的板子&#xff0c;使用STM32CUBEMX做了很多驱动&#x…

临床检验系统LIS

临床检验系统(Laboratory Information System)是一个能实现检验信息电子化、检验信息管理自动化的网络系统&#xff0c;其主要功能是将检验的实验仪器传出的检验数据经分析后&#xff0c;生成检验报告&#xff0c;通过网络存储在数据库中&#xff0c;使医生能够方便、及时的看到…

助力中小企业数字化改造 象过河把中小企业老板当成“自己人”

燥热的夏日午后&#xff0c;在郑州市国家大学科技园附近的一家咖啡店里约见了象过河软件研发的总负责人象海先生。 温文儒雅、润物无声的象海先生自信豁达、成熟冷静。软件开发技术出身的他&#xff0c;善于通过软件开发定制来帮助中小企业解决各种错综复杂的业务、仓储以及财…

Could not resolve placeholder

本质原因&#xff1a;项目启动未扫描到该配置&#xff0c;一般来说是配置不对 检查方向 1、检查编译后的target包里是否有该配置所在的文件 如果不在就clear&#xff0c;重新编译启动再去检查 2、检查启动的环境是否匹配 编译后的target包下的配置文件名称是否跟启动类的环境…

app流量变现流量分发策略——waterfall技术

waterfall&#xff0c;中文翻译为“瀑布流”&#xff0c;字面意思理解就是“从上往下流”&#xff0c;但“从上到下”这四个字该如何理解&#xff1f; 在广告行业中&#xff0c;waterfall指的是“在无法实时评估每次流量的价值时&#xff0c;基于历史eCPM数据&#xff0c;从上…

Docker OOM处理方式

优质博文&#xff1a;IT-BLOG-CN cicode xxx k8s docker events oom occured告警原因 特别需要注意的是&#xff1a;docker events oom的处理方法不同于java.lang.OutOfMemoryError。 当我们在PAAS/Captain上申请容器实例时&#xff0c;会设置内存Limit。比如容器Flavor为2C4…

【Nodejs】npm的使用

1.包和npm 1.1 什么是包 由于 Node 是一套轻内核的平台&#xff0c;虽然提供了一系列的内置模块&#xff0c;但是不足以满足开发者的需求&#xff0c;于是乎出现了包&#xff08;package&#xff09;的概念&#xff1a; 与核心模块类似&#xff0c;就是将一些预先设计好的功能…

20.0 HTTP通信

1. web开发 1.1 web开发介绍 Web指的是World Wide Web(万维网), 是一种基于互联网的信息系统. 万维网由一系列通过超文本链接相互连接的页面组成, 这些页面中包含了文本, 图像, 音频, 视频等多媒体内容. 用户可以通过浏览器访问万维网上的网页, 并通过超链接在不同页面之间导…

网页布局元素填充思路 ———— 先布局,再局部

【引言】 今天来分享一下在JS练习项目中学习到的网页布局思路&#xff0c;适合刚接触JS的小白在做练习项目&#xff0c;不知所措的时候看喔~ 简单来说就是 ———— 先布局&#xff0c;再局部。 在初次做练习项目的时候&#xff0c;大多都会先仿照一个网站先进行一个试练&…

商城后台系统的多规格

需要添加多规格,并且还要根据算法生成对应的规格列表 1、获取此规格值数据类型 specsList:[{title: "颜色",specsTag:[蓝色,绿色],},{title: "尺码",specsTag:[165*130,L,XL], }] 2、处理数据 let skuList = []for(const { specsTag } of this.specsLi…

StableDiffusion 换脸实现

先看效果&#xff1a; 想要换的脸&#xff1a; 想要把脸放到的目标图片&#xff1a; 实现方案&#xff1a; StableDiffusionroop&#xff08;本次实验基于roopV0.02版本&#xff09; 1/安装SD&#xff0c;模型选择 DreamShaper,Sampler使用 Euler a 2/安装roop插件 roop插…

adnroid 11. 0 Activity启动流程图解

从Launcher到ActivityTaskManager 从ActivityTaskManagerService 到 ApplicationThread 从ApplicationThread到onCreate

CSS实现文字渐变色

css样式 style"background: linear-gradient(to right, red, #FFA387);-webkit-background-clip: text;color: transparent;"效果

结构型设计模式-1.代理设计模式

结构型设计模式-1.代理设计模式 结构型设计模式&#xff1a;利用类与类之间的关系&#xff08;继承、组合&#xff09;&#xff0c;形成一种类与类之间的结构&#xff0c;通过这种结构提高代码的可拓展性、可维护性和可重用性。 一、简介 代理设计模式&#xff08;Proxy Des…

从零开始制作婚礼策划展示小程序

随着移动互联网的发展&#xff0c;小程序已经成为各行各业展示和推广自己的重要工具之一。对于婚礼策划行业来说&#xff0c;制作一个专属的婚礼策划展示小程序&#xff0c;不仅能提升服务的专业性和便利性&#xff0c;还能吸引更多的客户。下面将介绍从零开始制作婚礼策划展示…

【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(系统底层优化篇)

深入探索和分析MySQL数据库的全方位的优化实战开发指南&#xff08;数据库底层优化篇&#xff09; 硬件层面优化数据库物理机分析底层技术优化磁盘性能优化随机IO能力的能力支持 RAID磁盘阵列RAID10RAID10的优势 网卡优化网络设备坑点问题建议 服务器硬件配置调整服务器BIOS调整…

Layout软件中的焊盘的一般命名方法是什么呢?

答&#xff1a;对于不同的焊盘有不同命名方法&#xff0c;这里给大家介绍一下普遍的命名方法&#xff0c;具体如下所示&#xff1a; 贴片类焊盘命名方式&#xff1a; 1&#xff09;圆焊盘circle &#xff1a;SC 直径&#xff0c;如&#xff1a; SC1R00&#xff0c;即直径为1m…

多种语言示例采集数据【淘宝天猫1688拼多多API系列】可高并发线程

长话短说&#xff0c;节约彼此宝贵时间&#xff0c;我们以淘宝商品详情数据为例&#xff1a; 请求方式&#xff1a;HTTPS POST GET 请求地址&#xff1a;https://o0b.cn/anzexi taobao.item_get 公共参数 名称类型必须描述技术交流18179014480keyString是调用key&#xf…

探寻智能化未来:AI与Web3共创金融领域巨大潜力

人工智能&#xff08;AI&#xff09;和Web3技术的迅猛发展为我们带来了许多新的机遇和影响。在数字经济和社会的浪潮中&#xff0c;结合了AI的智能化能力和Web3的去中心化与区块链技术&#xff0c;我们将进入一个智能化的Web3时代。人工智能和Web3技术是开拓生产力极限和重新定…

Docker 数据管理

Docker 数据管理 一、docker数据管理 1.数据卷 数据卷是一个供容器使用的特殊目录&#xff0c;位于容器中。可将宿主机的目录挂载到数据卷上&#xff0c;对数据卷的修改操作立刻可见&#xff0c;并且更新数据不会影响镜像&#xff0c;从而实现数据在宿主机与容器之间的迁移。…