具体的用法如下:
显示当前日期和时间
date +%Y-%m-%d\ %H:%M:%S
将日期转换为时间戳
date -d "2019-05-01 00:00:00" +%s
将时间戳转换为日期
date -d @1556668800 "+%Y-%m-%d %H:%M:%S"
计算两个日期之间的时间差
#!/bin/bashd1=$(date -d "2021-12-31" +%s)
d2=$(date +%s)
diff=$((($d1-$d2)/(60*60*24)))
echo "距离2021年底还有${diff}天"
获取当前日期的年份,月份和日份
#!/bin/bashyear=`date +%Y`
month=`date +%m`
day=`date +%d`
echo “当前日期是year年{year}年year年{month}月${day}日”
获取当前时间的小时,分钟和秒钟
#!/bin/bashhour=`date +%H`
minute=`date +%M`
second=`date +%S`
echo "当前时间是${hour}时${minute}分${second}秒"
需要注意的是,在处理日期时,要根据具体的需求来调整date命令的格式和参数,才能正确地获取到所需要的时间信息。
find命令是一条强大的搜索命令,可以在指定的目录下查找符合条件的文件或目录。具体的使用方式如下:
基本用法:
选项:-name:按照文件名查找。
-type:按照文件类型查找(d:目录,f:普通文件,l:符号链接,c:字符设备,b:块设备,s:套接字)。
-user:按照文件拥有者查找。
-group:按照文件所属组查找。
-size:按照文件大小查找。可以使用“+”表示比指定大小大,使用“-”表示比指定大小小。
-mtime:按照文件修改时间查找。可以使用“+”表示比指定时间早,使用“-”表示比指定时间晚。
表达式:
-print:将查找到的文件打印出来。
-exec:将查找到的文件执行某个命令。
例如:
find . -name test.txt
find /home -user user1
find . -type f -mtime -5
find . -type f -size +10M
find . -name "test*" -exec rm -f {} \;
awk是一款文本处理工具,常用于文本数据的分析和处理。它可以对文件进行逐行处理,并且支持强大的文本处理功能,包括文本查找、替换、格式化等。下面是awk用法的详细介绍:
awk语法结构
awk是一种命令行工具,其语法结构如下:
$ awk 'pattern {action}' file
其中,
pattern表示匹配模式,可以是正则表达式或字符串等。如果该模式匹配到文件中的某一行,则执行action操作。
action表示需要执行的操作,可以是输出、替换、格式化等。
awk的常用选项
除了上述语法结构外,awk还支持以下常用选项:
-F:指定输入文件的字段分隔符。
-v:设置一个变量值。
-f:从指定文件中读取awk脚本。
-i:直接修改原始文件(需要linux或unix系统支持)。
awk的常用操作
awk支持的操作非常丰富,这里列出其中一些常用的操作:
输出:使用print或printf输出文本。
替换:使用gsub或sub替换文本。
计算:支持加减乘除等数字计算。
条件语句:包括if语句、while语句等。
循环语句:包括for语句、do-while语句等。
awk的范例用法
下面是几个awk的典型用法例子:
输出文件的每一行:awk ‘{print}’ file。
输出第一列:awk ‘{print $1}’ file。
输出指定行:awk ‘NR2{print}’ file。
计算文件总行数:awk ‘END{print NR}’ file。
列分割,输出第二列:awk -F’,’ ‘{print $2}’ file。
输出一行中所有包含指定字符串的内容:awk ‘/字符串/{print $0}’ file。
替换指定行中的字符串:awk 'NR2{gsub(/oldstring/,“newstring”);print}’ file。
总的来说,awk是一款非常强大的文本处理工具,使用广泛,可以快速地对文件进行处理和转换。
cut 命令可以用来剪切文件或标准输入中的字段,并将其写到标准输出上。以下是 cut 命令的详细用法:
命令格式
cut [选项] 文件
命令选项
选项 作用
-f 指定字段
-d 分隔符
-s 不显示没有分隔符的行
选项说明
-f 选项
-f 选项用于指定要剪切的字段。指定多个字段时,使用逗号 , 分隔。
cut -f 2,4 file.txt # 剪切文件 file.txt 中的第 2 和第 4 个字段
如果要指定一定的字段范围,可以使用 - 符号。
cut -f 2-4 file.txt # 剪切文件 file.txt 的第 2~4 个字段
-d 选项
-d 选项用于指定字段的分隔符,默认使用制表符。
cut -d , -f 2 file.txt # 剪切文件 file.txt 中以逗号分隔的第 2 个字段
-s 选项
-s 选项用于不显示没有分隔符的行,即只显示包含指定字段的行。
cut -s -f 2 file.txt # 只显示包含第 2 个字段的行
if是一种条件判断语句,在shell脚本中常常用来判断某个条件是否成立,如果成立则执行其后的语句块。if语句的一般格式如下:
if [ condition ]
then
commands
fi
其中,condition是一个测试条件,可以是比较操作符(例如“-gt”表示大于)、文件测试操作符(例如“-f”表示文件存在)、逻辑操作符(例如“&&”表示与)、字符串比较操作符(例如“=”,“!=”)等。
commands是在条件成立时需要执行的一系列指令,可以是任意的shell指令或其他脚本语言指令。这些指令可以跨越多行,并以fi作为语句块的结尾。
if语句可以与else语句同时使用,即当条件不成立时需要执行另一系列指令。其一般格式如下:
if [ condition ]
then
commands
else
commands
fi
在实际编写脚本时,也可以将多个if语句和else语句结合起来,使用elif条件进行嵌套。其一般格式如下:
if [ condition1 ]
then
commands
elif [condition2 ]
then
commands
else
commands
fi
条件语句的条件可以是真假值,数字、字符串等。同时,可以用“test”命令来进行条件测试:
if test -f file.txt
then
commands
fi
实际上test命令就是[ ]命令的另一种写法。
除了使用[ ]和test命令,还可以使用其他管道和命令来进行条件判断。例如,判断某个命令的返回状态:
if grep "hello" file.txt
then
commands
fi
此处,如果grep命令在file.txt中找到了“hello”,则会返回0,条件成立,执行后续命令。
if的参数:
在Shell中使用if语句时,有以下几种参数:
在Shell中使用if语句时,有以下几种参数:[ expression ]:方括号内的表达式返回0(真)或1(假)。test expression:test命令的返回值也是0或1。[[ expression ]]:双方括号内支持更多的比较运算符(如<,>,=等)。(( expression )):双圆括号主要用于整数比较,支持算术操作符(如+,-等)。-n string:字符串不为空时返回真。-z string:字符串为空时返回真。-e file:文件存在时返回真,通常用于判断文件是否存在。-f file:文件存在且为普通文件时返回真。-d file:文件存在且为目录时返回真。-r file:文件存在且可读时返回真。-w file:文件存在且可写时返回真。-x file:文件存在且可执行时返回真。-a file:文件存在时返回真(同-e参数)。-b file:文件存在且为块设备文件时返回真。-c file:文件存在且为字符设备文件时返回真。-s file:文件存在且大小不为0时返回真。file1 -nt file2:如果file1比file2新,则返回真。file1 -ot file2:如果file1比file2旧,则返回真。expression1 -a expression2:返回真当且仅当expression1和expression2都为真。expression1 -o expression2:返回真当且仅当expression1或expression2至少有一个为真。
sort命令是一个强大的文本排序工具。它可以将文本文件的内容按照指定的顺序排序。
sort命令的基本语法为:
sort [options] [file]
其中,options是sort命令的选项,可以用来指定排序方式、忽略大小写、按照数字大小排序等。file是要排序的文本文件。
下面是sort命令的一些常用选项:
-r:倒序排序。
-n:按照数字大小排序。
-f:忽略大小写。
-u:去除重复行。
-k n:按照第n列排序。
-t c:指定排序字段的分隔符为c。
例如,要按照数字大小排序一个文件file.txt,可以使用以下命令:
sort -n file.txt
如果需要使用默认的升序排序方式,则不需要指定-n选项。
如果想要去除重复行,则可以使用以下命令:
sort -u file.txt
若文件中的内容需要按第2列的内容进行排序,可以使用以下命令:
sort -k 2 file.txt
如果字段之间的分隔符不是默认的空格,可以使用-t选项指定分隔符,例如:
sort -t ',' -k 3 file.csv
sort命令还可以从标准输入(stdin)中读取数据。例如,在命令行中输入以下命令:
echo "b\na\nc" | sort
这条命令会将字符b、a和c按照字母顺序排序,并输出排序后的结果。
总结一下,sort命令是所学shell命令中比较常用也非常实用的一个命令,它可以通过选项的组合来满足不同场景下的排序需求。