Linux下Shell编程杂记
作者:快盘下载 人气:date日期格式化
1、各种date日期格式转换
格式:2020-02-24 11:50 代码:$(date +%Y-%m-%d)' '$(date +%H:%M) 格式:20200224115052 代码:$(date +%Y%m%d%H%M%S
实例:显示当前时间
命令:
date
date '+%c'
date '+%D'
date '+%x'
date '+%T'
date '+%X'
输出:
2、显示过去和未来的时间
date 命令的另一个扩展是 -d 选项,可以快速地查明一个特定的日期。相对于当前日期若干天的究竟是哪一天,从现在开始的若干天或若干星期以后,或者以前(过去)。
具体说明如下:
date -d '2 weeks' 2周后的日期
date -d 'next monday' (下周一的日期)
date -d next-day +%Y%m%d(明天的日期)或者:date -d tomorrow +%Y%m%d
date -d last-day +%Y%m%d(昨天的日期) 或者:date -d yesterday +%Y%m%d
date +%Y%m%d --date="+1 day" //显示后一天的日期 date +%Y%m%d --date="-1 day" //显示前一天的日期
使用 ago 指令,您可以得到过去的日期:
date -d '30 days ago' (30天前的日期)
使用负数以得到相反的日期:
date -d 'dec 14 -2 weeks' (相对:dec 14这个日期的两周前的日期)
date -d '-100 days' (100天以前的日期)
date -d '50 days'(50天后的日期)
加减指定的天数/小时/分钟
在指定的日期上减去指定的天: echo $(date -d "2020-02-24 11:50:18 3 days" +"%Y%m%d%H") 三天后:2020022711 在指定的日期上加上指定的小时: echo $(date -d "2020-02-24 11:50:18 1 hour" +"%Y%m%d%H") 一小时后:2020022412 在指定的日期上减去指定的小时: echo $(date -d "2020-02-24 11:50:18 -6 hour" +"%Y%m%d%H") 6小时前 在指定的日期上加上指定的分钟: echo $(date -d "2020-02-24 11:50:18 10 minute" +"%Y%m%d%H") 十分钟后
参考文章:Linux命令之Date——时间
linux清空文件内容的三种方法
1.使用vi/vim命令打开文件后,输入"%d"清空 后保存即可。但当文件内容较大时,处理较慢,命令如下:
vim file_name :%d :wq
2.使用cat命令情况【推荐使用】,命令如下:
cat /dev/null > file_name
3.使用echo命令清空,此时会在文件中写入一个空行“ ",【注意,使用echo时候,>是清空文件后写入,>>是追加写入】命令如下:
echo "">file_name
Shell字符串截取
字符串截取函数:
格式
说明
${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 左边的所有字符。
实例:
从字符串左边截取:第2个字符到第9个字符
url="c.biancheng.net"echo ${url: 2: 9}
结果为biancheng。
找到第一个*字符,截取右边所有字符
url="http://c.biancheng.net/index.html"echo ${url#*:}
结果为//c.biancheng.net/index.html。
推荐文章:
Shell字符串截取:http://c.biancheng.net/view/1120.html
Shell中使用运算符
关系运算符列表:
-eq 检测两个数是否相等,相等返回 true。 [ $a -eq $b ] 返回 true。 -ne 检测两个数是否相等,不相等返回 true。 [ $a -ne $b ] 返回 true。 -gt 检测左边的数是否大于右边的,如果是,则返回 true。 [ $a -gt $b ] 返回 false。 -lt 检测左边的数是否小于右边的,如果是,则返回 true。 [ $a -lt $b ] 返回 true。 -ge 检测左边的数是否大等于右边的,如果是,则返回 true。 [ $a -ge $b ] 返回 false。 -le 检测左边的数是否小于等于右边的,如果是,则返回 true。 [ $a -le $b ] 返回 true。
布尔运算符列表:
! 非运算,表达式为 true 则返回 false,否则返回 true。 [ ! false ] 返回 true。 -o 或运算,有一个表达式为 true 则返回 true。 [ $a -lt 20 -o $b -gt 100 ] 返回 true。 -a 与运算,两个表达式都为 true 才返回 true。 [ $a -lt 20 -a $b -gt 100 ] 返回 false。
字符串运算符列表:
= 检测两个字符串是否相等,相等返回 true。[ $a = $b ] 返回 false。 != 检测两个字符串是否相等,不相等返回 true。[ $a != $b ] 返回 true。 -z 检测字符串长度是否为0,为0返回 true。[ -z $a ] 返回 false。 -n 检测字符串长度是否为0,不为0返回 true。[ -z $a ] 返回 true。 str 检测字符串是否为空,不为空返回 true。[ $a ] 返回 true。
推荐文章:
shell脚本的简单使用:三—— 之运算符使用:
https://blog.csdn.net/iteye_8560/article/details/82681032
RANDOM 随机数
在BASH环境下,这个RANDOM变量的内容是得到0~32767之间的随机数。
0~10之间的数值:
echo $(($RANDOM%10))
也可以利用 declare 宣告数值类型:
declare -i number=$RANDOM*100/32767; echo $number
强制对一个变量进行算术操作(加减)
`expr $variable - 1`
variable=3 variable=`expr $variable - 1` echo $pos
特殊字符进行转义
在Shell中利用反斜线给特殊符号进行转义【单引号和双引号会影响的使用】,下面是例子:
[root@autoCheckIn]# echo * autoCheckIn.log date.log lastDate.log test.sh [root@autoCheckIn]# echo * * [root@autoCheckIn]# echo $ $ [root@autoCheckIn]# echo $lastDate 2020-02-24 22:17 [root@autoCheckIn]# echo $lastDate $lastDate [root@autoCheckIn]#
参考文章
1、shell脚本的简单使用:三—— 之运算符使用
https://blog.csdn.net/iteye_8560/article/details/82681032
2、linux shell 在指定日期上增加或者减去一小时或者一分钟
https://blog.csdn.net/u010670689/article/details/45077177?utm_source=blogxgwz0
3、linux清空文件内容的三种方法
https://www.cnblogs.com/zqifa/p/linux-vim-4.html
祝君工作顺利,加油。
加载全部内容