ubuntu(20.04)-shell脚本(2)echo-date-awk-sed-iptables-shell变量数组

news2024/11/24 13:54:13

1.echo

语法:echo [-ne][字符串]

补充说明:
1、echo会将输入的字符串送往标准输出。
2、输出的字符串间以空白字符隔开,并在最后加上换行号。

OPTIONS:
-n	不要在最后自动换行
-e	若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:

转义字符
\a	发出警告声;
\b	删除前一个字符;
\t	插入tab;
\n	换行且光标移至行首;

\c	最后不加上换行符号;
\f	换行但光标仍旧停留在原来的位置;
\r	光标移至行首,但不换行;
\v	与\f相同;
\		插入\字符;
\0nnn	打印nnn(八进制)所代表的ASCII字符;  备注:数字0  不要理解成字母o
\xNN  打印NN(十六进制)所代表的ASCII字符;

-–help	显示帮助
-–version显示版本信息


2.shell 定义变量+使用变量
 

#1.定义变量
myname="tang"
var=123

#2.使用变量 前+$ 后面加不加{} 都可以
echo $myname
echo ${var}

#3.删除变量
unset myname


#4.变量类型 局部+环境+shell


#5.拼接字符 单引号+双引号
myname="tang"
greeting_1="start,"$nyname",end!"
greeting_2="start,$myname,end!"

greeting_3='start,'$nyname',end!'
greeting_4='start,$myname,end!'

echo greeting_1 greeting_2 greeting_3 greeting_4



#6.获取字符长度
string="abcd"
echo ${#string}  ${#string[0]}


#7.提取子字符串

string=“abcded”
echo ${string:1:4}


#8.查找子字符串  c  反引号
string="abcded"
echo `expr index "$string" ic`




3.date

#date [参数] [+格式] 

1.命令参数:
必要参数:
%H 小时(以00-23来表示)。
%I 小时(以00-12来表示)。
%K 小时(以0-23来表示)。
%l 小时(以0-12来表示)。
%M 分钟(以00-59来表示)。
%P am或pm。
%s 总秒数(起算时间为1970-01-01 00:00:00 UTC)。UTC(coordinated Universal Time协调时间,又称世界统一时间)
%S 秒(以本地惯用法来表示)
%T 时间(含时分秒,小时以24小时制来表示)。
%X 时间(以本地的惯用法来表示)
%Z 市区(CST China Standard Time,中国标准时间)
%a 星期英文名的缩写。
%A 星期英文名的完整名称。
%b 月份英文名的缩写。
%B 月份英文名的完整名称。
%c 日期与时间。只输入date指令也会显示同样的结果。
%r 时间(含时分秒,小时以12小时AM/PM来表示)。
%d 日期(以0-31来表示)。
%D 日期(含年月日)。
%x 日期(以本地的惯用法来表示)
%j 该年中的第几天。
%m 月份(以0-12来表示)。
%U 该年中的周数。
%w 该周的天数,0代表周日,1代表周一,依次类推。
%y 年份(以00-99来表示)。
%Y 年份(以四位数来表示)。
%n 在显示时,插入新的一行。
%t 在显示时,插入tab。
MM 月份(必要)
DD 日期(必要)
hh 小时(必要)
mm 分钟(必要)
ss 秒(选择性)

2.选择参数:
   -d<字符串> 显示字符串所指的日期与时间。字符串前后必须加上双引号。
   -s<字符串> 根据字符串来设置日期与时间。字符串前后必须加上双引号。
   -u 显示GMT(Greenwich Mean Time,格林威治时间)。
   –help 在线帮助。
   –version 显示版本信息。

3.设定
    date -s                //设置当前时间,只有root权限才能设置,其他只能查看。
    date -s 20111213       //设置成20111213,这样会把具体时间设置成空00:00:00。
    date -s 01:01:01     //设置具体时间,不会对日期做更改。
    date -s “01:01:01 2011-12-13” //这样可以设置全部时间。
    date -s “2011-12-13 01:01:01” //这样可以设置全部时间。
    date -s “20111213 01:01:01” //这样可以设置全部时间
    date -s “01:01:01 20111213” //这样可以设置全部时间


4.加减

   date +%Y%m%d                       //显示前天年月日
   date +%Y%m%d --date="-1 day"      //显示前一天的日期
   date +%Y%m%d --date="+1 day"      //显示后一天的日期
   date +%Y%m%d --date="+/-1 month"  //显示下/上一个月的日期
   date +%Y%m%d --date="+/-1 year"   //显示下/上一年的日期


 



#1.打印 今天日期
    
    [keysystem@localhost ~]$ date -d 'now'     #输出:Fri Feb  2 09:29:28 CST 2018
    [keysystem@localhost ~]$ date +%Y%m%d      #输出: 20180202
    [keysystem@localhost ~]$ date +%Y%m%d%H%M%S#输出:20180202101334
    [keysystem@localhost ~]$ ORIGINAL="Jul 1 21:29 "
    [keysystem@localhost ~]$ date -d "$ORIGINAL"  "+%G-%m-%d %H:%M:%S" 
    #2020-07-01 21:29:00
    [keysystem@localhost ~]$ date +%b/%d/%G -d "2020-01-01"
    Jan/01/2020

#2. 获取年月日变量
    date -d today    +%Y%m%d%H%M   # 获取今天的年月日时分   
    date -d next-day +%Y%m%d       # 获取明天的日期
    date -d last-day +%Y%m%d       # 获取昨天的日期
    date -d last-month +%Y%m       # 获取上个月的年和月
    date -d next-month +%Y%m       # 获取下个月的年和月
    date -d next-year  +%Y         # 获取明年的年份
    date +%F                     # “2006-03-08” 
    date +%T                     # “10:06:16”
    date +%Y                     # 得到年 2006

#3. 获取时间戳



#4. 算间隔天数

#4.1 两日期相减
    expr '(' $(date  -d "2020-01-31" +%s) - $(date  -d "2020-01-01" +%s ) ')' / 86400 #
    30
#4.2 增加36小时
    a=`date +%Y-%m-%d`
    b=`date +%Y-%m-%d -d "$a +36 hours"`
    echo $a
    #2020-10-23
    echo $b
    #2020-10-24




#5.获取间隔天数后的值
    [keysystem@localhost ~]$ date -d 'now'    #显示当前时间
    Fri Feb  2 09:29:28 CST 2018
    [keysystem@localhost ~]$ 
    [keysystem@localhost ~]$ date -d '2 days ago'    #显示2天前的时间
    Wed Jan 31 09:29:40 CST 2018
    [keysystem@localhost ~]$ date -d '3 month 1 day'    #显示3月零1天以后的时间 
    Thu May  3 09:30:16 CST 2018
    [keysystem@localhost ~]$ date -d '25 Dec' +%j    #显示12月25日在当年的哪一天
    359
    [keysystem@localhost ~]$ date -d '30 second ago'    #显示30秒前的时间
    Fri Feb  2 09:41:03 CST 2018
    [keysystem@localhost ~]$ date -d "+3 day"
    Mon Feb  5 09:45:52 CST 2018
    [keysystem@localhost ~]$ date -d "-3 day" 
    Tue Jan 30 09:46:04 CST 2018
    [keysystem@localhost ~]$ date -d "-3 month"
    Thu Nov  2 09:46:16 CST 2017
    [keysystem@localhost ~]$ date -d "+3 month" 
    Wed May  2 09:46:24 CST 2018
    [keysystem@localhost ~]$ date -d "+3 year" 
    Tue Feb  2 09:46:35 CST 2021
    [keysystem@localhost ~]$ date -d "-3 year" 
    Mon Feb  2 09:46:40 CST 2015
    [keysystem@localhost ~]$ date -d "-3 hour" 
    Fri Feb  2 06:46:59 CST 2018
    [keysystem@localhost ~]$ date -d "+3 hour" 
    Fri Feb  2 12:47:02 CST 2018
    [keysystem@localhost ~]$ date -d "+3 minute"
    Fri Feb  2 09:50:09 CST 2018
    [keysystem@localhost ~]$ date -d "-3 minute" 
    Fri Feb  2 09:44:12 CST 2018
    [keysystem@localhost ~]$ date -d "-3 second"
    Fri Feb  2 09:47:21 CST 2018
    [keysystem@localhost ~]$ date -d "+3 second" 
    Fri Feb  2 09:47:31 CST 2018


#6.
    #显示本月的第一天
    [keysystem@localhost ~]$ date -d `date +%y%m01`
    Thu Feb  1 00:00:00 CST 2018
    [keysystem@localhost ~]$ date +%y%m01
    180201
    [keysystem@localhost ~]$ date +%Y%m01
    20180201
    #上个月最后一天
    [keysystem@localhost ~]$ date -d `date +%y%m01`"-1 day"
    Wed Jan 31 00:00:00 CST 2018
    #4个月前的最后一天
    [keysystem@localhost ~]$ date -d `date -d "-3 month" +%y%m01`"-1 day"
    Tue Oct 31 00:00:00 CST 2017
    #11个月后的第一天
    [keysystem@localhost ~]$ date -d `date -d "+12 month" +%y%m01`"-1 day"
    Thu Jan 31 00:00:00 CST 2019
    #11个月后的最后一天
    [keysystem@localhost ~]$ date -d `date -d "+12 month" +%y%m01`"-1 day" +%Y%m%d
    20190131



4.awk

awk 比较倾向于将一行分成多个字段然后再进行处理。
   

4.1 语法

awk '条件1 {动作 1} 条件 2 {动作 2} …' 文件名

# awk 检测到完整的''才结束
#1.输出第2列和第6列的内容
   awk '{printf $2 "\t" $6 "\n"}' student.txt

#2.begin
#这里定义了两个动作
#第一个动作使用BEGIN条件,所以会在读入文件数据前打印"这是一张成绩单"(只会执行一次)
#第二个动作会打印文件的第二个字段和第六个字段
   awk 'BEGIN{printf "This is a transcript\n"}
             {printf $2 "\t" $6 "\n"}' student.txt

#3.end
#END 后的动作只在程序结束时执行一次
awk 'END{printf "The End \n"}
     {printf $2 "\t" $6 "\n"}' student.txt

#4.关系运算
   #使用cat输出文件内容,用grep取反包含"Name"的行
   #判断第6个字段(平均成绩)大于等于87分的行,如果判断式成立,则打印第2列(学员名)
cat student.txt | grep -v Name |awk'$6 >= 87 {printf $2'\n"}'
   

4.2 awk 的分隔符

awk的默认分隔符是空格和制表符,上面的例子中,若希望把逗号去掉,则可以使用 -F 参数来指定分隔符,命令如下:

awk -F ':|,' '{print $2, $4, $6}' log

这里指定冒号(:)和逗号(,)同时作为分隔符。


6.iptables
   

     6.1防火墙

          位于Linux内核中的包括过滤功能体系。
          主要是网络层,针对IP数据包,体现在对包内的IP地址、端口等信息的处理上。
          

默认包括4个规则表

  • raw表:确定是否对该数据包进行状态跟踪
  • mangle表:为数据包设置标记
  • nat表:修改数据包中的源、目标lP地址或端口
  • filter表:确定是否放行该数据包(过滤)

规则链
规则的作用:对数据包进行过滤或处理
链的作用:容纳各种防火墙规则
链的分类依据:处理数据包的不同时机
默认包括5种规则链

  • INPUT:处理入站数据包
  • OUTPUT:处理出站数据包
  • FORWARD:处理转发数据包
  • POSTROUTING链:在进行路由选择后处理数据包
  • PREROUTING链:在进行路由选择前处理数据包

         

规则表之间的顺序
raw→mangle→nat→filter

规则链之间的顺序
入站:PREROUTING→INPUT
出站:OUTPUT→POSTROUTING
转发:PREROUTING→FORWARD→POSTROUTING

规则链内的匹配顺序
按顺序依次检查,匹配即停止(LOG策略例外)
若找不到相匹配的规则,则按该链的默认策略处理

     6.2编写防火墙规则
 

6.2.1 安装

CentOS7默认使用firewalld防火墙,若想使用iptables防火墙,必须先关闭firewalld防火墙
关闭firewalld防火墙

1
2

[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# systemctl disable firewalld.service

安装iptables防火墙

1

[root@localhost ~]# yum -y install iptables iptables-services   #安装工具 安装服务

设置iptables开机启动

1
2

[root@localhost ~]# systemctl start iptables.service
[root@localhost ~]# systemctl enable iptables.service


   6.2.2基本语法
     

语法构成

iptables [ -t 表名 ] 选项 [ 链名 ] [ 条件 ] [ -j 控制类型 ]

:设置其他主机无法ping通本机,阻止ping测试
iptables -t filter -I INPUT -p icmp -j REJECT

选项
-A:在指定链的末尾添加(–append)一条新的规则。
-D:删除(–delete)指定链中的某一条规则,可指定规则序号或具体内容。
-l :在指定链中插入(–insert)一条新的规则,未指定序号时默认作为第一条规则。
-R:修改、替换(–replace)指定链中的某一条规则,可指定规则序号或具体内容。
-L:列出(–list)指定链中所有的规则,若未指定链名,则列出表中的所有链.
-F:清空(–flush)指定链中的所有规则,若未指定链名,则清空表中的所有链。
-P:设置指定链的默认策略(–policy) .
-n:使用数字形式(–numeric)显示输出结果,如显示IP地址而不是主机名。
-v:查看规则列表时显示详细(–verbose)的信息。
-h:查看命令帮助信息(–help) .
–line-numbers:查看规则列表时,同时显示规则在链中的顺序号。

数据包的常见控制类型

ACCEPT:允许通过
DROP:直接丢弃,不给出任何回应
REJECT:拒绝通过,必要时会给出提示
LOG:记录日志信息,然后传给下一条规则继续匹配

添加、替换、查看、删除规则,设置默认策略

1、添加新的规则
-A:在链的末尾追加一条规则
-I:在链的开头(或指定序号)插入一条规则

1
2
3
4
5
6
7

[root@localhost ~]# iptables -t filter -A INPUT -j REJECT      #在默认表插入拒绝通过规则,Xshell断开
[root@localhost ~]# iptables -t filter -L   #查看所有规则
[root@localhost ~]# iptables -t filter -I INPUT -p tcp -- dport 22 -j ACCEPT   #插入默认第一条规则,端口22允许通过
[root@localhost ~]# iptables -t filter -L   #查看所有规则
#Xshell可连接
[root@localhost ~]# iptables -I INPUT -p udp j ACCEPT
[root@localhost ~]# iptables -I INPUT 2 -p icmp j ACCEPT   #-p用来指定协议

2、替换规则
-R:修改、替换(–replace)指定链中的某一条规则,可指定规则序号或具体内容。

1
2
3

[root@localhost ~]# iptables --line-numbers -L INPUT  #查看默认表以数字序列号显示所有规则
[root@localhost ~]# iptables -t filter -R INPUT 2 -p icmp -j ACCEPT   #更换第二行为允许通行
[root@localhost ~]# iptables --line-numbers -L INPUT  #查看默认表以数字序列号显示所有规则

3、查看规则列表
-L :列出所有的规则条目
-n:以数字形式显示地址、端口等信息
-v:以更详细的方式显示规则信息
–line-number:查看规则时,显示规则的序号


 

4、删除、清空规则
-D:删除链内指定序号(或内容)的一条规则
-F:清空所有的规则


 

5、设置默认策略
-P:为指定的链设置默认规则

规则的匹配条件

1.常见的通用匹配条件

协议匹配:-p 协议名
地址匹配:-s源地址、-d目的地址
接口匹配:-i入站匹配、-o出站网卡


 

2.常见的隐含匹配条件

端口匹配
–sport源端口、–dport目的端口
连续的端口号用":“分隔
不连续的端口用”:"分隔
-m multiport --sports 源端口列表 # “,” 分隔开
-m multiport --dports 目的端口列表

1
2
3
4
5

[root@localhost ~]# iptables -A FORWARD -s 192.168.4.0/24 -p udp --dport 53 -j ACCEPT   #接收数据
[root@localhost ~]# iptables -A FORWARD -d 192.168.4.0/24 -p udp --sport 53 -j ACCEPT   #返回结果
[root@localhost ~]# iptables -A INPUT -p tcp --dport 20:21  -j  ACCEPT
[root@localhost ~]# iptables -A INPUT -p tcp --dport 24500:24600  -j  ACCEPT
[root@localhost ~]#iptables -A INPUT -p tcp -m multiport --dport 25,80,110,143 -j ACCEPT



 
ICMP类型匹配:–icmp-type ICMP类型
ICMP类型的代码表示:echo-request 代码为8;echo-reply 代码为0;destination-unreacha 代码为3

1
2
3
4

[root@localhost ~]# iptables -A INPUT -p icmp --icmp-type 8 -j DROP
[root@localhost ~]# iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p icmp -j DROP

3.常用的显示匹配条件

IP范围匹配
编写规则时使用 -m iprange --src-range IP范围 #源地址
        -m iprange --dst-range IP范围 #目标地址
的形式,用来检查数据包的源地址,目标地址。
IP地址范围的表示方式:起始地址-结束地址
示例:

1

[root@localhost ~#iptables -A  FORWARD  -p  tcp -m  iprange  --src-range 192.168.4.100-192.168.4.2200 -j ACCEPT

MAC地址匹配
编写规则时使用 -m mac --mac-source MAC地址的形式。用来检查数据包的MAC地址
示例:

1

[root@localhost ~]# iptables -A INPUT -m mac --mac-source 00:0c:29:c0:55:3f -j DROP

状态匹配
编写规则时使用 -m state --state 连接状态的形式,基于Iptables的状态跟踪机制来检查数据包的连接状态。
常见连接状态:NEW 与任何连接无关的
       ESTABLISHED 响应请求或者已建立连接的
       RELATED 与已有连接有相关性的,如FTP数据连接
示例:

1

[root@localhost ~]# iptables -A FORWARD -m state --state NEW -p tcp ! --syn -j DROP

7.shell 数组的定义和使用
   

   7.1定义
    

#1.方法1
array_name=(值1 值2 值3 ... 值n)

#2.
array_name[0]=值1
array_name[1]=值2
array_name[2]=值3
...
array_name[n-1]=值n


   7.2 读取
 

#指定
${array_name[index]}
#所有
${array_name[*]}
${array_name[@]}


   7.3 长度
   

${#array_name[*]}
${#array_name[@]}
#!/bin/bash

# 定义数组
array_test=(A "B" C)

# 输出数组的所有元素
echo "【方式1】数组的元素为:${array_test[*]}"
echo "【方式2】数组的元素为:${array_test[@]}"

echo -e "【方式3】输出数组的所有元素:\n元素1:${array_test[0]}, 元素2:${array_test[1]}, 元素3:${array_test[2]}"

echo "【方式4】列出数组的所有元素:"
# 循环输出数组所有元素
for((i=0;i<=${#array_test[*]-1};i=i+1))
    do
        echo "${array_test[i]}"
    done



 









 

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

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

相关文章

【学习时序论文】

目录【2021 NeurIPS】Autoformer: Decomposition Transformers with Auto-Correlation for Long-Term Series Forecasting【2022 ICML】FEDformer: Frequency Enhanced Decomposed Transformer for Long-term Series Forecasting【2023 ICLR】TIMESNET: TEMPORAL 2D-VARIATION …

deque,stack,quque容器

一、deque 1.基本概念 功能: 双端数组&#xff0c;可以对头端进行插入删除操作 deque与vector区别: vector对于头部的插入删除效率低&#xff0c;数据量越大&#xff0c;效率越低. deque相对而言&#xff0c;对头部的插入删除速度会比vector快 vector访问元素时的速度会比de…

NDK编译脚本

一、如何通过NDK进行编译。 1、新建jni文件夹&#xff0c;并将Android.mk、Applicatio n.mk、源文件都放入其中。 2、编写Android.mk文件。 LOCAL_PATH : $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE: test LOCAL_C_ALL_FILES : test.c LOCAL_SRC_FILES : $(LOCAL_C_…

centos7虚拟机在集群zookeeper上面配置hbase的具体操作步骤

系列文章目录 centos7配置静态网络常见问题归纳_centos7网络问题 centos7克隆虚拟机完成后的的一些配置介绍 虚拟机centos7配置Hadoop单节点伪分布配置教程 卸载centos7自带的jdk的操作步骤 centos7配置zookeeper本地模式与集群模式的详细教程 centos7虚拟机配置集群时间…

HTML引入Typescript编译JS文件 :Uncaught ReferenceError: exports is not defined

初学TypeScript&#xff0c;尝试在html引入ts编译出来的js文件: 报错&#xff1a;Uncaught ReferenceError: exports is not defined 以下是代码&#xff1a; 创建了TS:加入export {}形成独立的作用域&#xff0c;其他ts文件重复声明相同名称的变量。 export {} let str &…

Python和Java二选一该学啥?

首先我们需要了解Python和 Java分别是什么 根据IEEE Spectrum 2022年编程语言排名前十的分别是&#xff1a;Python&#xff0c;C&#xff0c;C&#xff0c;C#&#xff0c;Java&#xff0c;SQL&#xff0c;JavaScript&#xff0c;R&#xff0c;HTML&#xff0c;TypeScript。从该…

专访丨AWS量子网络中心科学家Antía Lamas谈量子计算

​ Anta Lamas Linares&#xff08;图片来源&#xff1a;网络&#xff09; 47岁的Anta Lamas Linares出生于西班牙西北部的圣地亚哥德孔波斯特拉。她在当地学习物理学&#xff0c;然后在牛津大学和加利福尼亚继续深造。后来&#xff0c;她在新加坡领导了亚马逊网络服务&#xf…

Java中线程的常用操作-后台线程、自定义线程工厂ThreadFactpry、join加入一个线程、线程异常捕获

场景 Java中Thread类的常用API以及使用示例&#xff1a; Java中Thread类的常用API以及使用示例_霸道流氓气质的博客-CSDN博客 上面讲了Thread的常用API&#xff0c;下面记录下线程的一些常用操作。 注&#xff1a; 博客&#xff1a;霸道流氓气质的博客_CSDN博客-C#,架构之…

Doris(4):建表

可以通过在mysql-client中执行以下 help 命令获得更多帮助&#xff1a; help create table 1 基本概念 在 Doris 中&#xff0c;数据都以表&#xff08;Table&#xff09;的形式进行逻辑上的描述。 1.1 Row & Column 一张表包括行&#xff08;Row&#xff09;和列&#…

从零开始:如何集成美颜SDK到你的应用中

现在&#xff0c;随着人们对于美的追求不断提升&#xff0c;美颜应用已经成为了人们生活中不可或缺的一部分。在应用中&#xff0c;美颜功能的实现离不开美颜SDK的支持。那么&#xff0c;如何集成美颜SDK到你的应用中呢&#xff1f;下面&#xff0c;我们就来一步步了解。 第一…

Linux复习 / 线程相关----线程互斥 QA梳理

文章目录前言线程互斥Q&#xff1a;什么是临界资源&#xff1f;临界区呢&#xff1f;Q&#xff1a;什么是互斥&#xff1f;Q&#xff1a;数据不一致的本质是什么&#xff1f;Q&#xff1a;用锁对共享资源进行保护的前提是&#xff1a;锁也要作为共享资源被其他线程使用。那么用…

独家 | 招商银行:玩转校园招聘新方式 挖掘金融科技新人才

数字经济时代&#xff0c;金融科技人才队伍的引进与培养是招商银行人才体系建设的关键任务。 01.金融科技校招2大核心课题 招商银行数字化转型过程中&#xff0c;线上化、生态化、平台化、智能化、数据化全面加速发展&#xff0c;对人才队伍能力提出新要求。 2大核心课题&am…

Git的一些使用

虽然说这也不是啥重要的内容&#xff0c;但是作为计算机人也得学学&#xff0c;了解了解。 一些预备内容 首先得下载git&#xff0c;这个就不多说了。 安装完了之后&#xff0c;首先要做的就是设置用户名称和邮箱地址&#xff0c;因为每次Git提交都会使用该信息&#xff0c;…

I.MX6ULL_Linux_驱动篇(33) pinctrl与gpio子系统

上一章我们编写了基于设备树的 LED 驱动&#xff0c;但是驱动的本质还是没变&#xff0c;都是配置 LED 灯所使用的 GPIO 寄存器&#xff0c;驱动开发方式和裸机基本没啥区别。 Linux 是一个庞大而完善的系统&#xff0c;尤其是驱动框架&#xff0c;像 GPIO 这种最基本的驱动不可…

Linux实战学习

文章目录一、Linux权限信息权限控制信息chmodifconfigpingnmap netstatps killzip unzip常用快捷键二、搭建Java环境yumJDKTomcatMysql三、部署Web项目到服务器一、Linux权限信息 Linux中&#xff0c;拥有最大权限的账户为: root(超级管理员)&#xff0c;而普通用户在很多地方…

UWB成为智慧工厂时代的代表技术

UWB成为智慧工厂时代的代表技术 随着智慧工厂的到来&#xff0c;在人员安全问题较为重要的行业中&#xff0c;为了避免人员安全事故的出现&#xff0c;各家企业都逐步装备了UWB定位系统。UWB信号的辐射非常低&#xff0c;通常只有手机辐射的千分之一&#xff0c;因此在工业上应…

【 Spring MVC 核心功能(二) - 获取参数(上)】

文章目录一、获取单个参数二、获取多个参数三、获取对象四、后端参数重命名4.1 使用 RequestParam 重命名参数4.2 RequestParam 中参数必传4.3 设置非必传参数五、使用 PathVariable 获取URL中参数一、获取单个参数 在 Spring MVC 中可以直接⽤⽅法中的参数来实现传单个参&…

uni-app:登录与支付-- 三秒后自动跳转

三秒后自动跳转 三秒后自动跳转到登录页面 需求描述&#xff1a;在购物车页面&#xff0c;当用户点击 “结算” 按钮时&#xff0c;如果用户没有登录&#xff0c;则 3 秒后自动跳转到登录页面 在 my-settle 组件的 methods 节点中&#xff0c;声明一个叫做 showTips 的方法&am…

Vue:生命周期

1、定义 生命周期函数&#xff08;俗称&#xff1a;钩子函数&#xff09; 根据vue整个渲染机制&#xff0c;在渲染的每个关键点上&#xff0c;提供对应的函数&#xff0c;进行一些相关的业务操作。 2、四个阶段 初始阶段&#xff1a;beforeCreate()&#xff1a;可以加loadi…

vue-qr 生成二维码-使用

1、vue-qr官网说明 vue-qr - npm 2、使用 2.1 安装 vue-qr npm install vue-qr --save 2.2 代码 import vueQr from vue-qr; <el-dialog title"摘要" :visible.sync"openSummary" width"700px" append-to-body> <el-row> <el…