重定向
输入重定向
使用< 或者 <<来接收其他设备的内容作为输入,比如使用文件内容重定向输入到某个命令,
[root@centos7 ~]# cat < site.txt
#!/bin/sh
a= curl www.baidu.com
echo $a > site.txt
c= ls -l |grep site.txt | awk '{print $5}'
if [[ $c >100 ]]
then
else
fi
输出重定向 使用>或者>>来将标准输入或者其他地方的输入输出到非终端窗口的设备,比如将一个命令的结果输出到文件中,我们可 以通过查看文件去看对应的内容,而屏幕或终端是看不到任何内容的。
[root@centos7 ~]# ls > ls.txt
[root@centos7 ~]# cat ls.txt
1
123.txt
2000
29.txt
a
正确输出:
1> 和 1>> 跟 > 及 >>是等效的。
如:date 1> 1.txt date > 1.txt
注意:文件描述符跟重定向符号之间不能有空格,同时>代表输出重定向并且会覆盖上次的内容,>>代表输出重定向但是不会覆盖上次 内容,而是追加内容到上次文件末尾。
错误输出:
2> 和 2>>
如:ddds 2> er.txt ddds 2>> er.txt
重定向符号跟正确输出功能一致。
1、将正确的输出和错误的输出分别重定向到不同文件中
ls /home /dssssss 1> home.txt 2> dssss.txt
其中/home 目录是系统本身就存在的,而/dsssss 是不存在的目录,使用 ls 命令查看时会报错,我们通过使用不同的文件描述符和重定 向符号结合使用,让其分别输出到不同的文件中,这样可以区别查看我们的正确输出和错误输出。
2、将正确的输出和错误的输出同时重定向到一个文件中:
ls /home /dsssss 1> ls.txt 2>&1
此例子作用就是将正常的输出重定向到 ls.txt 中,然后同时使用&1 将错误的输出重定向到正确输出中。
[root@centos7 ~]# ls /home /dsss 1> ls.txt 2>&1
[root@centos7 ~]# cat ls.txt
ls: cannot access /dsss: No such file or directory
/home:
alice
bob
david
hello
john
上述第二个例子的命令可以将其简写为如下去实现,效果一致:
[root@centos7 ~]# ls /home /dsss &> ls.txt
有时候我们的命令结果并不想让其输出,而是只想让其执行,就可以将其重定向到/dev/null 设备中。 /dev/null 设备是我们的空设备或者叫做位桶,有时也称为黑洞,你可以向它输出任何东西,而不用担心会撑满它。
举例:
date > /dev/null
/dev/zero 设备是我们的 0 设备,也是我们的输入设备,无限制提供 0,用于向设备或文件中写入无限制个数的字符串 0。
举例:
dd if=/dev/zero of=/opt/test bs=10M count=10
[root@centos7 opt]# ls -lh
-rw-r--r-- 1 root root 100M Jul 14 15:47 tes
ls指令
ls 打开目录下的所有文件和目录
-a 显示所有文件包括隐藏文件
-A 显示所有文件包括隐藏文件,不包括目录.和上级目录..
-d 列出目录本身不包含目录下的内容
-h 以人类可读的方式显示文件的大小,通常结合-l 参数使用
-l 是长格式化的列表显示,包含文件的相关属性,比如权限,时间,大小,所属用户用户组等
-t 以时间顺序排序,通常最新的文件或目录排在最前面,这个参数通常跟-l 一起使用 -r 是反 向排序,通常跟-lt 结合可以实现按照时间顺序从旧到新的顺序排序,也就是说新文件在最 后面
-S 按照文件大小排序,通常也是结合-l 参数使用,默认是从大到小排序
date 命令
打印系统日期和时间
-d, --date=STRING display time described by STRING, not 'now'
显示时间根据你写的字符串
[root@centos7 opt]# date -d "2022-6-12 19:20:10"
Sun Jun 12 19:20:10 CST 2022
-s, --set=STRING set time described by STRING
设置时间根据你写的字符串
[root@centos7 opt]# date -s "2022-7-14 16:10:10"
Thu Jul 14 16:10:10 CST 2022
时间格式化
%H hour (00..23)
%Y year
%F full date; same as %Y-%m-%d
%d day of month (e.g., 01)
%I hour (01..12)
%m month (01..12)
%M minute (00..59)
%R 24-hour hour and minute; same as %H:%M
%S second (00..60)
%T time; same as %H:%M:%S
使用 date 命令实现中文习惯的时间表达如下
[root@centos7 opt]# date +"%Y-%m-%d %H:%M:%S"
2022-07-14 16:22:28
[root@centos7 opt]# date +"%F"
2022-07-14
[root@centos7 opt]# date +"%F %T"
2022-07-14 16:23:26
时间戳转换
时间戳记录的是 1970-1-1 以来到现在时间的总秒数,通常用在 linux 服务器中,如果需要将其转化成具体的年月日时间格式,可以使 用以下方法:
Convert seconds since the epoch (1970-01-01 UTC) to a date
[root@centos7 opt]# date --date='@2147483647'
Tue Jan 19 11:14:07 CST 2038