shell教程

2023-05-16

shell

简介

Shell是一种脚本语言,通常用于在Unix和类Unix操作系统上进行命令行交互。它是用户与操作系统内核之间的接口,允许用户通过命令行或脚本文件来控制计算机上的操作。Shell程序通常用于执行复杂的任务,例如文件操作、网络通信、进程控制等。
Shell语言具有很高的灵活性,可以根据需要编写自定义脚本来自动化任务。Shell脚本通常包含一系列命令和流程控制语句,可以执行文件操作、程序运行、环境变量设置等任务。在Unix和类Unix操作系统中,常见的Shell包括Bash、Csh、Ksh等,它们都具有各自的特点和用法。Linux中默认使用bash。

运行

  • 文件开头需写#! /bin/bash,指明默认的脚本解释器。
  • 运行方式:
    1. 用解释器执行(可以没有权限):
      bash test.sh,test.sh是Shell脚本文件的名称。
    2. 作为可执行文件执行(必须要有权限):
      chmod +x test.sh,使脚本具有可执行权限。然后./test.sh直接运行。
    3. 在终端中执行Shell命令,并执行脚本:
      echo "echo Hello, World!" | sh
      其中第一种方法较常用。

语法

注释

  1. 单行注释(# 注释)
    在Shell脚本中,一行代码以 # 开头时,该行代码就被认为是注释,Shell 解释器会将这一行代码忽略。例如:

    #! /bin/bash
    
    # This is a comment
    echo "Hello World!"
    
  2. 多行注释
    在Shell脚本中,我们也可以使用一对 : << EOFEOF 来实现多行注释,其中一对EOF可以换成其他字符串,如: << qingqiu qingqiu

    #! /bin/bash
    
    : << suibian
    第一行注释
    第二行注释
    第三行注释
    suibian
    
    echo "Hello, World!"
    

变量

变量的命名规则

在Shell中,变量名遵循以下命名规则:

  • 变量名必须以字母或下划线开头。
  • 变量名中只能包含字母、数字和下划线。
  • 变量名不能以数字开头。
  • 变量名区分大小写。
  • 变量名和变量值之间不能有空格。
  • 如果变量值包含空格,需要使用引号将变量值括起来,例如name="qing qiu"

处理变量

在Shell中,变量可以用来存储字符串或数字等信息。可以通过定义变量、给变量赋值、使用变量等操作来进行变量处理。

  1. 定义变量
    定义变量有三种方法

    • name=qingqiu
    • name=“qingqiu”
    • name=‘qingqiu’

    其中不加引号和加双引号效果相同,支持变量替换和转义字符的解析,例如:

    name="qingqiu"
    echo "My name is $name"  # 输出:My name is qingqiu
    

    而单引号不支持变量替换和转义字符的解析,在单引号中,所有的字符都会被当作普通字符处理,例如:

    name="qingqiu"
    echo 'My name is $name'  # 输出:My name is $name
    
  2. 给变量赋值

    可以使用=号来给变量赋值,等号两边不能有空格,否则会报错。

  3. 使用变量
    使用变量时需要在变量名前加上$,或者${}{}用于识别变量边界。例如:

    name=qingqiu
    echo $name  # 输出qingqiu
    echo ${name}  # 输出qingqiu
    echo $nameye  # 输出nameye
    echo ${name}ye  # 输出qingqiuye
    
  4. 只读变量
    readonly或者declare可以将变量变为只读,修改只读变量时会报错。

    name=qingqiu
    readonly name
    declare -r name  # 两种写法都可以
    name=a  # 会报错,因为此时name只读
    

    取消只读属性:

    unset -v name
    
  5. 删除变量

    unset可以删除变量。

    name=qingqiu
    unset name
    echo $name  # 输出空行
    

    要想删除只读变量,需要先取消只读属性,再用unset删除。

变量类型

局部变量与全局变量
  • 自定义变量(局部变量)
    子进程不能访问的变量。
  • 环境变量(全局变量)
    子进程可以访问的变量。

自定义变量与环境变量可以互相转换:
自定义变量→环境变量

name=qingqiu
export name  # 方法一
declare -x name  # 方法二

环境变量→自定义变量

export name=qingqiu  # 定义环境变量,只在当前bash有效
declare +x name  # 改为自定义变量
字符串

在shell中,字符串可以用单引号、双引号或不用引号来表示。单引号与双引号有区别,参考上述定义变量处。
字符串的操作

  • 获取字符串长度

    name="qingqiu"
    echo ${#name}  # 输出7
    
  • 提取子串

    name="qingqiu"
    echo ${name:0:4}  # 提取从0开始的4个字符,输出qing
    
数字

数字变量用来存储数字类型的数据。在shell中,数字变量可以是整数或浮点数。

数组

数组中可以存放多个不同类型的值,下标从0开始,初始化时不需要指明数组大小。

  1. 定义
  • 使用圆括号括起数组元素,并用空格隔开。例如:

    array=(666 qing "qiu" haha)
    
  • 使用花括号括起数组元素,并用逗号隔开。例如

    array={666, qing, "qiu", haha}
    
  • 直接定义数组中的某个元素的值:

    array[0]=666
    array[1]=qing
    array[2]="qiu"  # 只输出引号内字符串,但建议使用"",以避免字符串含空格时出错
    array[3]=haha
    

直接定义某个元素的值时,下标可以不连续。例如:

array[0]=666
array[6]=qing
array[9]=“qiu”
array[999]=haha

echo ${#array[@]}  # 输出4
  1. 读取某个元素的值

    ${array[index]}  # 格式
    
    echo ${array[0]}  # 输出666
    echo ${array[1]}  # 输出qing
    echo ${array[2]}  # 输出qiu
    echo ${array[3]}  # 输出haha
    
  2. 读取整个数组

    ${array[@]}
    ${array[*]}  # 两种格式
    
    echo ${array[@]}
    echo ${array[*]}  #  两种写法均可
    

    在读取整个数组时,未定义的部分不会显示。例如:

    array[0]=666
    array[6]=qing
    array[9]=qiu
    array[999]=haha
    
    echo ${array[@]}  # 只会输出以上定义的四个值
    
  3. 数组长度

    ${#array[@]}
    ${#array[*]}  # 两种格式
    
    echo ${#array[@]}
    echo ${#array[*]}  # 两种写法均可
    
默认变量

默认变量是指在Shell中已经定义好的一些特殊变量,可以在Shell脚本中直接使用。一些常用的默认变量如下:

  • $0: 当前脚本的文件名。
  • $1 ~ $9: 传递给脚本或函数的参数。其中,$1表示第一个参数,$2表示第二个参数,以此类推。如果>9,需要用{}括起来,例如:
    ${10}
  • $#: 传递给脚本或函数的参数个数。
  • $*: 以一个单字符串显示所有向脚本传递的参数。参数之间用空格分隔。
  • $@: 与$*类似,但是每个参数都是独立的字符串,可以避免参数中含有空格等特殊字符的问题。
  • $?: 上一个命令或者函数的退出状态,0表示成功,非0表示失败。
  • $$: 当前Shell进程的进程号。
  • $(command):返回command这条命令的标准输出(可嵌套)。
  • command:返回command这条命令的标准输出(不可嵌套)。

expr命令

expr 表达式用于求表达式的值。

说明

  • 用空格隔开每一项。
  • 使用shell特定的字符需转义,或用反引号``(fn+~)括起来。
  • 对包含空格和其他特殊字符的字符串要用引号括起来。
  • expr会在stdout中输出结果。如果为逻辑关系表达式,则结果为真时,stdout输出1,否则输出0。真为1,假为0
  • exprexit code:如果为逻辑关系表达式,则结果为真时,exit code为0,否则为1。真为0,假为1

字符串表达式

  • length string
    返回string的长度

  • index string charset
    charset中任意单个字符在string中最前面的字符位置,下标从1开始。如果string中完全不存在charset中的字符,则返回0。

  • substr string position length
    返回string字符串中从第position个位置开始,长度最大为length的子串。如果positionlength为0、负数、或非数值,则返回空字符串。

str="Hello World!"

echo `expr length "$str"`  # 输出12。反引号``表示直接获取命令的标准输出
echo `expr index "$str" ala`  # 输出3
echo `expr substr "$str" 2 3`  # 输出ell

整数表达式

expr支持普通算数操作,算术表达式优先级低于字符串表达式,高于逻辑关系表达式。

  • + -
    加减运算。两端参数回转换成整数,如果转换失败则报错。
  • * / %
    乘、除、取模运算,*需要转义。两端参数会转换为整数,如果转换失败则报错。
  • ()
    可以改变优先级,但使用时需要转义。
a=5
b=6

echo `expr $a + $b`  # 输出11
echo `expr $a / $b`  # 输出0
echo `expr \( $a + 1 \) \* \( $b + 4 \)`

逻辑表达式

  • |
    如果第一个参数非空且非0,则返回第一个参数的值,否则返回第二个参数的值,但要求第二个参数的值也是非空或非0,否则返回0。如果第一个参数是非空或非0时,不会计算第二个参数。

  • &
    如果两个参数都非空且非0,则返回第一个参数,否则返回0。如果第一个参为0或为空,则不会计算第二个参数。

  • < <= = == != >= >
    比较两端的参数,如果为true,则返回1,否则返回0。==与=是同义词。expr首先尝试将两端参数转换为整数,并做算术比较,如果转换失败,则按字符集排序规则做字符比较。

  • () 可以改变优先级,但需要转义。

read命令

read命令用于从标准输入中读取单行数据。当读到文件结束符时,exit code为1,否则为0。

参数说明

  • -p:后面可以接提示信息。
  • -t:后面跟秒数,定义输入字符的等待时间,超过等待时间后会自动忽略此命令。
read name
echo $name
read -p "Please input: " -t 30 name  # 读入name的值,等待时间为30s

echo命令

echo用于输出字符串。

  • 显示普通字符串

    echo "qingqiu"
    echo qingiu  # ""可以省略
    
  • 显示转义字符

    echo "\"qingqiu\""
    echo \"qingqiu\"  # “”带不带都可以,但不能带‘’
    
  • 原样输出字符

    name=qingqiu
    echo '$name\"'  # ‘’内的内容原样输出,输出$name\"
    
  • 显示变量

    name=qingqiu
    echo "I'm $name"  # 输出I'm qingqiu
    
  • 显示换行

    echo -e "hello\n"  # -e开启转义,\n表示hello后换行
    
  • 显示不换行

    echo -e “hello\c”  # -e开启转义,\c表示hello后不换行
    
  • 显示结果定向至文件

    echo "qingqiu" > output.txt  # 将内容以覆盖方式输出到outpu.txt中
    
  • 显示命令执行结果

    echo `date`  # ``是反引号,输出现在的时间
    

printf命令

用于格式化输出,类似于C/C++中的printf函数。

test命令与判断符号[]

逻辑运算符

  • &&表示与,||表示或。
  • exit code为0时表示真;非零时表示假。(与C/C++定义相反)。

test命令

test命令用于判断文件类型以及比较变量,用exit code返回结果,为真,非0为假。

  • 判断文件类型

    test -e filename  # 判断文件是否存在
    test -f filename  # 判断是否为文件
    test -d filename  # 判断是否为目录
    
  • 判断文件权限

    test -r  # 判断文件是否可读
    test -w  # 判断文件是否可写
    test -x  # 判断文件是否可执行
    test -s  # 判断是否为空文件
    
  • 比较整数

    test $a -eq $b  # 判断a是否等于b
    test $a -ne $b  # 判断a是否不等于b
    test $a -gt $b  # 判断a是否大于b
    test $a -lt $b  # 判断a是否小于b
    test $a -ge $b  # 判断a是否大于等于b
    test $a -le $b  # 判断a是否小于等于b
    
  • 比较字符串

    test -z string  # 判断string是否为空,若为空返回true
    test -n string  # 判断string是否非空,若非空返回true(-n可以省略)
    test str1 == str2  # 判断str1是否等于str2
    test str1 != str2  # 判断str1是否不等于str2
    
  • 多重条件判定

    test -r filename -a -x filename  # 两个条件是否同时成立
    test -r filename -o -x filename  # 两个条件是否至少成立一个
    test ! -x file  # 取反。file不可执行时返回true
    

判断符号[]

[]test用法几乎一模一样,更常用于if语句中。另外[[]][]的加强版,支持的特性更多。

注意:

  • []是一个命令,里面的每一项都要用空格隔开
  • 中括号内的变量,最好用双引号括起来
  • 中括号内的常数,最好用单或双引号括起来

判断语句

if…then

类似于C/C++中的if-else语句。

  • 单层if

    # 格式
    if condition
    then
    	语句1
    	...
    fi  
    
    
    # 示例
    a=3
    b=4
    if [ "$a" -lt "$b" ] && [ "$a" -gt 2 ]
    then
    	echo ${a}在范围内
    fi  # 输出3在范围内
    
  • 单层if-else

    # 格式
    if condition
    then
    	语句1
    	...
    else
    	语句1
    	...
    fi
    
    
    # 示例
    a=3
    b=4
    if [ "$a" -lt "$b" ]
    then
    	echo ${a}小于${b}
    else
    	echo ${a}不小于${b}
    fi  # 输出3小于4
    
  • 多层if-elif-elif-else

    # 格式
    if condition
    then
        语句1
        ...
    elif condition
    then
        语句1
        ...
    elif condition
    then
        语句1
    else
        语句1
        ...
    fi
    
    
    # 示例
    a=4
    if [ $a -eq 1 ]
    then
        echo ${a}等于1
    elif [ $a -eq 2 ]
    then
        echo ${a}等于2
    elif [ $a -eq 3 ]
    then
        echo ${a}等于3
    else
        echo 其他
    fi  # 输出其他
    

case…esac

类似于C/C++中的switch语句。

# 格式
case $变量名 in
	值1)
		语句1
		...
		;;  # 类似于C/C++中的break
	值2)
		语句1
		...
		;;
	*)  # 类似于C/C++中的default
		语句1
		...
		;;
esac


# 示例
a=4
case $a in
    1)
        echo ${a}等于1
        ;;  
    2)
        echo ${a}等于2
        ;;  
    3)                                                
        echo ${a}等于3
        ;;  
    *)
        echo 其他
        ;;  
esac  # 输出其他

循环语句

for…in…do…done

# 格式
for var in val1 val2 val3
do
	语句1
	...
done


# 示例1
for i in q i n g
do
	echo $i
done  # 每行输出一个元素

# 示例2
for file in `ls`
do
	echo $file
done  # 逐行输出当前路径下所有文件名

# 示例3
for i in $(seq 1 10)
do
	echo $i
done  # 输出1-10

# 示例4
for i in {a..z}
do
	echo $i
done  # 逐行输出a,b,c,d,...,z

for ((…;…;…)) do…done

类似于C/C++中的for循环。

# 格式
for ((初值; 条件; 操作))
do
	语句1
	...
done


# 示例
for((i=1; i<=10; i++))
do
	echo $i
done  # 输出1-10

while…do…done

# 格式
while condition
do
	语句1
	...
done


# 示例
while read name
do
	echo $name
done

until…do…done

条件为真时结束。

# 格式
until condition
do
	语句1
	...
done


# 示例
until [ "${word}" == "yes" ] || [ "$word" == "YES" ]
do
	read -p "Please input yes/YES to stop:" word
done  # 输入yes/YES时结束,否则一直等待读入

跳出循环

  • break命令

    跳出当前一层循环,break不能跳出case语句。

    while read name
    do
        for ((i=1;i<=10;i++))
        do
            case $i in
                8)
                    break
                    ;;
                *)
                    echo $i
                    ;;
            esac
        done
    done  # 每读入非EOF的字符串,会输出一遍1-7
    
  • continue命令
    跳出当前循环。

    for ((i=1;i<=10;i++))
    do
        if [ `expr $i % 2` -eq 0 ]
        then
            continue
        fi
        echo $i
    done  # 输出1-10中所有奇数
    

死循环处理

  1. 使用top命令找到该进程ID。
  2. 输入kill -9 PID关掉此进程。

函数

bash中的函数类似于C/C++中的函数,但return的返回值与C/C++不同,返回的是exit code,取值为0-255,0表示正常结束。

如果想获取函数的输出结果,可以通过echo输出到stdout中,然后通过$(function_name)来获取stdout中的结果。

函数的return值可以通过$?来获取。

exit命令

  • exit命令用来退出当前shell进程,并返回一个退出状态;使用$?可以接收这个退出状态。

  • exit命令可以接受一个整数值作为参数,代表退出状态。如果不指定,默认状态值是 0。

  • exit退出状态只能是一个介于 0~255 之间的整数,其中只有 0 表示成功,其它值都表示失败。

文件重定向

每个进程默认打开3个文件描述符:

  • stdin标准输入,从命令行读取数据,文件描述符为0
  • stdout标准输出,向命令行输出数据,文件描述符为1
  • stderr标准错误输出,向命令行输出数据,文件描述符为2

可以用文件重定向将这三个文件描述符重定向到其他文件中。

命令说明
command > file将stdout重定向到file中
command < file将stdin重定向到file中
command >> file将stdout以追加方式重定向到file中
command n> file将文件描述符n重定向到file中
command n>> file将文件描述符n以追加方式重定向到file中

引入外部脚本

类似于C/C++中的include操作,bash也可以引入其他文件中的代码。

语法格式:

. filename  # .和filename之间有一个空格
source filename  # 两种方法都可以
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

shell教程 的相关文章

  • 为什么我不能在 while 循环内评估?

    我想在循环中创建 bash 别名 其中循环从命令读取行 为了逐行读取输出 我相信我需要将输出通过管道传输到read 然而 当我这样做时 别名不存在 如果我将以下内容包含在我的 bashrc for x in a1 a2 do eval al
  • 使用 Shell 脚本提供密码

    我已将客户端和服务器设置为无密码登录 就像无密码登录一样 通过将服务器的 RSA 密钥复制到所有客户端的 root ssh id rsa pub 来实现 但这是我手动完成的 我喜欢使用 shell 脚本自动执行此过程 并通过脚本向计算机提供
  • 如何在 Laravel 中存储非 php 文件的模板?

    我们可以存储PHP模板文件使用bladeLaravel 中的模板引擎 但是 我想在远程服务器上创建一个配置文件 每个文件包含 20 30 行以上 到目前为止 我一直在使用Perl 我曾经执行 Perl 文件 该文件用于将内容转储到一个文件中
  • 模拟用户输入以使用不同参数多次调用脚本

    我必须使用提供的脚本 该脚本在脚本运行时接受用户输入而不是参数 我无法解决这个问题 脚本的一个例子是 bin bash echo param one read one doSomething echo param two read two
  • 使用与后期步骤中的 Shell 脚本中的克隆相同的 http git 凭据

    我想要自动化我们的发布过程 并且我有一个 Maven 项目的以下 Jenkins 构建作业 使用配置的 Jenkins 凭证 用户名 密码 克隆 Git 存储库 执行一些 Maven 命令以进行构建 配置一个后步骤来执行一些额外的 Git
  • 使用 shell 脚本在 docker 容器内运行脚本

    我正在尝试创建一个 shell 脚本来设置 docker 容器 我的脚本文件如下所示 bin bash docker run t i p 5902 5902 name mycontainer privileged myImage new b
  • 如何在 Bash 中将字符串转换为小写

    有办法进去吗bash questions tagged bash将字符串转换为小写字符串 例如 如果我有 a Hi all 我想将其转换为 hi all 有多种方法 POSIX标准 https en m wikipedia org wiki
  • 寻找下一个开放端口

    有没有什么办法 使用基本的 Unix 命令 找到下一个未使用的端口号 从端口 4444 开始向上 我通过 ssh 通过 openssh 进入 Windows XP 计算机 运行 Cygwin 工具并使用 bash shell 谢谢 戴夫 尝
  • subprocess.Popen args 参数的最大长度是多少?

    我在用Popen http docs python org library subprocess html using the subprocess modulesubprocess 模块中的函数来执行命令行工具 subprocess Po
  • 如何“grep”连续流?

    可以用吗grep在连续的流中 我的意思是有点tail f
  • 如何在 Bash 中为数组赋值?

    我正在尝试从文本文件中读取值列表 你好 txt 并将它们存储在一个数组中 counter 0 cat hello txt while read line do Unix Array counter line let counter coun
  • 如何在Windows Git shell中运行./script.sh?

    也许这很尴尬 但是当我在 Git shell 中工作时 我无法在 Windows 上运行 sh 文件 也许我必须安装一些东西 但我认为 Git 会支持 bash 命令 我知道 Windows 不使用 sh 文件 我正在执行安装步骤游戏结束
  • 退出 bash 脚本但保持进程运行

    我正在运行服务器 需要使用参数执行以下命令 这些脚本目前工作得很好 但问题是当我运行脚本时我无法返回到控制台 它在控制台中保持运行 如果我强行停止它 那么该过程也会停止 我想继续运行该进程并返回到控制台 bin sh php home st
  • 让 Emacs ansiterm 和 Zsh 更好地发挥作用

    我一直在尝试在 emacs 会话中使用 Zsh 而无需 emacs 重新映射所有 Zsh 键 我发现 ansi term 对此非常有效 但是我仍然遇到一些问题 我输出了很多垃圾字符 我可以用以下方法修复它 Setup proper term
  • Windows、Emacs、Git Bash 和 shell 命令

    Windows 7 Emacs 24 3 1 git 1 8 1 msysgit 1 我的等效 emacs 文件中有以下内容 if equal system type windows nt progn setq explicit shell
  • 如何在fish shell脚本中获取程序名称?

    在 bash 中 与在 ruby 中一样 程序名称由 0 给出 鱼里有什么 如果有必要 我可以执行以下操作 set PROGRAM ps no header o args p self egrep o S 2 但我确信程序名称必须已经在某个
  • xsel -o 对于 OS X 等效项

    是否有一个等效的解决方案可以在 OS X 中抓取选定的文本 就像适用于 Linux 的 xsel o 一样 只需要当前的选择 这样我就可以在 shell 脚本中使用文本 干杯 埃里克 你也许可以安装xsel在 MacOS 上 更新 根据 A
  • 如何使用我在 github 中发布的 bash 脚本执行 chsh?

    我有一个要点 我总是用它来在新服务器上安装我需要的软件包 http gist github com 4372049 http gist github com 4372049 我需要做的就是通过 ssh 在新服务器中输入以下内容 bash c
  • 拆分字符串以仅获取前 5 个字符

    我想去那个地点 var log src ap kernelmodule 10 001 100 但看起来我的代码必须处理 ap kernelmodule 10 002 100 ap kernelmodule 10 003 101 等 我想使用
  • 从 PL/SQL 调用 shell 脚本,但 shell 以 grid 用户而非 oracle 身份执行

    我正在尝试使用 Runtime getRuntime exec 从 Oracle 数据库内部执行 shell 脚本 在 Red Hat 5 5 上运行的 Oracle 11 2 0 4 EE CREATE OR REPLACE proced

随机推荐

  • Spark基础测试题

    因最近学习了scala重温spark xff0c 本篇主要是spark rdd的基础编程题 原题目地址 xff1a 题目地址 数据准备 本题所需的数据 data txt 数据结构如下依次是 xff1a 班级 姓名 年龄 性别 科目 成绩 1
  • Spark基础练习系列

    因最近学习了scala重温spark xff0c 本篇主要是spark sql与rdd的基础编程题 第一部分SparkRDD xff1a 原题目地址 xff1a 题目地址 数据准备 本题所需的数据 data txt 数据结构如下依次是 xf
  • sparkstream消费kafka序列化报错

    本篇介绍在window运行环境下 xff0c 使用spark消费kafka数据遇到的几个坑 调试环境IDEA 依赖 span class token operator lt span dependency span class token
  • Hadoop的安装和使用

    前言 xff1a 这个Hadoop的安装和使用操作起来很容易出错 xff0c 反正各种的问题 xff0c 所以在实验过程中需要细心 重复 xff0c 有的时候是机器的问题 xff0c 还有配置的问题 下面我讲一下我遇到的坑 xff01 第3
  • 树莓派 | 解决VNC Viewer无法连接显示问题

    如果觉得本篇文章对您的学习起到帮助作用 xff0c 请 点赞 43 关注 43 评论 xff0c 留下您的足迹 x1f4aa x1f4aa x1f4aa VNC Viewer是一个很不错的远程桌面应用 xff0c 但是我们在树莓派中使用时
  • kubeadm部署k8s,coredns一直处于containercreating状态failed to find plugin “flannel“ in path [/opt/cni/bin]]

    问题 xff1a coredns始终处于containercreating状态 coredns镜像拉取不下来 xff0c 只能手动拉去之后修改tag进行解决这个问题 xff0c 具体步骤如下 xff1a span class token n
  • Docker Compose部署Springboot+Mysql项目

    声明 xff1a 本文CSDN作者原创投稿文章 xff0c 未经许可禁止任何形式的转载 xff0c 原文链接 在上一篇文章Spring Boot Maven 43 Docker打包中 xff0c 我们实现了将Springboot项目源代码一
  • 华为交换机配置LACP模式链路聚合

    文章目录 1 拓扑图2 任务描述3 SwA配置4 SwB配置5 查看配置6 普通模式链路聚合演示 https blog csdn net qq 45042462 article details 120972306 1 拓扑图 2 任务描述
  • Linux 或 树莓派 4B 使用 apt 或 pip 安装 scipy

    下面的安装过程都是在树莓派4B上安装成功的 xff0c 记录一下 xff0c 仅供参考 python 3 7 使用 apt 安装 注 xff1a 这种好像python版本只能在3 8以下 xff0c 其他版本也可尝试 sudo apt ge
  • 树莓派4B 安装 sklearn

    本文记录在树莓派4B中安装sklearn库的步骤以及安装时遇到的问题 安装步骤 sudo pip3 install numpy 61 61 1 23 5 sudo apt get install python3 numpy python3
  • navicat连接mysql报错1251的解决方法

    navicat连接mysql报错1251的解决方法 1 新安装的mysql8 xff0c 使用破解版的navicat连接的时候一直报错 xff0c 如图所示 xff1a 2 网上查找原因发现是mysql8 之前的版本中加密规则是mysql
  • 一个简单的flask实例

    Flask是python编写的轻量级的web框架 span class token comment 导入Flask类 span span class token keyword from span flask span class toke
  • 基础命令(四)

    LINUX基础命令 xff08 四 xff09 一 Tail命令 1 tail使用方法 tail命令用途是依照要求将指定的文件的最后部分输出到标准设备 xff0c 通常是终端 xff0c 通俗讲来 xff0c 就是把某个档案文件的最后几行显
  • Snipaste常用快捷键(详细总结)

    Snipaste快捷键 xff08 详细总结 xff09 全局快捷键 全局操作截屏F1贴图F3退出当前截图Esc截屏并自动复制Ctrl 43 F1隐藏 显示所有贴图Shift 43 F3切换到另一组贴图Ctrl 43 F3 鼠标贴图相关操作
  • 4位数值比较器电路

    4位数值比较器电路 题目描述 xff1a 使用门级描述方式 xff0c 实现4位数值比较器 某4位数值比较器的功能如下表 96 timescale 1ns 1ns module comparator 4 input 3 0 A input
  • Maven项目pom.xml project标签爆红解决方法

    今天在打开项目的时候 xff0c 发现了一个Maven项目的问题 xff0c 在Maven项目的pom xml文件中 xff0c project标签爆出了一个错误 parent relativePath of POM com hrp spr
  • 人工智能学习笔记五——孪生神经网络

    本文将用孪生神经网络模型 xff0c 对手写数字集minist进行相似度比较 xff0c 用的框架是keras 如果还不清楚神经网络 xff0c 可以看一下这篇文章 神经网络 caodong0225 github io MNIST 是一个手
  • Docker Swarm实战初探

    声明 xff1a 本文CSDN作者原创投稿文章 xff0c 未经许可禁止任何形式的转载 xff0c 原文链接 环境 宿主机 xff1a macOS 10 15 7虚拟机平台 xff1a Parallels Desktop 15 1 2虚拟机
  • 零基础DIY四轴飞行器超级详细保姆级教程(STM32F407ZGT6主控、WIFI图传、陀螺仪平衡、气压计/超声波定高、手机蓝牙控制等功能)

    前言 大四毕业后暑假没事做就花了一点DIY了一个四轴飞行器 xff0c 是比较大的那种F450机架 xff0c 不是那种PCB板做机架的小四轴 xff0c 因为我也是从零基础开始做的四轴 xff0c 现在就想把自己的过程写成博客分享在网上
  • shell教程

    shell 简介 Shell是一种脚本语言 xff0c 通常用于在Unix和类Unix操作系统上进行命令行交互 它是用户与操作系统内核之间的接口 xff0c 允许用户通过命令行或脚本文件来控制计算机上的操作 Shell程序通常用于执行复杂的