biancheng-linux-shell
参考http://c.biancheng.net/view/706.html

Shell变量:Shell变量的定义、赋值和删除
Shell 支持以下三种定义变量的方式:
variable=value
variable='value'
variable="value"
使用变量
使用一个定义过的变量,只要在变量名前面加美元符号$即可,如:
- author="严长生"
- echo $author
- echo ${author}
变量名外面的花括号{ }是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:
- skill="Java"
- echo "I am good at ${skill}Script"
Shell命令替换:将命令的输出结果赋值给变量
其中,variable 是变量名,commands 是要执行的命令。commands 可以只有一个命令,也可以有多个命令,多个命令之间以分号;分隔。
例如,date 命令用来获得当前的系统时间,使用命令替换可以将它的结果赋值给一个变量。
- #!/bin/bash
- begin_time=`date` #开始时间,使用``替换
- sleep 20s #休眠20秒
- finish_time=$(date) #结束时间,使用$()替换
- echo "Begin time: $begin_time"
- echo "Finish time: $finish_time"
运行脚本,20 秒后可以看到输出结果:
Begin time: 2019年 04月 19日 星期五 09:59:58 CST
Finish time: 2019年 04月 19日 星期五 10:00:18 CST
Shell位置参数(命令行参数)
1) 给脚本文件传递位置参数
请编写下面的代码,并命名为 test.sh:
- #!/bin/bash
- echo "Language: $1"
- echo "URL: $2"
运行 test.sh,并附带参数:
[mozhiyan@localhost ~]$ cd demo
[mozhiyan@localhost demo]$ . ./test.sh Shell http://c.biancheng.net/shell/
Language: Shell
URL: http://c.biancheng.net/shell/
其中Shell是第一个位置参数,http://c.biancheng.net/shell/是第二个位置参数,两者之间以空格分隔。
2) 给函数传递位置参数
请编写下面的代码,并命名为 test.sh:
- #!/bin/bash
- #定义函数
- function func(){
- echo "Language: $1"
- echo "URL: $2"
- }
- #调用函数
- func C++ http://c.biancheng.net/cplus/
运行 test.sh:
[mozhiyan@localhost ~]$ cd demo
[mozhiyan@localhost demo]$ . ./test.sh
Language: C++
URL: http://c.biancheng.net/cplus/
Shell特殊变量:Shell $#、$*、$@、$?、$$
| 变量 | 含义 |
|---|---|
| $0 | 当前脚本的文件名。 |
| $n(n≥1) | 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是 $1,第二个参数是 $2。 |
| $# | 传递给脚本或函数的参数个数。 |
| $* | 传递给脚本或函数的所有参数。 |
| $@ | 传递给脚本或函数的所有参数。当被双引号" "包含时,$@ 与 $* 稍有不同,我们将在《Shell $*和$@的区别》一节中详细讲解。 |
| $? | 上个命令的退出状态,或函数的返回值,我们将在《Shell $?》一节中详细讲解。 |
| $$ | 当前 Shell 进程 ID。对于 Shell 脚本,就是这些脚本所在的进程 ID。 |
下面我们通过两个例子来演示。
1) 给脚本文件传递参数
编写下面的代码,并保存为 test.sh:
- #!/bin/bash
- echo "Process ID: $$"
- echo "File Name: $0"
- echo "First Parameter : $1"
- echo "Second Parameter : $2"
- echo "All parameters 1: $@"
- echo "All parameters 2: $*"
- echo "Total: $#"
运行 test.sh,并附带参数:
[mozhiyan@localhost demo]$ . ./test.sh Shell Linux
Process ID: 5943
File Name: bash
First Parameter : Shell
Second Parameter : Linux
All parameters 1: Shell Linux
All parameters 2: Shell Linux
Total: 2
2) 给函数传递参数
编写下面的代码,并保存为 test.sh:
- #!/bin/bash
- #定义函数
- function func(){
- echo "Language: $1"
- echo "URL: $2"
- echo "First Parameter : $1"
- echo "Second Parameter : $2"
- echo "All parameters 1: $@"
- echo "All parameters 2: $*"
- echo "Total: $#"
- }
- #调用函数
- func Java http://c.biancheng.net/java/
运行结果为:
Language: Java
URL: http://c.biancheng.net/java/
First Parameter : Java
Second Parameter : http://c.biancheng.net/java/
All parameters 1: Java http://c.biancheng.net/java/
All parameters 2: Java http://c.biancheng.net/java/
Total: 2
Shell字符串详解
字符串举例:
- str1=c.biancheng.net
- str2="shell script"
- str3='C语言中文网'
下面我们说一下三种形式的区别:
1) 由单引号' '包围的字符串:
- 任何字符都会原样输出,在其中使用变量是无效的。
- 字符串中不能出现单引号,即使对单引号进行转义也不行。
2) 由双引号" "包围的字符串:
- 如果其中包含了某个变量,那么该变量会被解析(得到该变量的值),而不是原样输出。
- 字符串中可以出现双引号,只要它被转义了就行。
3) 不被引号包围的字符串
- 不被引号包围的字符串中出现变量时也会被解析,这一点和双引号
" "包围的字符串一样。 - 字符串中不能出现空格,否则空格后边的字符串会作为其他变量或者命令解析。
我们通过代码来演示一下三种形式的区别:
- #!/bin/bash
- n=74
- str1=c.biancheng.net$n str2="shell \"script\" $n"
- str3='C语言中文网 $n'
- echo $str1
- echo $str2
- echo $str3
运行结果:
c.biancheng.net74
shell "script" 74
C语言中文网 $n
获取字符串长度
在 Shell 中获取字符串长度很简单,具体方法如下:
${#string_name}
string_name 表示字符串名字。
下面是具体的演示:
- #!/bin/bash
- str="http://c.biancheng.net/shell/"
- echo ${#str}
运行结果:
29
Shell字符串拼接(连接、合并)
- #!/bin/bash
- name="Shell"
- url="http://c.biancheng.net/shell/"
- str1=$name$url #中间不能有空格
- str2="$name $url" #如果被双引号包围,那么中间可以有空格
- str3=$name": "$url #中间可以出现别的字符串
- str4="$name: $url" #这样写也可以
- str5="${name}Script: ${url}index.html" #这个时候需要给变量名加上大括号
- echo $str1
- echo $str2
- echo $str3
- echo $str4
- echo $str5
运行结果:
Shellhttp://c.biancheng.net/shell/
Shell http://c.biancheng.net/shell/
Shell: http://c.biancheng.net/shell/
Shell: http://c.biancheng.net/shell/
ShellScript: http://c.biancheng.net/shell/index.html
Shell字符串截取(非常详细)
1) 从字符串左边开始计数
如果想从字符串的左边开始计数,那么截取字符串的具体格式如下:
${string: start :length}
其中,string 是要截取的字符串,start 是起始位置(从左边开始,从 0 开始计数),length 是要截取的长度(省略的话表示直到字符串的末尾)。
例如:
- url="c.biancheng.net"
- echo ${url: 2: 9}
结果为biancheng。
2) 从右边开始计数
如果想从字符串的右边开始计数,那么截取字符串的具体格式如下:
${string: 0-start :length}
同第 1) 种格式相比,第 2) 种格式仅仅多了0-,这是固定的写法,专门用来表示从字符串右边开始计数。
这里需要强调两点:
- 从左边开始计数时,起始数字是 0(这符合程序员思维);从右边开始计数时,起始数字是 1(这符合常人思维)。计数方向不同,起始数字也不同。
- 不管从哪边开始计数,截取方向都是从左到右。
例如:
- url="c.biancheng.net"
- echo ${url: 0-13: 9}
结果为biancheng。从右边数,b是第 13 个字符。
再如:
结果为biancheng.net。
从指定字符(子字符串)开始截取
这种截取方式无法指定字符串长度,只能从指定字符(子字符串)截取到字符串末尾。Shell 可以截取指定字符(子字符串)右边的所有字符,也可以截取左边的所有字符。
1) 使用 # 号截取右边字符
使用#号可以截取指定字符(或者子字符串)右边的所有字符,具体格式如下:
${string#*chars}
汇总
最后,我们对以上 8 种格式做一个汇总,请看下表:
| 格式 | 说明 |
|---|---|
| ${string: start :length} | 从 string 字符串的左边第 start 个字符开始,向右截取 length 个字符。 |
| ${string: start} | 从 string 字符串的左边第 start 个字符开始截取,直到最后。 |
| ${string: 0-start :length} | 从 string 字符串的右边第 start 个字符开始,向右截取 length 个字符。 |
| ${string: 0-start} | 从 string 字符串的右边第 start 个字符开始截取,直到最后。 |
| ${string#*chars} | 从 string 字符串第一次出现 *chars 的位置开始,截取 *chars 右边的所有字符。 |
| ${string##*chars} | 从 string 字符串最后一次出现 *chars 的位置开始,截取 *chars 右边的所有字符。 |
| ${string%*chars} | 从 string 字符串第一次出现 *chars 的位置开始,截取 *chars 左边的所有字符。 |
| ${string%%*chars} | 从 string 字符串最后一次出现 *chars 的位置开始,截取 *chars 左边的所有字符。 |
Shell数组:Shell数组定义以及获取数组元素
Shell 数组的定义
在 Shell 中,用括号( )来表示数组,数组元素之间用空格来分隔。由此,定义数组的一般形式为:
array_name=(ele1 ele2 ele3 ... elen)
注意,赋值号=两边不能有空格,必须紧挨着数组名和数组元素。
下面是一个定义数组的实例:
- nums=(29 100 13 8 91 44)
Shell 是弱类型的,它并不要求所有数组元素的类型必须相同,例如:
- arr=(20 56 "http://c.biancheng.net/shell/")
第三个元素就是一个“异类”,前面两个元素都是整数,而第三个元素是字符串。
Shell 数组的长度不是固定的,定义之后还可以增加元素。例如,对于上面的 nums 数组,它的长度是 6,使用下面的代码会在最后增加一个元素,使其长度扩展到 7:
- nums[6]=88
此外,你也无需逐个元素地给数组赋值,下面的代码就是只给特定元素赋值:
- ages=([3]=24 [5]=19 [10]=12)
以上代码就只给第 3、5、10 个元素赋值,所以数组长度是 3。
获取数组元素
获取数组元素的值,一般使用下面的格式:
${array_name[index]}
其中,array_name 是数组名,index 是下标。例如:
- n=${nums[2]}
表示获取 nums 数组的第二个元素,然后赋值给变量 n。再如:
- echo ${nums[3]}
表示输出 nums 数组的第 3 个元素。
使用@或*可以获取数组中的所有元素,例如:
- ${nums[*]}
- ${nums[@]}
两者都可以得到 nums 数组的所有元素。
完整的演示:
- #!/bin/bash
- nums=(29 100 13 8 91 44)
- echo ${nums[@]} #输出所有数组元素
- nums[10]=66 #给第10个元素赋值(此时会增加数组长度)
- echo ${nums[*]} #输出所有数组元素
- echo ${nums[4]} #输出第4个元素
运行结果:
29 100 13 8 91 44
29 100 13 8 91 44 66
91
Shell获取数组长度
实例演示
下面我们通过实际代码来演示一下如何获取数组长度。
- #!/bin/bash
- nums=(29 100 13)
- echo ${#nums[*]}
- #向数组中添加元素
- nums[10]="http://c.biancheng.net/shell/"
- echo ${#nums[@]}
- echo ${#nums[10]}
- #删除数组元素
- unset nums[1]
- echo ${#nums[*]}
运行结果:
3
4
29
3
Shell数组拼接,Shell数组合并
下面是完整的演示代码:
- #!/bin/bash
- array1=(23 56)
- array2=(99 "http://c.biancheng.net/shell/")
- array_new=(${array1[@]} ${array2[*]})
- echo ${array_new[@]} #也可以写作 ${array_new[*]}
运行结果:
23 56 99 http://c.biancheng.net/shell/
Shell删除数组元素(也可以删除整个数组)
下面我们通过具体的代码来演示:
- #!/bin/bash
- arr=(23 56 99 "http://c.biancheng.net/shell/")
- unset arr[1]
- echo ${arr[@]}
- unset arr
- echo ${arr[*]}
运行结果:
23 99 http://c.biancheng.net/shell/
Shell echo命令:输出字符串
#!/bin/bash name="Shell教程"
url="http://c.biancheng.net/shell/" echo "读者,你好!" #直接输出字符串
echo $url #输出变量
echo "${name}的网址是:${url}" #双引号包围的字符串中可以解析变量
echo '${name}的网址是:${url}' #单引号包围的字符串中不能解析变量
读者,你好!
http://c.biancheng.net/shell/
Shell教程的网址是:http://c.biancheng.net/shell/
${name}的网址是:${url}
Shell read命令:读取从键盘输入的数据
| 选项 | 说明 |
|---|---|
| -a array | 把读取的数据赋值给数组 array,从下标 0 开始。 |
| -d delimiter | 用字符串 delimiter 指定读取结束的位置,而不是一个换行符(读取到的数据不包括 delimiter)。 |
| -e | 在获取用户输入的时候,对功能键进行编码转换,不会直接显式功能键对应的字符。 |
| -n num | 读取 num 个字符,而不是整行字符。 |
| -p prompt | 显示提示信息,提示内容为 prompt。 |
| -r | 原样读取(Raw mode),不把反斜杠字符解释为转义字符。 |
| -s | 静默模式(Silent mode),不会在屏幕上显示输入的字符。当输入密码和其它确认信息的时候,这是很有必要的。 |
| -t seconds | 设置超时时间,单位为秒。如果用户没有在指定时间内输入完成,那么 read 将会返回一个非 0 的退出状态,表示读取失败。 |
| -u fd | 使用文件描述符 fd 作为输入源,而不是标准输入,类似于重定向。 |
【实例1】使用 read 命令给多个变量赋值。
- #!/bin/bash
- read -p "Enter some information > " name url age
- echo "网站名字:$name"
- echo "网址:$url"
- echo "年龄:$age"
运行结果:
Enter some information > C语言中文网 http://c.biancheng.net 7
网站名字:C语言中文网
网址:http://c.biancheng.net
年龄:7
Shell数学计算(算术运算,加减乘除运算)
下面我们先来看一个反面的例子:
[c.biancheng.net]$ echo 2+8
2+8
[c.biancheng.net]$ a=23
[c.biancheng.net]$ b=$a+55
[c.biancheng.net]$ echo $b
23+55
[c.biancheng.net]$ b=90
[c.biancheng.net]$ c=$a+$b
[c.biancheng.net]$ echo $c
23+90
Shell (()):对整数进行数学运算
Shell (( )) 实例演示
【实例1】利用 (( )) 进行简单的数值计算。
[c.biancheng.net]$ echo $((1+1))
2
[c.biancheng.net]$ echo $((6-3))
3
[c.biancheng.net]$ i=5
[c.biancheng.net]$ ((i=i*2)) #可以简写为 ((i*=2))。
[c.biancheng.net]$ echo $i #使用 echo 输出变量结果时要加 $。
10
Shell if else语句(详解版)
下面的例子使用 if 语句来比较两个数字的大小:
- #!/bin/bash
- read a
- read b
- if (( $a == $b ))
- then
- echo "a和b相等"
- fi
运行结果:
84
84
a和b相等
Shell case in语句详解
#!/bin/bash printf "Input a character: "
read -n 1 char case $char in
[a-zA-Z])
printf "\nletter\n"
;;
[0-9])
printf "\nDigit\n"
;;
[0-9])
printf "\nDigit\n"
;;
[,.?!])
printf "\nPunctuation\n"
;;
*)
printf "\nerror\n"
esac
Input integer number: S
letter
运行结果2:
Input integer number: ,
Punctuation
Shell while循环详解
while 循环举例
【实例1】计算从 1 加到 100 的和。
- #!/bin/bash
- i=1
- sum=0
- while ((i <= 100))
- do
- ((sum += i))
- ((i++))
- done
- echo "The sum is: $sum"
运行结果:
The sum is: 5050
Shell for循环和for int循环详解
计算从 1 加到 100 的和。
- #!/bin/bash
- sum=0
- for ((i=1; i<=100; i++))
- do
- ((sum += i))
- done
- echo "The sum is: $sum"
运行结果:
The sum is: 5050
Shell break和continue跳出循环详解
Shell函数详解(函数定义、函数调用)
实例演示
定义一个函数,计算所有参数的和:
- #!/bin/bash
- function getsum(){
- local sum=0
- for n in $@
- do
- ((sum+=n))
- done
- return $sum
- }
- getsum 10 20 55 15 #调用函数并传递参数
- echo $?
运行结果:
100
Shell函数参数
实例1】使用 $n 来接收函数参数。
- #!/bin/bash
- #定义函数
- function show(){
- echo "Tutorial: $1"
- echo "URL: $2"
- echo "Author: "$3
- echo "Total $# parameters"
- }
- #调用函数
- show C# http://c.biancheng.net/csharp/ Tom
运行结果:
Tutorial: C#
URL: http://c.biancheng.net/csharp/
Author: Tom
Total 3 parameters
Linux Shell重定向(输入输出重定向)精讲
Linux Shell 输出重定向
输出重定向是指命令的结果不再输出到显示器上,而是输出到其它地方,一般是文件中。这样做的最大好处就是把命令的结果保存起来,当我们需要的时候可以随时查询。Bash 支持的输出重定向符号如下表所示。
| 类 型 | 符 号 | 作 用 |
|---|---|---|
| 标准输出重定向 | command >file | 以覆盖的方式,把 command 的正确输出结果输出到 file 文件中。 |
| command >>file | 以追加的方式,把 command 的正确输出结果输出到 file 文件中。 | |
| 标准错误输出重定向 | command 2>file | 以覆盖的方式,把 command 的错误信息输出到 file 文件中。 |
| command 2>>file | 以追加的方式,把 command 的错误信息输出到 file 文件中。 | |
| 正确输出和错误信息同时保存 | command >file 2>&1 | 以覆盖的方式,把正确输出和错误信息同时保存到同一个文件(file)中。 |
| command >>file 2>&1 | 以追加的方式,把正确输出和错误信息同时保存到同一个文件(file)中。 | |
| command >file1 2>file2 | 以覆盖的方式,把正确的输出结果输出到 file1 文件中,把错误信息输出到 file2 文件中。 | |
| command >>file1 2>>file2 | 以追加的方式,把正确的输出结果输出到 file1 文件中,把错误信息输出到 file2 文件中。 | |
| command >file 2>file | 【不推荐】这两种写法会导致 file 被打开两次,引起资源竞争,所以 stdout 和 stderr 会互相覆盖,我们将在《结合Linux文件描述符谈重定向,彻底理解重定向的本质》一节中深入剖析。 | |
| command >>file 2>>file |
在输出重定向中,>代表的是覆盖,>>代表的是追加。
输出重定向举例
【实例1】将 echo 命令的输出结果以追加的方式写入到 demo.txt 文件中。
- #!/bin/bash
- for str in "C语言中文网" "http://c.biancheng.net/" "成立7年了" "日IP数万"
- do
- echo $str >>demo.txt #将输入结果以追加的方式重定向到文件
- done
运行以上脚本,使用cat demo.txt查看文件内容,显示如下:
C语言中文网
http://c.biancheng.net/
成立7年了
日IP数万
Shell过滤器
常用的被作为过滤器使用的命令如下所示:
| 命令 | 说明 |
|---|---|
| awk | 用于文本处理的解释性程序设计语言,通常被作为数据提取和报告的工具。 |
| cut | 用于将每个输入文件(如果没有指定文件则为标准输入)的每行的指定部分输出到标准输出。 |
| grep | 用于搜索一个或多个文件中匹配指定模式的行。 |
| tar | 用于归档文件的应用程序。 |
| head | 用于读取文件的开头部分(默认是 10 行)。如果没有指定文件,则从标准输入读取。 |
| paste | 用于合并文件的行。 |
| sed | 用于过滤和转换文本的流编辑器。 |
| sort | 用于对文本文件的行进行排序。 |
| split | 用于将文件分割成块。 |
| strings | 用于打印文件中可打印的字符串。 |
| tac | 与 cat 命令的功能相反,用于倒序地显示文件或连接文件。 |
| tail | 用于显示文件的结尾部分。 |
| tee | 用于从标准输入读取内容并写入到标准输出和文件。 |
| tr | 用于转换或删除字符。 |
| uniq | 用于报告或忽略重复的行。 |
| wc | 用于打印文件中的总行数、单词数或字节数。 |
接下来,我们通过几个实例来演示一下过滤器的使用。
在管道中使用 awk 命令
关于 awk 命令的具体用法,请大家自行学习,本节我们我们仅通过几个简单的实例来了解一下 awk 命令在管道中的使用。
实例1
查看系统中的所有的账号名称,并按名称的字母顺序排序。
[c.biancheng.net]$ awk -F: '{print $1}' /etc/passwd | sort
adm
apache
avahi
biancheng-linux-shell的更多相关文章
- 学习笔记之Linux Shell脚本教程:30分钟玩转Shell脚本编程
Linux Shell脚本教程:30分钟玩转Shell脚本编程 http://c.biancheng.net/cpp/shell/
- 【Linux】Shell三类变量的作用域——linux shell “永久环境变量”、“临时环境变量”和"普通变量"之完全解读
2015-05-08 00:15 3896人阅读 评论(10) 收藏 举报 本文章已收录于: 分类: 软件开发进阶(419) 作者同类文章X Unix/Linux杂项(118) 作者同类文章X ...
- linux shell 中的sleep命令
开始还以为是这样的语法: sleep(1), 后面发现是: linux shell 中的sleep命令 分类: LINUX 在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小 ...
- Linux shell脚本编程(三)
Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...
- Linux shell脚本编程(二)
Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...
- Linux shell脚本编程(一)
Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...
- Linux Shell 流程控制语句
* 本文主要介绍一些Linux Shell 常用的流程控制语句* 1. if 条件语句:if-then/if-elif-fi/if- else-fi if [条件判断逻辑1];then command ...
- Linux Shell 截取字符串
Linux Shell 截取字符串 shell中截取字符串的方法很多 ${var#*/} ${var##*/} ${var%/*} ${var%%/*} ${var:start:len} ${var: ...
- Linux Shell 重定向与管道【转帖】
by 程默 在了解重定向之前,我们先来看看linux 的文件描述符. linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以 ...
- Linux Shell 通配符、元字符、转义符【转帖】
作者:程默 说到shell通配符(wildcard),大家在使用时候会经常用到.下面是一个实例: 1 1 2 3 4 [chengmo@localhost ~/shell]$ ls a.txt ...
随机推荐
- Docker启动的centos容器使用systemctl功能
Failed to get D-Bus connection: Operation not permitted 错误的解决办法 # 启动的时候用如下命令 docker run --privileged ...
- ubuntu的apt源更新后只能装php8新版本,无法安装php7老版本了
新电脑更新apt源以后,发现新装的都是php8.1,而且apt源update后,search也找不到php7了. 于是找到了这篇文章 然后按照他说的做 sudo apt-get update sudo ...
- C# 开发的环境监测上位机应用
前言 在工业和科研领域,环境监测系统的重要性日益凸显.上位机软件作为环境监测系统的关键组成部分,负责数据采集.处理和显示,对提高监测效率和准确性起着至关重要的作用. 本文将向大家介绍一款用 C# 开发 ...
- Tensorflow/Keras、Pytorch 杂记
Tensorflow/Keras 直接从文件生成图片数据 ImageDataGenerator,循环生成图片,在重复生成图片之前,会把所有图片都遍历一遍.而且如果图片总量不是生成批量的倍数的话,在生成 ...
- 分布式配置中心之Apollo
Apollo(阿波罗)是携程开源的一款可靠的分布式配置管理中心,它能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服务配置管理场 ...
- vue3 + pnpm 打造一个 monorepo 项目
Monorepo 和 Multirepo 单一仓库(Monorepo)架构,可以理解为:利用单一仓库来管理多个packages的一种策略或手段:与其相对的是多仓库(Multirepo)架构 Monor ...
- @EnableAutoConfiguration 标签使用
@EnableAutoConfiguration 这个注解的作用是: 从classpath中搜索所有META-INF/spring.factories配置文件然后,将其中org.springframe ...
- Mock.js 笔记
1.介绍 官方文档,Mock.js用来生成随机数据,拦截 Ajax 请求 支持的数据类型丰富,包括文本.数字.布尔值.日期.邮箱.链接.图片.颜色等 功能灵活,生成随机数据 和 拦截 Ajax 请求 ...
- elementui多选框部分禁用
直接上代码 <el-table-column type="selection" :selectable="selectable" align=" ...
- Mysql的整体架构设计
整体分层 连接层 服务层 存储引擎层 连接层 客户端要连接到服务器 3306 端口,必须要跟服务端建立连接,那么 管理所有的连接,验证客户端的身份和权限,这些功能就在连接层完成. 服务层 连接层会把 ...