Linux学习[15]bash学习深入1---bash的功能---变量详解

news2024/9/20 9:38:13

文章目录

  • 前言:
  • 1. bash功能
  • 2. 变量
    • 2.1 变量赋值
    • 2.2 unset取消变量
    • 2.3 环境变量
  • 总结

前言:

之前在学树莓派相关内容的时候,对bash脚本的简单上手做了一个总结,并且归纳到下面三个博客。
当时参考的书为《从树莓派开始玩转linux》,后面这个linux学习系列相关是基于《鸟哥的linux私房菜基础学习篇》。后者比前者更加详细,因此接下来几篇博客算是对之前的3,4,5三篇的补充。


Linux学习[3]—shell脚本之bash脚本—变量赋值引用&数学运算&简易脚本编写
Linux学习[4]—shell脚本之bash脚本—简单函数与调用
Linux学习[5]—shell脚本之bash脚本—判断&选择&循环


1. bash功能

我们在linux控制台中,按↑ ↓ 的时候,就可以在之前输入过的指令中进行切换,这是由于bash具有命令编修能力,即history功能。

我们如果要进入/home/abcdefghijklmn/这个目录,我们我们其实只需要输入/home/abcd+[tab],那么后面的目录名称就会自动补全。如果目录有多个abcd开头的,你可能需要按几次tab键,把所有可以补全的备选项列出来,然后再输入几个字符,按tab补全。
这个补全的功能其实也是bash强大功能的一种。

我们通过ls -al列出当前目录下的所有文件的详细信息,包含隐藏文件。这个命令的本体是ls,后面跟了两个选项-a,-l。我们完全可以把这一个整体命名为lm,例如:alias lm='ls -al'。这样设置以后,后面的输入lm之后,就相当于输入了ls -al。这个指令比较短,可能看不出来有什么好的,但是如果涉及到一些长长的指令,并且后期还需要经常用到话,取个别名效果还是非常显著的。

我们运行某一个程序的时候,如果中途想停止,使用ctrl+c即可停止。这是bash控制功能的体现。

我之前写的简单的bash脚本,其实就是shell scripts的一种,也是bash的程序化脚本功能。

后面bash涉及到一些管线命令,那么万用字符就能起到非常大的作用。其实我们平常接触到的很多代码都有万用字符的体现,比如*表示任意0~无穷个字符。

bash的一些小技巧:

1.比如我们用cd指令进入到一个非常非常多层的目录中去,往往一行写起来比较密整体也比较乱。那我们可以通过\+[enter]的方式,进行换行输入。
下面的效果就等效于cd xxxxxxxxxx/yyyy-xilinx-5.24/gcc-linux-ar,当然可以多分几行,这样显得更加规整一些。
在这里插入图片描述2.另外,当你所需要下达的指令特别长,或者是你输入了一串错误的指令时,你想要快速的将这串指令整个删除掉,一般来说,我们都是按下删除键的。

组合键功能
[ctrl]+u/[ctrl]+k分别是从光标处向前删除指令串 ([ctrl]+u) 及向后删除指令串 ([ctrl]+k)
[ctrl]+a/[ctrl]+e分别是让光标移动到整个指令串的最前面 ([ctrl]+a) 或最后面 ([ctrl]+e)

2. 变量

2.1 变量赋值

用echo来输出变量,变量前加一个$来取得变量的值。
例如我们常用的指令:echo $PATH
在这里插入图片描述

但是这个指令的$符号后面跟的是一个变量名称,变量名称后面不可以直接接字符,如果输出PATH变量的值再加上IS
echo $PATHIS是不对的,这表示输出PATHIS变量的值。
所以针对于这种情况我们一般输出变量都需要加上{}
比如下面的echo ${PATH}IS
在这里插入图片描述


变量的赋值一般是用等号赋值,赋值的时候有很多应用场景,这里列个表,方便查看。

实例备注/说明
myname=edwinwzy给变量myname赋值edwinwzy
错误示例:myname = edwinwzy等号两边不能直接接空白字符
错误示例:1myname=edwinwzy变量名称只能是英文字母与数字,但是开头字符不能是数字
myname=edwinwzy\$这里给myname赋值edwinwzy$,但是$为特殊字符,所以需要用\来进行转换,将其转为一般字符
myname=$(uname -r)我们也可以把一个指令的输出内容作为变量的值,用$来取值
PATH=${PATH}:/home/bin我们在linux中对环境变量进行添加的时候,可以采用这样的赋值方式进行累加,即在原有的PATH加上后面的内容。
export myname变量赋值之后我们可以通过export使得变量变成环境变量,这样别的bahs脚本就可以使用这个变量

2.2 unset取消变量

对于一些变量如果设置错了,不想用了,可以使用unset来取消。
一般用法就是unset 变量名
例如:unset myname


2.3 环境变量

环境变量我个人的理解就是在你在终端输入一个命令,系统能够知道你这个指令对应的是用的什么功能。
比如自己手动装一个交叉编译链的工具,那么GCC和GDB其实都要手动添加到环境变量PATH (可执行文件的搜索路径)中去的,这样你在控制台输入gcc -v的时候,系统才会知道你想查看gcc的版本。

查看环境变量用到的指令是env
例如我们可以在虚拟机里面输入env来查看当前的shell环境的所有变量与其内容。
下面是输入env之后的内容截取部分,可以看到PATH也是环境变量的一种。
在这里插入图片描述

在这里插入图片描述
其中部分字段解释如下:

字段名含义
HOME使用者的主文件夹
SHELL当前的环境使用的SHELL是哪一个程序,即是/bin/bash脚本还是其他脚本程序
HISTSIZE与历史有关的指令,系统保存我们曾经输入过的值的数量就是由这个决定
PATH可执行文件的搜索路径,目录与目录之间用:分隔
LANG语系。我这里的ubuntu默认是en_US.UTF-8,不同语系对应的编码方式是不一样的。比如A编码是AaBbCc…Zz;B编码是ABCD…Zabcd…z,编码的不同就会在程序代码写法上有区别。

{变量范围}

我们自定义的变量就成为自定变量。
用C语言里面的变量类比一下,环境变量和自订变量的区别大概就是全局变量和局部变量的区别。

自定变量通过export就可以变成环境变量,就能够被子程序引用。


总结

这篇博客节选了书中关于bash变量的部分内容并结合自己的学习体验进行了记录,有些不常用的用法我这里没做一定的记录。

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

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

相关文章

Gitlab CI/CD入门(一)Python项目的CI演示

本文将介绍CI/CD的基本概念,以及如何使用Gitlab来实现CI/CD。   本文介绍的CI/CD项目为个人Gitlab项目:gitlab_ci_test,访问网址为:https://gitlab.com/jclian91/gitlab_ci_test。 CI/CD的含义 在现代软件工程中,CI…

【主跑例子】 Framework01、02;QFramework00(我跟着视频的旧版本,但推荐用最新的)、01(无)、02(无)、03(无)

总体介绍 做的是 00,10,13,考虑做10。 11,12没下载,当时把这两个误认为 00,10 用到了UniRx Framework有2个 00 Unity 游戏框架搭建 2019 第一季 C# 核心知识与简易 Manager Of Managers 框架搭建 120课数 01 Unity 游戏框架搭建 2019 第二季 模块/系统…

前端Vue仿滴滴打车百度地图定位查找附近出租车或门店信息(更新版)

前端vue仿滴滴打车百度地图定位查找附近出租车或门店信息, 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id12982 效果图如下: # #### 使用方法 使用方法 <!-- 官方文档&#xff1a; https://dafrok.github.io/vue-baidu-map/#/zh/start/b…

五子棋:起源、原理与游戏规则、vue实现五子棋案例游戏

目录&#xff1a; 引言五子棋的历史背景五子棋的原理五子棋的游戏规则五子棋游戏的实现 5.1 创建 Vue 组件 5.2 初始化棋盘 5.3 下棋与判断胜负 5.4 渲染棋盘与棋子总结 更多知识 学习&#xff1a;https://www.processon.com/view/60504b5ff346fb348a93b4fa#map 引言 五子棋…

解密大型语言模型:从相关性中发现因果关系?

深度学习自然语言处理 原创作者&#xff1a;wkk 因果推理是人类智力的标志之一。因果关系NLP领域近年来引起了人们的极大兴趣&#xff0c;但其主要依赖于从常识知识中发现因果关系。本研究提出了一个基准数据集(CORR2CAUSE)来测试大语言模型(LLM)的纯因果推理能力。其中CORR2CA…

I/O体系结构和设备驱动程序(一)

I/O体系结构 让信息在CPU、RAM和I/O设备之间流动的数据通路称之为总线&#xff0c;即计算机内的主通信通道。所有计算机都有一条系统总线&#xff08;一种典型的系统总线是PCI总线&#xff09;&#xff0c;连接内部大部分的硬件设备。计算机内不同的总线可以通过“桥”进行连接…

lua语言的闭包设计和LClosure解读

什么是闭包 闭包是一种特殊的函数&#xff0c;它可以访问其创建时所处的环境中的变量&#xff0c;即使在函数创建后&#xff0c;环境已经不再存在&#xff0c;这些变量仍然可以被访问。 为了更好地理解闭包&#xff0c;我们可以看一个例子&#xff1a; function counter()lo…

Appium知多少

Appium我想大家都不陌生&#xff0c;这是主流的移动自动化工具&#xff0c;但你对它真的了解么&#xff1f;为什么很多同学搭建环境时碰到各种问题也而不知该如何解决。 appium为什么英语词典查不到中文含义&#xff1f; appium是一个合成词&#xff0c;分别取自“applicatio…

OpenAI官方提示词课(七)制作一个聊天机器人

大型语言模型的一个令人兴奋的方面是&#xff0c;你可以利用它来构建一个定制的聊天机器人&#xff0c;并且只需付出少量的努力。ChatGPT 的网页界面可以让你与一个大型语言模型进行对话。但其中一个很酷的功能是&#xff0c;你也可以利用大型语言模型构建你自己的定制聊天机器…

案例 | 标杆引领!人大金仓智绘数字金融

随着中央数字经济政策推进金融业数字化建设&#xff0c;数字金融已初见成效&#xff0c;但尚存在信息安全缺乏保障、转型覆盖不全面等问题。 为实现金融行业全面数字化转型升级&#xff0c;作为数据库领域国家队&#xff0c;人大金仓紧跟国家战略&#xff0c;自主研发的系列数据…

msvcp110.dll丢失原因——msvcp110.dll丢失怎么修复(最新可修复)

昨天卸载了一个垃圾软件以后&#xff0c;我的其他软件就无法打开运行&#xff0c;提示msvcp110.dll丢失&#xff0c;无法继续执行此代码。今天早上找了很多方法&#xff0c;终于把msvcp110.dll丢失的原因以及修复的方法都弄明白了。msvcp110.dll是一个非常重要的文件&#xff0…

【CVE-2022-0185】Linux kernel [文件系统挂载API] 堆溢出漏洞分析与利用

0x00.一切开始之前 CVE-2022-0185 是 2022 年初爆出来的一个位于 filesystem context 系统中的 fsconfig 系统调用中的一个堆溢出漏洞&#xff0c;对于有着 CAP_SYS_ADMIN 权限&#xff08;或是开启了 unprivileged namespace&#xff09;的攻击者而言其可以利用该漏洞完成本地…

Hugging News #0616: 有几项非常重要的合作快来围观、最新中文演讲视频回放发布!...

每一周&#xff0c;我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新&#xff0c;包括我们的产品和平台更新、社区活动、学习资源和内容更新、开源库和模型更新等&#xff0c;我们将其称之为「Hugging News」&#xff0c;本期 Hugging News 有哪些有趣的消息…

【MySQL】SQL的函数用法

文章目录 聚合函数Count()Max()Min()Sum()Avg() 其他常用函数时间函数字符串函数SUBSTRING函数:切割字符串([start:end])SUBSTRING_INDEX函数:切割字符串(split)LOWER&UPPER函数:大小写转化CONCAT&CONCAT_WS函数:连接字符串REPLACE函数:字符串替换 数学函数ROUND函数:四…

rhce8考试

rhce考试模拟环境准备&#xff1a; cat /etc/rht 确认当前是否为294环境&#xff0c;真实考试有5台被管理节点&#xff0c;借助bastion当做第5台。 将考试所需的文件放到这个目录&#xff0c;/content/courses/rh294/rhel8.0/materials目录&#xff0c;虚拟机看br0网卡信息ifc…

使用LOAD DATA INFILE命令加载数据文件到MySQL数据库的方法和常见错误及解决方法

文章目录 使用LOAD DATA INFILE命令加载数据文件到MySQL数据库的方法和常见错误及解决方法LOAD DATA INFILE的语法详细1.创建&#xff08;选择&#xff09;目标数据库和表2.将数据从 CSV 文件导入已创建的表常见错误和解决方法错误1&#xff1a;ERROR 1290 (HY000): The MySQL …

linux_centos7.9/ubuntu20.04_下载镜像及百度网盘分享链接

1、镜像下载站点 网易开源镜像&#xff1a;http://mirrors.163.com/ 搜狐开源镜像&#xff1a;http://mirrors.sohu.com/ 阿里开源镜像&#xff1a;https://developer.aliyun.com/mirror/ 首都在线科技股份有限公司&#xff1a;http://mirrors.yun-idc.com/ 常州贝特康姆软件技…

TFTP是什么,一文带你了解

目录 一、TFTP协议简介 TFTP协议的主要特点包括&#xff1a; 二、TFTP包格式 1. 读/写请求包 2. 文件数据包 3. 回应包 4. 错误信息包 三、TFTP的工作流程 TFTP协议的工作流程包括以下几个步骤&#xff1a; 四、TFTP的传输模式 1. 二进制传输模式 2. ASCII码传输模式…

【Spring】1、Spring 框架的基本使用【读取配置文件、IoC、依赖注入的几种方式、FactoryBean】

目录 一、Spring 简介二、读取配置文件、创建对象三、使用 Spring(1) 依赖(2) Spring 的核心配置文件(3) 获取 Spring IoC 工厂中的对象实例 四、IoC 容器五、依赖注入&#xff08;DI&#xff09;(1) 基于 setter 注入【bean】(2) 基于 setter 注入【基本类型、包装类型、Strin…