Linux的shell(极其粗糙版)

Shell脚本:

脚本主要是为了业务,辅助人工,实现自动化运维

Shell:介于用户和内核之间,充当翻译官的作用,当用户执行相关的命令,shell会把指令二进制传给内核,内核处理完毕以后通过shell把内核的执行结果,转换成人类能够识别的语言

Linux中的shell种类:

Sh:已淘汰

Bash:默认的shell,是sh的扩展

Csh:类C语言的shell

Tcsh:整合了csh的功能,也包括一部分shell的功能

在默认情况下,我们使用的shell都是bash解释器

Nologin:这也是一种shell,作用只有一个就是禁止用户登录主机

Shell语言又称脚本语言:动态语言,主要用来控制软件和应用程序,一般都是以文本的形式保存,运行时才会进行编译

Shell脚本的作用:

  1. 自动化运维
  2. 批量化重复操作
  3. 可以减轻管理人员的工作量
  4. 提供业务处理的速度
  5. 脚本写完之后,都是经过调试,没有问题才会上线部署,在配置的过程中减少了出错的概率

Shell脚本的构成:

三部分组成:

  1. 脚本申明(解释器)
  2. 注释信息,shell脚本已#为开头,表示注释信息不会被运行

注释:可以帮助工作人员更好的理解代码的架构

  1. 可执行语句

shell脚本当中:所有Linux的命令行可以执行命令,都可以做为脚本的可执行语句

Shell脚本的执行方式:

赋权执行:给脚本执行权限

Chmod 777 first.sh

./表示执行当前目录下的可执行文件,但是这个文件必须要有执行权限

./first.sh

/opt/first.sh

这两种不行要有执行权限不然不成功

直接执行:一般用于调试脚本的内容

Bash first.sh

Sh first.sh

Source:这是点命令,也就是符号,是bash的内部命令,重新执行刚修改完的初始化文件,可以让命令在配置文件中立刻生效,无须重启

Bash sh ./ 这三种都是运行,运行代码,反馈结果

Source:执行,执行脚本中的命令,脚本当中的代码会被真正的执行,展示真正的结果

都是有结果,一个没有过程,一个有过程

重定向:

交互式硬件设备的执行方式:

  1. 标准输入:设备是键盘,而且输入的结果符合编码规范
  2. 标准输出:设备是显示器,符合编码规范的命令,给予执行结果
  3. 标准错误输出:设备是显示器,不符合编码规范的结果,给予错误输出的执行结果

Echo 123 >123

这是重定向输出:> 把标准输入保存到指定的文件中,会覆盖原有内容

>> 把标准输入保存到指定文件的尾部,相当于行后追加,不覆盖原有内容

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

2>> 将错误信息保存到指定的文件的尾部,不会覆盖原有的内容

混合输出:&>既可以保存标准输出也可以保存标准错误输出到指定文件,会覆盖原有内容

&>>既可以保存标准输出也可以保存标准错误输出到指定文件的尾部,不会覆盖原有内容

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

Shell的变量:

面向对象:

变量:描述对象属性或者参数。Shell的变量是存放系统和用户需要使用的特点参数与值

变量的类型:int:整数 string:字符串 truefalse:布尔类型 浮点:1.23

变量名称:有固定名称的变量,一般是系统预设

自定义的变量名:不要使用系统命令作为变量名

不要使用中文

不能使用特殊符合开头 ,只有_可以做开头

不要使用数字开头

不需要声明变量类型,直接赋值就可以

变量赋值时,引号的用法:

强引用和弱引用:

打印变量时。加上双引号是弱引用

加上单引号是强引用,¥text,就会被认为是普通字符串。打印的结果也是字符串

赋值变量时,双引号和单引号没有任何区别

反撇号:`` 先执行反撇号当中的命令,然后再命令运行的结果赋值变量

自定义变量的类型:

一般自定义:

A=1

B=2

只读变量:他是不可以重新赋值的

Readonly 他只能重启或者bash才能删除

Read 通过命令获取内容,然后给变量赋值

Read -p “一定要加上提示字符” 变量名

变量的作用范围:

自定义变量只在当前的shell环境生效

全局变量(自定义的):1.系统预设的全局变量,对所有用户都能生效

  1. 自定义全局变量
  2. 临时声明全局,也是在当前shell生效

一般来说,我们自定义变量可能需要根据条件时常修改,以满足不同的条件,一旦作为全局变量,引用的值或者参数不需要变的

全局变量是所有人都可以引用,会导致程序状态的不确定性

环境变量:1.系统预设,用来设置用户的工作环境

  1. 自定义环境变量,主要是用于满足个人需求的工作环境,可以随时创建,随时修改,随时删除

系统可以识别到用户所需的操作指定,可以直接运行调用

位置变量:命令行参数

在脚本运行时,从脚本的外部通过位置变量给脚本内部的程序传参

¥n 这的n是数字1-9

10以上要用{10}

传参的顺序是从左向右

$0,特殊的位置变量,表示命令本身

/first.sh 10 20

$0  $1  $2

预定义变量:编程语言或者脚本解释器提供的,自动设置,自动更新,只能用不能修改

$*  $@  $#  $?

$*与$@:表示命令或者脚本需要处理的参数

$*:不加引号,会把参数一个一个处理,加上引号,会当成整体处理

$@:加不加引号,都会将参数一个一个处理

$*与$@,在不加引号的时候表现一致

$#:特殊的预定义变量,表示传递给脚本有几个参数,就是统计传递了多少个参数

$?:表示前一条命令的返回状态码,只有0表示执行成功或者执行正确,所有非0一律表示执行出现异常

Shell当中的变量的运算符:

运算符:+ - * / % 加 减 乘 除整 取余

整数运算:

I=$((12+5))

I=$(expr 12 \* 5)#这边乘是特殊方式其他都是这种I=$(expr 12 + 5)

I=$[12/5] #此方式已经弃用

Let i=12*5

I++:每次自增1,先赋值,再加1

  1. -:

++i:每次自增1,先再加1,在赋值

--I:

非整数运算:

Bc linux自带的计算器  例如:echo 2*2 | bc

Awk                例如:num=$(awk 'BEGIN{print (45+87)*2+3}')

脚本执行实验

配置文件vim first.sh

#!/bin/bash

#this is my first shell!

Cd  /boot

Echo “当前的目录位置:”

Pwd

Echo “其中以vml开头的文件包括:”

Ls -lh vml*

:wq!保存

输出实验

Echo 123 > index.html

Cat index.html

Echo 123 >> index.html

Echo 123 &> index.html

Echo 123 &>> index.html

重定向输入实验

Echo “1” > pass.txt

Cat pass.txt

Passwd --stdin lmn < pass.txt

自定义变量实验

A=1

Echo $a #这是打印变量值

A=test

Echo $a

A=1

B=1

Echo $a $b

Echo ${a} ${b}

引号实验:

Text=’123’

Echo $text

Echo “$text”

反撇号实验:

A=`ls -lh`

Echo $a

只读变量实验:

A=1

Readonly a=1

Nuset b#这是删除变量

Read -p实验:

配置文件vim first.sh

Read -p “输入一个变量名:” num1

Read -p “请再输入一个变量名:” num2

Sum=$(($num1+$num2))

Echo $sum

:wq!

Export a=4

Export b=8

Vim text.sh

C=$(($a+$b))

e

Bash text.h

Vim /etc/profile #全局配置文件,对所有用户生效

Export a=10

Export b=20

Source /etc/profile

Evn #查看环境变量

Echo $USER#这是用户名环境变量

Echo $HOME#查询当前用户的家目录

Echo $LANG#查询语言和字符集

Echo $PWD#查询当前所在的目录

Echo $PATH

环境变量类似于全局变量。和全局变量作用一致,环境变量系统识别直接调用,

PATH=”$PATH:/root”

Export PATH=”$PATH:root”

Cd ~

Ls

Touch 123.sh

Chmod 777 123.sh

Cd /opt/

Cd /etc/

Cd /etc/sysconfig/

  1. Sh

$*与$@实验:

Vim first.sh

Abc() {

For i in “$@”

Do

Echo $i

done

}

Abc “hello” “world” “!”

:wq!

Vim first.sh

Abc() {

For i in $@

Do

Echo $i

done

}

Abc “hello” “world” “!”

:wq!

Vim first.sh

Abc() {

For i in “$*”

Do

Echo $i

done

}

Abc “hello” “world” “!”

:wq!

Vim first.sh

Abc() {

For i in $*

Do

Echo $i

done

}

Abc “hello” “world” “!”

:wq!

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

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

相关文章

算法学习之 背包01问题 , 备战leecode

来看题目 我们分析一下题目&#xff0c;首先我们要排序&#xff0c;这有助于我们得到最大的值&#xff0c;我们要得到一个递推公式 代码如下: class Solution { public:int maxSatisfaction(vector<int>& satisfaction) {int n satisfaction.size();vector<v…

2023-10-19 node.js-将异步处理修改为同步-使用Promise和async-记录

摘要: 2023-10-19 node.js-将异步处理修改为同步-使用Promise和async-记录 使用promise和async将异步修改为同步: const fs require(fs);f1 function() {return new Promise(resolve > {fs.readFile(f1.txt, utf8, (err, data) > {if (err) reject(err);else resolve(…

flutter开发实战-安卓apk安装、卸载、启动实现

flutter开发实战-安卓apk安装、卸载、启动实现 在之前的文章中&#xff0c;实现了应用更新apk下载等操作&#xff0c;具体文档看下 这里记录一下使用shell来操作apk的安装、卸载、启动的操作。用到了库shell&#xff0c;Shell用于在Dart中或在代表其他用户执行系统管理任务的…

计算几何相关笔记

距离 欧拉距离 就是我们最熟悉的两点之间距离公式&#xff1a; d ( x 1 − x 2 ) 2 ( y 1 − y 2 ) 2 d\sqrt{(x_1-x_2)^2(y_1-y_2)^2} d(x1​−x2​)2(y1​−y2​)2 ​ 曼哈顿距离 相对于欧拉距离&#xff0c;曼哈顿距离的计算更加简单&#xff0c;并且没有开方过程&…

微软官方推出的四款工具,太实用了,值得收藏

目录 一、Officeplus——丰富的办公资源库 二、微软数学求解器 三、微软内置edge浏览器 四、Microsoft To-Do 办公待办神器 所以今天小编给大家分享4个微软官方推出的实用工具&#xff0c;每一个都非常好用&#xff0c;对于大家日常办公&#xff0c;非常有必要&#xff0c;感兴…

maven-plugin-shade 详解

一、介绍 [1] This plugin provides the capability to package the artifact in an uber-jar, including its dependencies and to shade - i.e. rename - the packages of some of the dependencies. maven-plugin-shade 插件提供了两个能力&#xff1a; 把整个项目&#xf…

C语言--冒泡排序和简答选择排序

冒泡排序 一种典型的交换排序 类似水冒泡&#xff0c;大元素经不断的交换由水底慢慢的浮出 从头到尾&#xff0c;循环比较两相邻的元素 大的元素移到后面&#xff0c;小的放前面-每次循环&#xff0c;大的元素会排到最后 代码如下&#xff1a; #include<stdio.h> …

js 删除树状图无用数据,如果子级没有数据则删除

有一个需求&#xff0c;当你从后端拿到一个树状图的时候&#xff0c;有些子级没数据&#xff0c;这时就需要我们处理一下数据&#xff0c;当然了&#xff0c;如果第一层底下的第二层没数据&#xff0c;第二层底下的所有都没数据&#xff0c;那这一层都不需要。 我的写法&#x…

常用消息中间件

RocketMQ 阿里开源&#xff0c;阿里参照kafka设计的&#xff0c;Java实现 能够保证严格的消息顺序 提供针对消息的过滤功能 提供丰富的消息拉取模式 高效的订阅者水平扩展能力 实时的消息订阅机制 亿级消息堆积能力 RabbitMQ Erlang实现&#xff0c;非常重量级&#xff0c;更适…

竞赛 深度学习交通车辆流量分析 - 目标检测与跟踪 - python opencv

文章目录 0 前言1 课题背景2 实现效果3 DeepSORT车辆跟踪3.1 Deep SORT多目标跟踪算法3.2 算法流程 4 YOLOV5算法4.1 网络架构图4.2 输入端4.3 基准网络4.4 Neck网络4.5 Head输出层 5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; *…

程序连接oracle查询数据的环境配置

连接oracle 数据库真麻烦&#xff0c;还是MySQL方便 Oracle Instant Client 这个东西的版本跟oracle的版本是有讲究的&#xff0c;引用文档的说明 Oracle 标准的客户端-服务器网络互操作性允许不同版本的 Oracle 客户端和 Oracle 数据库之间的连接。有关经过认证的配置&#…

R语言的计量经济学技术

量经济学通常使用较小样本&#xff0c;但这种区别日渐模糊&#xff0c;机器学习在经济学领域、特别是经济学与其它学科的交叉领域表现日益突出&#xff0c;R语言是用于统计建模的主流计算机语言&#xff0c;在本次培训中&#xff0c;我们将从实际应用出发&#xff0c;重点从数据…

ArmSoM-RK3588编解码之mpp解码demo解析:mpi_dec_test

1. 简介 [RK3588从入门到精通] 专栏总目录 mpi_dec_test 是rockchip官方解码 demo 本篇文章进行mpi_dec_test 的代码解析&#xff0c;解码流程解析 2. 环境介绍 硬件环境&#xff1a; ArmSoM-W3 RK3588开发板 软件版本&#xff1a; OS&#xff1a;ArmSoM-W3 Debian11 3.…

失配树学习笔记

失配树&#xff0c;是一种奇妙的数据结构&#xff0c;它利用 KMP、LCA 解决求两前缀的最长公共 Border 的问题。 首先介绍一下什么是 Border&#xff0c;我们知道 nxt 数组是前后缀相同的最大长度&#xff0c;Border 相当于是 nxt 数组的弱化版&#xff0c;只是去掉了“最大”…

[TCP1P 2023] 部分crypto,pwn,reverse

Crypto Final Consensus 这是个AES爆破密钥的题&#xff0c;加密方法是先后用两个密钥加密。远程先给出加密后的flag&#xff0c;然后允许输入值并进行加密。 from Crypto.Cipher import AES import random from Crypto.Util.Padding import pada b"" b b"&…

SystemVerilog Assertions应用指南 Chapter1.29“ disable iff构造

在某些设计情况中,如果一些条件为真,则我们不想执行检验。换句话说,这就像是一个异步的复位,使得检验在当前时刻不工作。SVA提供了关键词“ disable iff来实现这种检验器的异步复位。“ disable iff”的基本语法如下。 disable iff (expression) <property definition> …

Modelsim无法生成LICENSE的问题

按照网上的破解教程&#xff0c;将mgls.dll和mgls64.dll属性都是去掉只读后&#xff0c;点击patch64_dll.bat文件生成LICENSE&#xff0c;发现在弹出的对话框中一直提示找不到其文件&#xff0c;无法正常生成LICENSE。 解决方法&#xff1a; 1.按winR键或者在电脑搜索界面中输…

面试算法34:外星语言是否排序

题目 有一门外星语言&#xff0c;它的字母表刚好包含所有的英文小写字母&#xff0c;只是字母表的顺序不同。给定一组单词和字母表顺序&#xff0c;请判断这些单词是否按照字母表的顺序排序。例如&#xff0c;输入一组单词[“offer”&#xff0c;“is”&#xff0c;“coming”…

Qwik开发使用入门

前言 前面我们介绍了一下 Qwik 这个新的框架&#xff0c;如果没有看过的童鞋可以移步这里&#xff08;追求极致性能&#xff01;Qwik 1.0版本发布&#xff09;。 本文结合官方的教学文档&#xff0c;翻译整理&#xff0c;原文链接在文末。 安装Qwik的前提条件 本地安装 Nod…

【论文解读】The Power of Scale for Parameter-Efficient Prompt Tuning

一.介绍 1.1 promote tuning 和 prefix tuning 的关系 “前缀调优”的简化版 1.2 大致实现 冻结了整个预训练模型&#xff0c;并且只允许每个下游任务附加k个可调令牌到输入文本。这种“软提示”是端到端训练的&#xff0c;可以压缩来自完整标记数据集的信号&#xff0c;使…