系列文章:
Linux Shell 常用命令 - 01篇
参考
https://www.jb51.net/article/123081.htm
https://www.jianshu.com/p/3e1eaaa3fee8
一般在命令替换的时候使用
#!/bin/bash
today=$(date +%Y%m%d)
# shell扫描一遍命令,发现了$()结构,便将$()中的命令执行一次,得到其标准输出,再将此输出赋值给today
# 等同于today=`date +%Y%m%d`
使用双括号,在比较过程中使用高级数学表达式
| 符号 | 描述 |
|---|---|
| val++ | 后增 |
| val-- | 后减 |
| ++val | 先增 |
| --val | 先减 |
| ! | 逻辑求反 |
| ~ | 位求反 |
| ** | 幂操作 |
| << | 左位移 |
| >> | 右位移 |
| && | 逻辑与 |
| || | 逻辑或 |
双小括号 (( )) 是 Bash Shell 中专门用来进行整数运算的命令,它的效率很高,写法灵活,是企业运维中常用的运算命令。(())是一种数学计算命令,它除了可以进行最基本的加减乘除运算,还可以进行大于、小于、等于等关系运算,以及与、或、非逻辑运算。
注:(( )) 只能进行整数运算,不能对小数(浮点数)或者字符串进行运算。
双小括号 (( )) 的语法格式为:
((表达式))
通俗地讲,就是将数学运算表达式放在((和))之间。
表达式可以只有一个,也可以有多个,多个表达式之间以逗号,分隔。对于多个表达式的情况,以最后一个表达式的值作为整个 (( )) 命令的执行结果。
可以使用 $ 获取 (( )) 命令的结果,这和使用 $ 获得变量值是类似的。

在 (( )) 中使用变量无需加上$前缀,(( )) 会自动解析变量名,这使得代码更加简洁,也符合程序员的书写习惯。
【实例1】利用 (( )) 进行简单的数值计算。

【实例2】利用 (( )) 进行逻辑运算。


运行结果如下:

可以直接使用if (($i<5)), 如果不使用双括号, 则为if [ $i -lt 5 ]
【实例3】利用 (( )) 进行自增(++)和自减(--)运算。
val=10
((val++))
echo $val
# 输出 11

【实例4】利用 (( )) 同时对多个表达式进行计算。

方括号定义了测试条件。第一个方括号 ([) 后和第二个方括号 (]) 前都要加一个空格,否则会报错。方括号主要包括4类判断:
(1)数值比较:
if [ $val1 -eq $val2 ]
if [ $val1 -le $val2 ]
...
(2)字符串比较:
if [ $str1 = $str2 ]
if [ $str1 != $str2 ]
if [ -n $str1 ] # 检查str1的长度是否非0
if [ -z $str1 ] # 检查str1的长度是否为0
例:test.sh脚本如下:

运行结果:

经过测试,数值也可以使用=, !=,且对于数值与字符串,=与==效果貌似一样?

运行结果:

(3)文件比较


(4)符合条件比较
[ condition1 ] && [ condition2 ]
[ condition1 ] || [ condition2 ]
注:[ ]中的 逻辑与 和 逻辑或 使用 -a 和 -o 表示,例: if [ $a -ne 1 -a $a != 2 ],或写作:if [ $a -ne 1 ] && [ $a != 2 ]

注:&&、||、< 和 > 操作符能够正常存在于[[ ]]条件判断结构中,比如可以直接使用 if [[ $a != 1 && $a != 2 ]]
if ($i<5)
if [ $i -lt 5 ]
if [ $a -ne 1 -a $a != 2 ]
if [ $a -ne 1] && [ $a != 2 ]
if [[ $a != 1 && $a != 2 ]]
for i in $(seq 0 4);do echo $i;done
for i in `seq 0 4`;do echo $i;done
for ((i=0;i<5;i++));do echo $i;done
for i in {0..4};do echo $i;done
if condition
then
statement(s)
fi
如果要将then 和 if 写在一行,要加个分号:
if condition; then
statement(s)
fi
【实例1】下面的例子使用 if 语句来比较两个数字的大小:

? 其中 read a 表示从命令行读取,并赋值给a
【实例2】在判断条件中也可以使用逻辑运算符,例如:

if condition
then
statement1
else
statement2
fi

if condition1
then
statement1
elif condition2
then
statement2
elif condition3
then
statement3
...
else
statementn
fi

例2:
来自 https://www.tutorialspoint.com/unix/if-elif-statement.htm

参考
http://c.biancheng.net/view/2804.html
https://blog.csdn.net/weixin_44324367/article/details/111312156
shell 之 循环执行某操作 - Simple-Sir - 博客园 (cnblogs.com)
while condition
do
statements
done
while 语句和 if else 语句中的 condition 用法都是一样的,可以使用 test 或 [] 命令,也可以使用 (()) 或 [[]]
【实例1】计算从 1 加到 100 的和。

【实例2】计算从 m 加到 n 的值。

【实例3】输出0~10的所有整数

参考
http://blog.sina.com.cn/s/blog_ad6555610101b5ud.html
https://www.cnblogs.com/zhzhang/p/6846300.html
https://www.cnblogs.com/simple-li/p/14040777.html
http://www.dutycode.com/post-60.html
https://www.runoob.com/linux/linux-comm-date.html
Linux date命令可以用来显示或设定系统的日期与时间,语法:
date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]
参数:
-d datestr : 显示 datestr 中所设定的时间 (非系统时间)
--help : 显示辅助讯息
-s datestr : 将系统时间设为 datestr 中所设定的时间
-u : 显示目前的格林威治时间
--version : 显示版本编号
假如今天是 2022-04-19
$ date
Tue Apr 19 11:27:50 CST 2022
$ date +%Y%m%d
20220419
? date 获取当前时间,+%Y%m%d 控制显示格式
$ date -d "+1 day" +%Y-%m-%d
2022-04-20
$ date -d "-1 day" +%Y-%m-%d
2022-04-18
? 其他写法:
date -d "-1days" +%Y-%m-%d
date -d "1 day ago" +%Y-%m-%d
(其中+%Y-%m-%d 与 +'%Y-%m-%d' 都可)
$ date -d "2012-04-10 -1 day" +%Y-%m-%d
2012-04-09
$ date -d "+1 week" +%Y-%m-%d
2022-04-26
同理还可 month, year
例1:脚本示例:
#!/bin/bash
if [ $# == 0 ] ; then
ydate=`date -d -1days "+%Y%m%d"`
ydateother=`date -d -1days "+%Y-%m-%d"`
tdate=`date -d -0days "+%Y%m%d"`
tdateother=`date -d -0days "+%Y-%m-%d"`
elif [ $# == 1 ] ; then
ydate=$1
ydateother=`date -d ${ydate} +"%Y-%m-%d"`
tdate=`date -d "${ydate} 1days" +"%Y%m%d"`
tdateother=`date -d ${tdate} +"%Y-%m-%d"`
elif [ $# == 2 ] ; then
ydate=$1
ydateother=`date -d ${ydate} +"%Y-%m-%d"`
tdate=$2
tdateother=`date -d ${tdate} +"%Y-%m-%d"`
else
echo "please do not input if calcute yedterday."
echo "please input like if calcute 20170510 one day: 20170510"
echo "please input like if calcute 20170510 and 20170512 two days : 20170510 20170511"
exit -1
fi
echo ${ydate}'--'${ydateother}'--'${tdate}'---'${tdateother}
例2: 按月执行201904到202010的py脚本:
#!/bin/bash
i=201904 # 定义开始月份
while [ $i -le 202010 ] # 当i小于等于202010时执行循环语句
do
dateNo1=$(date +"%Y-%m-%d %H:%M:%S") # 获取当前时间(年月日时分秒)
echo "开始执行($dateNo1): $i" # 打印当前时间(年月日时分秒)
python tmp_sn_union_mem_20201125.py $i # 执行python脚本,传入月份参数。 此处也可做其他操作
dateNo2=$(date +"%Y-%m-%d %H:%M:%S") # 获取当前时间(年月日时分秒)
echo "结束执行($dateNo2): $i" # 打印当前时间(年月日时分秒)
i=$[$i + 1] # 当前i值加1
if [ $i -eq 201913 ] # 判断i值是否等于201913,条件必须写在 [] 里
then
i=202001 # 如果i值等于201913,则让i值为202001
fi # if结束标记
done # while结束标记
注:
fi: if语句结束标记
done: 循环执行结束标记
i=$[$i + 1]: 变量加减运算要写在 $[] 里面。
if [ $i -eq 201913 ]: 条件必须写在 [] 里
附:数值比较:
-eq 相等(equal)
-ne 不等(not equal)
-gt 大于(greater than)
-lt 小于(less than)
-ge 大于等于 (greater than or equal)
-le 小于等于 (less than or equal)
注:crontab任务调度中,%是个特殊字符,要在前加"\"进行转义
例:
0 10 * * * cd /home/zzh && sh test.sh $(date -d "1 day ago" +"\%Y\%m\%d") >/dev/null 2>&1
参考 [linux shell中"2>&1"含义]https://www.cnblogs.com/zhenghongxin/p/7029173.html)
1表示标准输出
2表示标准错误
2>&1 的意思就是将标准错误重定向到标准输出
例:
>./test_run.sh >test_run.sh.log 2>&1
输出结果保存到test_run.sh.log(标准输出与错误)(>会覆盖已存在的内容)
>./test_run.sh >>test_run.sh.log 2>&1
输出结果追加到test_run.sh.log(标准输出与错误)(>>追加到末尾)
>./test_run.sh >test_run.sh.log
输出结果保存到test_run.sh.log(标准输出),错误信息输出到屏幕
>./test_run.sh 2>test_run.sh.log
输出结果(不包含错误信息)到屏幕,错误信息保存到test_run.sh.log
例有crontab任务:
*/2 * * * * root cd /opt/xxxx/test_S1/html/xxxx/admin; php index.php task testOne >/dev/null 2>&1 &
可以把/dev/null 可以看作"黑洞". 它等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到.
可以把 & 在命令的最后加上,表示让程序后台执行。
0 5 * * * 表示每天5:00执行
补充:如何既将结果保存到文件,又输出到屏幕:可使用 tee,示例如下
>./run_test.sh | tee run_test.log
参考
linux crontab定时执行shell脚本 - 龙昊雪 - 博客园 (cnblogs.com)
linux定时运行命令脚本——crontab_阳光岛主-CSDN博客
crontab命令说明:
crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。
语法
crontab (选项) (参数)
选项
-e:编辑该用户的计时器设置;
-l:列出该用户的计时器设置;
-r:删除该用户的计时器设置;
-u<用户名称>:指定要设定计时器的用户名称。
参数
crontab文件:指定包含待执行任务的crontab文件。
crontab命令:
crontab -e -> 编辑(进入后,press i 进行编辑,:wq保存并退出)
crontab -l -> 查看
crontab文件的含义:
用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:
minute hour day month week command
顺序:分 时 日 月 周
其中:
minute: 表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
在以上各个字段中,还可以使用以下特殊字符:
星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
注释行要在行首用#来表示
crontab文件条目的一些例子:
30 21 * * * /apps/bin/cleanup.sh
上面的例子表示每晚的21:30运行/apps/bin目录下的cleanup.sh。
45 4 1,10,22 * * /apps/bin/backup.sh
上面的例子表示每月1、10、22日的4:45运行/apps/bin目录下的backup.sh。
10 1 * * 6,0 /bin/find -name "core" -exec rm {} ;
上面的例子表示每周六、周日的1:10运行一个find命令。
0,30 18-23 * * * /apps/bin/dbcheck.sh
上面的例子表示在每天18:00至23:00之间每隔30分钟运行/apps/bin目录下的dbcheck.sh。
0 23 * * 6 /apps/bin/qtrend.sh
上面的例子表示每星期六的23:00运行/apps/bin目录下的qtrend.sh。
你可能已经注意到上面的例子中,每个命令都给出了绝对路径。当使用crontab运行shell脚本时,要由用户来给出脚本的绝对路径,设置相应的环境变量。
关于路径错误,因为在crontab中使用了绝对路径执行脚本,因此在该脚本中引用的其它脚本也都需要使用绝对路径,才能被crontab找到并执行。如何避免绝对路径复杂的设置呢,可采用如下格式:
0 5 * * * cd /data/test-ml;sh crontab_run.sh >>/data/test-ml/crontab_run.sh.log 2>&1 &
或
0 5 * * * cd /data/test-ml && ./crontab_run.sh >>/data/test-ml/crontab_run.sh.log 2>&1 &
每天5点执行,并将输出保存至crontab_run.sh.log(包括标准输出与标准错误)
建议使用此方式,先进入该目录,然后再执行脚本;否则,执行脚本中的其它脚本都需要加绝对路径
15 4 * * * /home/temp/post_analysis/post_analysis_sqoop.sh $(date -d "1 day ago" +"\%Y-\%m-\%d") >/dev/null 2>&1
Shell 有一种功能,就是可以将两个或者多个命令(程序或者进程)连接到一起,把一个命令的输出作为下一个命令的输入,以这种方式连接的两个或者多个命令就形成了管道(pipe)。
Linux 管道使用竖线|连接多个命令,这被称为管道符。Linux 管道的具体语法格式如下:
command1 | command2
command1 | command2 [ | commandN... ]
管道符|与两侧的命令之间可以存在也可以不存在空格。
当在两个命令之间设置管道时,管道符|左边命令的输出就变成了右边命令的输入。只要第一个命令向标准输出写入,而第二个命令是从标准输入读取,那么这两个命令就可以形成一个管道。大部分的 Linux 命令都可以用来形成管道。
使用管道的优点:省去创建临时文件。
【示例】将 ls 命令的输出发送到 grep 命令:
[c.biancheng.net]$ ls | grep log.txt
log.txt
上述命令是查看文件 log.txt 是否存在于当前目录下。
我们可以在命令的后面使用选项,例如使用-al选项:
[c.biancheng.net]$ ls -al | grep log.txt
-rw-rw-r--. 1 mozhiyan mozhiyan 0 4月 15 17:26 log.txt
我们也可以重定向管道的输出到一个文件(使用重定向操作符>或>>将管道中的最后一个命令的标准输出进行重定向),比如将上述管道命令的输出结果发送到文件 output.txt 中:
[c.biancheng.net]$ ls -al | grep log.txt >output.txt
[c.biancheng.net]$ cat output.txt
-rw-rw-r--. 1 mozhiyan mozhiyan 0 4月 15 17:26 log.txt
使用管道将 cat 命令的输出作为 less 命令的输入,这样就可以将 cat 命令的输出每次按照一个屏幕的长度显示,这对于查看长度大于一个屏幕的文件内容很有帮助。
cat /var/log/message | less
grep 命令用于查找文件里符合条件的字符串。
语法:
grep [-abcEFGhHilLnqrsvVwxy][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]
参数:
-a 或 --text : 不要忽略二进制的数据。
-A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
-b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
-B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。
-c 或 --count : 计算符合样式的列数。
-C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
-d <动作> 或 --directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
-e<范本样式> 或 --regexp=<范本样式> : 指定字符串做为查找文件内容的样式。
-E 或 --extended-regexp : 将样式为延伸的正则表达式来使用。
-f<规则文件> 或 --file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
-F 或 --fixed-regexp : 将样式视为固定字符串的列表。
-G 或 --basic-regexp : 将样式视为普通的表示法来使用。
-h 或 --no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。
-H 或 --with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。
-i 或 --ignore-case : 忽略字符大小写的差别。
-l 或 --file-with-matches : 列出文件内容符合指定的样式的文件名称。
-L 或 --files-without-match : 列出文件内容不符合指定的样式的文件名称。
-n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
-o 或 --only-matching : 只显示匹配PATTERN 部分。
-q 或 --quiet或--silent : 不显示任何信息。
-r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。
-s 或 --no-messages : 不显示错误信息。
-v 或 --invert-match : 显示不包含匹配文本的所有行。
-V 或 --version : 显示版本信息。
-w 或 --word-regexp : 只显示全字符合的列。
-x --line-regexp : 只显示全列符合的列。
-y : 此参数的效果和指定"-i"参数相同。
【示例1】在当前路径下,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行。
grep test *file
结果如下所示:
>grep test test* #查找前缀有“test”的文件包含“test”字符串的文件
testfile1:This a Linux testfile! #列出testfile1 文件中包含test字符的行
testfile_2:This is a linux testfile! #列出testfile_2 文件中包含test字符的行
testfile_2:Linux test #列出testfile_2 文件中包含test字符的行
【示例2】以递归的方式查找符合条件的文件。例如,查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串"update"的文件,并打印出该字符串所在行的内容,使用的命令为:
grep -r update /etc/acpi
【示例3】查看result.csv中出现100001的行并输出
>cat result.csv | grep 100001

将输出结果存入文件:
>cat result.csv | grep 100001 >output.txt
查找并返回行号:
>cat result.csv | grep -n 100001

若想在另一个文件中查看相同行号的内容:
> cat result2.csv | sed -n '334007p'

wc命令用于计算字数
语法:
wc [-clw][--help][--version][文件...]
参数:
-c或--bytes或--chars 只显示Bytes数。
-l或--lines 显示行数。
-w或--words 只显示字数。
--help 在线帮助。
--version 显示版本信息。
【示例1】返回行数,字数,字节数
$ cat testfile
Linux networks are becoming more and more common, but scurity is often an overlooked
issue. Unfortunately, in today’s environment all networks are potential hacker targets,
fro0m tp-secret military research networks to small home LANs.
Linux Network Securty focuses on securing Linux in a networked environment, where the
security of the entire network needs to be considered rather than just isolated machines.
It uses a mix of theory and practicl techniques to teach administrators how to install and
use security applications, as well as how the applcations work and why they are necesary.
$ wc testfile # testfile文件的统计信息
3 92 598 testfile # testfile文件的行数为3、单词数92、字节数598
【示例2】查看文件中包含多少个逗号,结合 grep:
>cat result.txt | grep -o ',' | wc -l

sed 可依照脚本的指令来处理、编辑文本文件。
语法:
sed [-hnV][-e<script>][-f<script文件>][文本文件]
参数说明:
-e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。
-f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
-h或--help 显示帮助。
-n或--quiet或--silent 仅显示script处理后的结果。
-V或--version 显示版本信息。
动作说明:
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何东东;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
假如有如下文件:
$ cat testfile #查看testfile 中的内容
HELLO LINUX!
Linux is a free unix-type opterating system.
This is a linux testfile!
Linux test
Google
Taobao
Runoob
Tesetfile
Wiki
【示例1】列出文件的5到7行:
$ cat testfile | sed -n '5,7p'
Google
Taobao
Runoob
【示例2】搜索 testfile 有 oo 关键字的行:
$ cat testfile | sed -n '/oo/p'
Google
Runoob
【示例3】数据的查找与替换:
除了整行的处理模式之外, sed 还可以用行为单位进行部分数据的查找与替换
语法格式如下:
sed 's/要被取代的字串/新的字串/g'
将 testfile 文件中每行第一次出现的 oo 用字符串 kk 替换,然后将该文件内容输出到标准输出:
>sed -e 's/oo/kk/' testfile
注:sed 后面接的动作,要以 '...' 两个单引号括住
g 标识符表示全局查找替换,使 sed 对文件中所有符合的字符串都被替换,修改后内容会到标准输出,不会修改原文件:
>sed -e 's/oo/kk/g' testfile
选项 i 使 sed 修改文件:
>sed -i 's/oo/kk/g' testfile
批量操作当前目录下以 test 开头的文件:
>sed -i 's/oo/kk/g' ./test*
【示例4】将文件中的的逗号替换为\t,写入另一个文件:
>cat ./docs/a.txt |sed 's/,/\t/g' >./docs/b.txt
直接修改原文件:
>sed -i 's/,/\t/g' ./docs/a.txt
参考 https://blog.csdn.net/qq_21238607/article/details/119541193
#命令模式下
G # 跳至文件最后一行
d1G # 删除首行至光标所在行的所有数据
? 注:输入完 d1G后,会立马清空,不会要求确认等操作。

注意,以上这 3 种命令都必须在 Vim 编辑器处于命令模式时才能使用。
rz
选择相应的文件即可
sz text.csv
选择相应的保存路径即可
system-view进入系统视图quit退到系统视图sysname交换机命名vlan20创建vlan(进入vlan20)displayvlan显示vlanundovlan20删除vlan20displayvlan20显示vlan里的端口20Interfacee1/0/24进入端口24portlink-typeaccessvlan20把当前端口放入vlan20undoporte1/0/10删除当前VLAN端口10displaycurrent-configuration显示当前配置02配置交换机支持TELNETinterfacevlan1进入VLAN1ipaddress192.168.3.100
//1.验证返回状态码是否是200pm.test("Statuscodeis200",function(){pm.response.to.have.status(200);});//2.验证返回body内是否含有某个值pm.test("Bodymatchesstring",function(){pm.expect(pm.response.text()).to.include("string_you_want_to_search");});//3.验证某个返回值是否是100pm.test("Yourtestname",function(){varjsonData=pm.response.json
1.在Python3中,下列关于数学运算结果正确的是:(B)a=10b=3print(a//b)print(a%b)print(a/b)A.3,3,3.3333...B.3,1,3.3333...C.3.3333...,3.3333...,3D.3.3333...,1,3.3333...解析: 在Python中,//表示地板除(向下取整),%表示取余,/表示除(Python2向下取整返回3)2.如下程序Python2会打印多少个数:(D)k=1000whilek>1: print(k)k=k/2A.1000 B.10C.11D.9解析: 按照题意每次循环K/2,直到K值小于等
据我了解.round()-ruby中的功能将小数向上舍入,最后一个有效数字是5?例如1.5.round(0)#=>2(OK)但为什么1.025.round(2)#=>1.02而不是我期望的1.03?irb(main):037:0>1.025.round(2)=>1.02我该怎么做才能解决这个问题? 最佳答案 这与最后一位数字为5无关,与将十进制值转换为double浮点值有关。http://en.wikipedia.org/wiki/Double_precision_floating-point_format基本上,十进制数必须以有限
1.下载安装概述:Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana,可以通过各种图表进行高级数据分析及展示。下载地址:Kibana8.1.0|Elastic解压到指定目录:tar-xzvfkibana-8.1.0-linux-x86_64.tar.gz-C/opt/module/2.Kibana生成证书文件在es服务器中生成证书、直接回车cd/opt/module/elasticsearch-8.1.0/bin/elasticsearch-certutilcsr-namekibana-dns
gitclonehttp:www.git.com.cn........ 克隆git项目gitbranch 查看分支gitbranch-r查看远程分支gitpushorigin--delete分支名 删除远程分支tmpgitcheckout切换分支gitcheckout-b切换并创建分支gitcheckout-b分支名origin/分支名(如果远程分支已存在最好用此命令,在创建分支时会把远程分支最新代码一并拉下来,不会把原分支代码带过来)gitbranch-D删除分支gitpushorigin--delete分支名gitpush--set-upstreamorigin分支名 推送本地分支到远端g
文章目录一、Flex布局详解1.Flex布局的概念1.1传统布局1.2Flex布局1.3Flex布局声明2.Flex布局的容器属性2.1flex-direction属性2.2flex-wrap属性2.3flex-flow属性2.4justify-content属性2.5align-items属性2.6align-content属性3.Flex布局的项目属性3.1order属性3.2flex-grow属性3.3flex-shrink属性3.4flex-basis属性3.5flex属性3.6align-self属性总结一、Flex布局详解1.Flex布局的概念1.1传统布局盒子模型:我们知道当并列
最近更新的博客华为OD机试-数组合并(Python),真题含思路华为OD机试-最近的医院(Python),简单直白疑问搞懂,python中文词频统计,让你真能学会华为OD机试-最小传递延迟(Python)|代码编写思路+核心知识点字体反爬,一种来自字体设计师的跨行反爬案例|案例282023新华为OD机试题-事件推送(JavaScript)|刷完必过使用说明参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。华为OD清单查看地址:blog.csdn.net/hihell/category_12199275.html华为O
LVGL页面切换LVGL中没有明确的页面切换方案,参考(2.6#lvgl-多页面(screen)设定/切换)根据实际可用API,可以考虑两种方案:通过FLAG(LV_OBJ_FLAG_HIDDEN)隐藏或者显示lv_obj_add_flag/lv_obj_clear_flag根UI控件通过管理child节点的对象来实现lv_obj_set_parent/lv_obj_get_child通过屏幕显示obj切换lv_scr_load/lv_scr_load_anim与参考文章不同的是,这里更建议使用1和2两种方式进行管理。具体场景如下:如果是简单页面,没有标题,页脚,侧边栏等复杂元素,建议使用3。
文章目录02openEuler操作系统的安装2.1openEuler操作系统的安装流程2.2openEuler操作系统的安装详细步骤2.2.1下载地址2.2.2创建虚拟机2.2.2.1方法一:典型配置2.2.2.2方法二:自定义配置2.2.3安装过程02openEuler操作系统的安装2.1openEuler操作系统的安装流程2.2openEuler操作系统的安装详细步骤本次介绍openEuler22.03-LTS基于X86架构的安装。2.2.1下载地址官网下载地址:https://www.openeuler.org/zh/download/根据你的实际需求选择适合架构平台的ISO系统镜像下载