Shell常用功能汇总

Shell常用功能汇总

时间

# 如果是输入的日期按照取输入日期;如果没输入日期取当前时间
if [ -n "$1" ]; then
  do_date=$1
else
  do_date=$(date "+%Y%m%d" -d -1day)
fi



# 减去10天,如果用负数是往前数
$(date -d "10 day ago 20150401" +%Y%m%d)

时间转换

入参出参用法说明
String(Date)Long$(date -d "2022-12-12 10:10:10" +%s)
-d 参数表示显示指定的字符串所表示的时间
+%s 表示输出10位数的时间戳
String(Date):时间字符串(年月日:yyyy-MM-dd,yyyy/MM/dd, yyyyMMdd. 时分秒:HH:mm:ss)
Long:10位数的时间戳
举例:(2022-12-12 10:10:10) -> (1670811010)
LongString(Date)$(date -d @1670811010 "+%Y-%m-%d %H:%M:%S")Long:10位数的时间戳
String(Date):时间字符串
举例:(1670811010)->(2022-12-12 10:10:10)
LongDate$(date -d @1670811010)Long:10位数的时间戳
Date:时间
举例:(1670811010)->(Mon Dec 12 10:10:10 CST 2022)

当前时间加减时间

# 当前时间进行加减时间
$(date -d "${数字} ${时间单位}" "+${数据转换的格式}")
# ${数字}:
#		加减时间的数(加:用正数, 减:用负数)
# ${时间单位}:
#		年月日时分秒:year, month, day, hour, minute, second
# ${数据转换的格式}:
#		%Y %m %d %H %M %S :(年月日时分秒:String(Date):时间字符串)
#		%s :(Long:10位数的时间戳)

# 例子:当前时间的 前1天,时间格式 %Y-%m-%d %H:%M:%S (2022-12-11 15:13:38)
$(date -d "-1 day" "+%Y-%m-%d %H:%M:%S")
# 例子:当前时间的 前1天,时间格式:%s: 10位数的时间戳 (1670743364)
$(date -d "-1 day" "+%s")

指定时间加减时间

# 按照指定时间加减时间
$(date -d"${数字} ${时间单位} ago ${时间字符串}" "+${数据转换的格式}")
# ${数字}:
#		加减时间的数(减:用正数, 加:用负数)
# ${时间单位}:
#		年月日时分秒:year, month, day, hour, minute, second
# ${时间字符串}:
#		年月日:%Y-%m-%d,%Y/%m/%d, %Y%m%d. 时分秒:%H:%M:%S(例如:%Y-%m-%d %H:%M:%S)
# ${数据转换的格式}:
#		%Y %m %d %H %M %S :(年月日时分秒:String(Date):时间字符串)
#		%s :(Long:10位数的时间戳)

# 例子:2015-04-01往后10天,如果用负数是往后,时间格式 %Y-%m-%d %H:%M:%S (2015-04-11 00:00:00)
$(date -d"-10 day ago 2015-04-01" "+%Y-%m-%d %H:%M:%S")
# 例子:2015-04-01往后10天,如果用负数是往后,时间格式:%s: 10位数的时间戳 (1428681600)
$(date -d"-10 day ago 2015-04-01" "+%s")



获取当前应用的pid值

$(ps -ef | grep 应用名称 | grep -v grep | awk '{print $2}')

# 获取nginx的pid
$(ps -ef | grep nginx | grep -v grep | awk '{print $2}')



获取端口信息

# 获取 进程id
ps -ef | grep 进程名称

# 根据 进程id 获取 端口号
netstat -nap | grep 进程id

# 根据 端口号 获取 进程id
netstat -tunlp | grep 端口号



删除历史目录或文件

# ${path}目录下保留三天历史数据(目录)
find ${path} -type d -mtime +3 | xargs rm -rf

# ${path}目录下保留三天历史数据(文件)
find ${path} -type f -mtime +3 | xargs rm -rf



awk

选项参数功能
-F指定输入文件折分隔符
-v赋值一个用户定义变量
# 举例:按照 : 符号分割,获取第一个数据(最终打印:fff)
echo "fff:123" | awk -F: '{print $1}'

# 举例:按照 : 符号分割,获取 第1,第5 个数据,中间用 , 分割(最终打印:fff,3)
echo "fff:123:1:2:3:4" | awk -F: '{print $1","$5}'



cut

选项参数功能
-f列号,提取第几列
-d分隔符,按照指定分隔符分割列
# 举例:按照 : 符号分割,获取第一个数据(最终打印:fff)
echo "fff:123" | cut -d: -f 1

# 举例:按照 : 符号分割,获取 第1,第2,第3,第4 个数据(最终打印:fff:123:1:2)
echo "fff:123:1:2:3:4" | cut -d: -f 1,2,3,4



sed

选项参数说明

选项参数功能
-e直接在指令列模式上进行sed的动作编辑。

命令功能描述

命令功能描述
a新增,a的后面可以接字串,在下一行出现
d删除
s查找并替换
##### 新增(在第一行后面添加 【zzz:222】)
echo "fff:111" | sed -e '1a zzz:222'
# 最终打印
fff:111
zzz:222


##### 删除(删除一行数据中带有【fff】的行)
echo "fff:111" | sed '/fff/d'
# 最终打印:【fff:111】删掉了


##### 查找替换(将所有的【f】替换成【z】)
echo "fff:111" | sed 's/f/z/g'
# 最终打印
zzz:111



sort

选项说明
-n依照数值的大小排序
-r以相反的顺序来排序
-t设置排序时所用的分隔字符
-k指定需要排序的列
##### 按照【:】分割后的第三列倒序排序
sort -t : -nrk 3  sort.txt
# 初始数据:cat sort.txt
bb:40:5.4
bd:20:4.2
xz:50:2.3
cls:10:3.5
ss:30:1.6
# sort后:
bb:40:5.4
bd:20:4.2
cls:10:3.5
xz:50:2.3
ss:30:1.6
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值