Shell变成规范与变量

news2024/11/23 23:07:32

目录

1. Shell脚本

1.1 Shell脚本概述

1.2 Shell的作用 

1.3 Shell脚本的构成

2. 重定向与管道操作 

 2.1 交互式硬件设备

​ 2.2 重定向操作

3. shell变量

3.1 自定义变量

 3.2 变量的作用范围​编辑

3.3 整数变量的运算

4. 环境变量

4.1 特殊的Shell变量

4.2 只读变量 


1. Shell脚本

1.1 Shell脚本概述

(1)Shell脚本概念

(2)shell脚本应用场景

 

1.2 Shell的作用 

Shell的作用——命令解释器,“翻译官”

 介于系统内核与用户之间,负责解释命令行

 Shell(壳程序)是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。

查看系统中shell类型 

最常用的就是bash、tcsh、csh、sh、nologin这些shell

 

 /bin/bash和/bin/sh都是bash的软连接,都指向bash 

  • sh:已经被bash所替换,是bash的前身;

  • nologin:奇怪的shell,这个shell可以让用户无法登录主机;

  • bash(/bin/bash)是目前大多数Linux版本采用的默认Shell.

为什么系统上合法的Shell要写入/etc/shells这个文件呢? 

 这是因为系统某些服务运行过程中,会去检查用户能够使用的Shell,而这些shell的查询就是借由/etc/shells这个文件。

用户什么时候可以取得shell来工作?用户默认会取得哪一个shell? 

 当用户登录的时候,系统就会给我一个shell让我来用,而这个登录取得的Shell就记录在/etc/passwd这个文件内。

1.3 Shell脚本的构成

(1)脚本申明(解释器):若第一行为" #!/bin/bash",表示此行以下的代码语句是通过/bin/bash程序来解释执行,#!/bin/bash为默认解释器。还有其它类型的解释器,比如#!/usr/bin/python、#!/usr/bin/expect。

(2)注释信息:以“#”开头的语句表示为注释信息,被注释的语句在运行脚本时不会被执行。
 

1.4 编写Shell脚本 

(1)编写脚本代码 

 使用vim编辑器

(2)执行shell脚本 

 方法一:指定路径的命令,要求文件必须有x权限。

  • 指定绝对路径:/root/first.sh

  • 指定相对路径:./first.sh 

 方法二:指定shell来解释脚本,不要求文件必须有x权限。

sh 脚本路径: sh first.sh

source 脚本路径: . first.sh 或者 source first.sh

bash和sh命令执行脚本文件;

注意:指定路径以及sh、bash执行脚本的方式,会在子shell环境中运行,不会影响当前所在目录、变量的值等因素;而"."和source命令执行脚本的方式,是在当前shell环境中运行,会影响当前所在目录、变量的值 等因素。

2. 重定向与管道操作 

 2.1 交互式硬件设备

 2.2 重定向操作

 重定向输入:<,从指定文件读取数据

重定向输出:>,将输出结果保存到指定文件,会覆盖文件中原有内容

 

重定向追加:>>,将输出结果追加到指定文件的尾部,可以实现合并两个文件的效果 

 标准错误输出:2>,将错误信息保存到指定的文件中,会覆盖文件中原有的内容

混合输出:&>将代码正确执行的内容标准输出到指定文件中,或者将错误信息保存到指定文件 

混合输出的补充知识:(2>&1:将标准错误输出重定向到标准输出) 面试考试题

ls -lh > test.txt 2>&1    

ls -ln 标准输出 到屏幕
ls -ln > test.txt 重定向输出到 text.txt  1 -->  test.txt
2>&1   错误输出 重定向到 标准输出

 3. shell变量

3.1 自定义变量

定义变量

 

下划线开头定义变量 

 

 题目:要求将$a和$b名字交换

解:准备一个临时变量$c,

 read -p "提示内容"  变量名           #从键盘输入中获取变量值

 

 `...`  $(...)    提取里面的命令执行后的结果

 3.2 变量的作用范围

 

 让自定义的变量在所有shell环境中有效的方法:

 1)在 /etc/profile 文件中定义 export 变量名=变量值
   source /etc/profile 立即生效 或 重新登录系统自动生效
 

 

2)在 /etc/bashrc 文件中定义 变量名=变量值
   切换 shell 环境自动生效

 

3.3 整数变量的运算

进行整数变量的运算 

echo $(expr 整数1 运算符 整数2)    $(expr $变量1 运算符 $变量2)                      +  -  \*  /  

 echo $[整数1 运算符 整数2]         $[变量1 运算符 变量2]           +  -  *  /  %   

 echo $((整数1 运算符 整数2))       $((变量1 运算符 变量2))         +  -  *  /  %   

 使用let关键字进行整数变量的运算(必须要赋予给变量值)

 浮点数运算

 方法一

方法二

4. 环境变量

4.1 特殊的Shell变量

 

 env 查看当前shell环境中所有可用的环境变量​​​​​​​

 echo $HOME:查看当前用户的家目录

4.2 只读变量 

readonly 变量名=变量值

 

4.3 位置变量 

 

 4.4 预定义变量 

 $?  代表的是上一条Linux命令执行的返回状态码(0~255)0表示上一条命令执行正确,非0值则表示上一条命令执行异常

$*  默认代表脚本后面跟的所有参数,加上双引号后 "$*" 会把所有参数看做一个整体
$@  默认代表脚本后面跟的所有参数,加上双引号后 "$@" 还是会把每个参数看做一个个体 

 

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

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

相关文章

SWAT模型【建模方法、实例应用、高级进阶技能】实践

第一部分&#xff1a;SWAT模型实践部分 一、SWAT模型及应用介绍 1.1 面源污染概要 1.2 SWAT模型及应用 1.3 SWAT模型原理 1.4 SWAT模型输入文件 1.5 ArcGIS与SWAT关系 二、SWAT模型中GIS必备技术 2.1 GIS软件平台 2.2 ArcGIS10.6安装和注意事项 2.3 ArcGIS入门 2.…

【如此简单!数据库入门系列】之无序不代表混乱 -- 堆文件

文章目录 前言堆文件链表实现页目录实现总结系列文章 前言 还记得上次遗留的问题吗&#xff1f; 以什么组织方式将数据保存在磁盘中&#xff1f; 今天我们接着讨论这个问题。 首先想一个问题&#xff1a;有一天&#xff0c;你开着自己心爱的大型SUV去超市购物。在停车场入口看…

Python中tkinter编程入门1

1 tkinter库简介 tkinter是Python的标准库&#xff0c;用来进行GUI&#xff08;Graphical User Interface&#xff0c;图形用户界面&#xff09;编程。 2 导入tkinter库 tkinter是Python默认的GUI库&#xff0c;因此&#xff0c;IDLE中已经包含了该库&#xff0c;使用时无需…

爱奇艺文娱知识图谱的构建与应用实践

2012年5月&#xff0c;Google发布了知识图谱(Knowledge Graph)&#xff0c;以提升搜索引擎返回的答案质量和用户查询的效率。有了知识图谱作为辅助&#xff0c;搜索引擎能够洞察用户查询背后的语义信息&#xff0c;返回更为精准、结构化的信息&#xff0c;更大可能地满足用户的…

抖音小店怎么运营?最全的运营攻略来了?

大家好&#xff0c;我是电商糖果 很多开好店铺的小伙伴&#xff0c;都会遇到一个难题&#xff0c;那就是不会运营店铺。 可能好几个月才出十几单&#xff0c;甚至体验分都没有弄出来。 说实话&#xff0c;这种情况糖果见多了。 糖果做抖音小店也有四年多了&#xff0c;也开…

STM32F1#1(入门了解)

一、STM32开发平台和工具 1.1 STM32芯片介绍 典型微控制器由CPU&#xff08;运算器、控制器&#xff09;、RAM、ROM和输入输出组成。 1.2 STM32核心板 STM32核心板配件&#xff1a; ①JTAG/SWD仿真-下载器 ②通信-下载模块 ③OLED显示屏 1&#xff09; 通信-下载模…

uniapp 小程序图片懒加载组件 ImageLazyLoad

预览图 组件【ImageLazyLoad】代码 <template><viewclass"image-lazy-load":style"{opacity: opacity,borderRadius: borderRadius rpx,background: background,transition: opacity ${time / 1000}s ease-in-out,}":class"image-lazy-loa…

请大数据把我推荐给正在申请小程序地理位置接口的人

小程序地理位置接口有什么功能&#xff1f; 若提审后被驳回&#xff0c;理由是“当前提审小程序代码包中地理位置相关接口( chooseAddress、getLocation )暂未开通&#xff0c;建议完成接口开通后或移除接口相关内容后再进行后续版本提审”&#xff0c;那么遇到这种情况&#x…

Python程序设计 函数(三)

练习十一 函数 第1关&#xff1a; 一元二次方程的根 定义一个函数qg&#xff0c;输入一元二次方程的系数a,b,c 当判别式大于0&#xff0c;返回1和两个根 当判别式等于0&#xff0c;返回0和两个根 当判别式小于0&#xff0c;访问-1和两个根 在主程序中&#xff0c;根据函数返回…

c 双向链表

图片 #include <stdio.h> #include <stdlib.h> #include <string.h>int main(void){ struct film{char name[20];int id;struct film *pre; //前向指针struct film *next; //后向指针 };struct film *headNULL;struct film *ls,*lspre,*work;in…

微信小程序16: 组件通信

父子组件之间的通信 父子组件通信一共有三种方式 属性绑定 用于父组件向子组件的指定属性设置数据&#xff0c;仅能设置JSON兼容的数据 事件绑定 用于子组件向父组件传递数据&#xff0c;可以传递任意数据 获取组件实例 父组件还可以通过this.selectComponent()获取子组件的实…

【C++】:模板初阶

目录 一&#xff0c;泛型编程二&#xff0c;函数模板2.1 函数模板概念2.2 函数模板格式2.3 函数模板的原理2.4 函数模板的实例化2.5 模板参数的匹配原则 三&#xff0c;类模板3.1 类模板的定义格式3.2 类模板的实例化 一&#xff0c;泛型编程 在C语言中如何实现一个通用的交换…

在Leaflet中点对象使用SVG和Canvas两种模式的对比

目录 前言 一、关于SVG和Canvas 1、SVG知识 2、Canvas知识 3、优缺点 二、SVG和Canvas在Leaflet的使用 1、相关类图 2、Leaflet的默认展示方式 三、SVG和Canvas实例及性能对比 1、SVG模式及性能对比 2、Canvas优化 总结 前言 众所周知&#xff0c;在Leaflet当中&#…

我独自升级下载 我独自升级崛起一键下载安装

近期&#xff0c;动画《我独自升级》凭借其高涨的人气&#xff0c;迅速席卷了各大平台&#xff0c;其热度非凡。乘着这股风潮&#xff0c;韩国知名厂商网石集团火速推出了同名游戏力作《我独自升级&#xff1a;ARISE》&#xff0c;让众多粉丝得以跨越次元壁垒&#xff0c;亲自投…

批量图片重命名及汇总

又一堆图片文件需要处理... 源文件分布&#xff1a; 有N个文件夹&#xff0c;每个文件夹下又有M个子文件夹&#xff0c;每个子文件夹下有X张图片。 例如文件夹A下有子文件夹A1,A2,A3&#xff0c;子文件夹A1下有图片a-1,a-2,a-3...... 处理目标&#xff1a; 1、将所有图片汇…

qt开发解压缩zip文件实现

作者开发环境&#xff1a;Qt5.8 &#xff0c;win10 总体思路&#xff1a;首先我们编译zip源码&#xff0c;生成zip的动态库&#xff1b;然后再编译quazip源码&#xff0c;得到quazip的动态库&#xff1b;最后在我们的程序中去调用。 详细步骤&#xff1a; 1、编译zlib zlib…

HackMyVM-Slowman

目录 信息收集 arp nmap whatweb WEB web信息收集 gobuster FTP匿名登录 hydra mysql爆破 mysql登录 fcrackzip爆破 hashcat爆破 ssh登录 提权 系统信息收集 python Capabilities提权 信息收集 arp ┌──(root㉿0x00)-[~/HackMyVM] └─# arp-scan -l Interf…

有哪些渠道找到海外代理IP服务?

在今天的全球化时代&#xff0c;许多企业和个人都需要跨越国界&#xff0c;与世界各地的资源、信息和市场进行连接。海外代理IP服务成跨境在线业务增效的重要的工具&#xff0c;可以帮助拓展业务宽度&#xff0c;以实现更多样化的业务需求。但是&#xff0c;如何找到合适、安全…

华为数据之道第四部分导读

目录 导读 第四部分 第10章 未来已来&#xff1a;数据成为企业核心竞争力 数据&#xff1a;新的生产要素 数据被列为生产要素&#xff1a;制度层面的肯定 数据将进入企业的资产负债表 数据资产的价值由市场决定 大规模数据交互的企业数据生态 数据生态离不开底层技术的…

STM32使用ADC单/多通道检测数据

文章目录 1. STM32单片机ADC功能详解 2. AD单通道 2.1 初始化 2.2 ADC.c 2.3 ADC.h 2.4 main.c 3. AD多通道 3.1 ADC.c 3.2 ADC.h 3.3 main.c 3.4 完整工程文件 1. STM32单片机ADC功能详解 STM32单片机ADC功能详解 2. AD单通道 这个代码实现通过ADC功能采集三脚电…