目录
管道符号:"|"。
管道是把一个程序的输出直接连接到另一个程序的输入,通常用来连接两个进程,它是一种抽象的感念,我们可将其想象为一种普通的管道,先从一端流入,然后再从一端输出,即将前面的命令作为流水流入后面的指令。同理,在计算机中,先将一种"流"从管道的一端流入,然后再流入另一端,作为输入,这里我们先了解这么多即可,后面的文章会详细介绍。
接下来我来用实例跟大家演示一下:
时间戳是一种时间的感念,是从1970年1月1日上午8点开始所经过的时间,其中不考虑闰秒。
由于世界各处的时间都不太统一,在运用时也会很大误差,所以,时间戳是我们所用的同一时间概念,而且,由以上感念可知,时间戳随时随地都在不断变化,我们可利用其特点来进行设置数据或查看系统有关的时间感念。此概念非常重要,后面将会不断运用。
要提醒的是以下的实操我用的系统版本是CentOS 7.9 64位,不同版本的系统有极少命令可能有些不同,但原理和大多数命令都相同。
用法:
date ——显示当前自己机器的时间
date 指定格式显示时间: date +%Y:%m:%d ——显示当前的"年:月:日"。
注意:在显示格式方面,使用者可以设定想要设定的格式,格式设定为一个加号"+"后多个标记的内容,其中常用的时间标记有以下:
%H:小时
%M:分钟
%S:秒
%X:相当于%H:%M:%S
%d:日
%m:月份
%Y:完整的年份
%F:相当于%Y-%m-%d
具体运用实例如下:
data指令不光可以显示自己当前机器的时间,还可以用来显示时间戳。
语法:
date +%s ——显示当前的时间戳
date -d @n ——显示时间戳为n时对应当下的时间。例:当n = 0时显示时间戳的起始时间,即1970年1月1日上午8点。
date [格式] -d @n 或 date -d @n [格式] ——按照指定格式来显示时间戳为n时对应当下的时间。
cal指令于date不同,cal用于查看日历,当我们要查看具体的时间时要用date,要查看日历时用cal。
语法:
cal ——显示当前月份的日历
cal [年份] ——将指定年份的全部日历
which 指令较为简单,它是用来查找指令所在的途径(每个命令都在指定的目录中)
语法:which [指令] ——直接显示指令所在的路径和此命令的命名操作,当指令没有命名操作时只会显示所在的路径。
find指令用来查找指定目录下的指定文件的路径,与which不同的是find可以查找所有文件的途径,而which只能用来查找指令文件的途径。
语法:
find [目录] -name 文件 ——查找该目录下所有指定文件的所有途径(因为文件名在不同目录下可以重复)
这里要说明的是find是在硬盘上遍历查找,而硬盘上的文件巨多,因此查找起来非常消耗硬盘上的资源,效率也非常低,因此要慎重运用find查找文件。
whereis也是用于查找文件路径,与find不同的是,wherels是从系统下的数据库中查找文件路径,因此,whereis查找文件的速度要比find更快。但是系统的数据库也不是实时更新,不在数据库中的文件我们是查找不到的,所以,wherels查找文件路径也有缺陷。
语法:
wherels 文件 ——从数据库中查找文件的路径
功能:在指定文件中搜索字符串,将找到指定字符串的行打印出来
例如:grep 'A' test.txt ——查找文件test.txt的每一行,将每一行含有字符'A'的显示出来。
语法:grep [选项] 要搜索指定的字符串 文件
常用选项:
-i ——忽略字符串的大小写,将大小写视为相同
-n ——在搜索的基础上顺便输出行号
-v ——反向选择,即显示出没有"搜索字符串"内容的那一行
不用选项的命令图
加入选项的命令图
运用管道的grep
grep也可通过管道来查找目录下指定名称的文件,如下:
这个指令我们只需初步了解作用即可。sort是将文件中的行内容按照ASCII码值的大小进行排序,然后一行一行的显示出来。其中,默认排升序。
功能:删除文件中相邻行重复的数据。
语法; uniq [选项] [文件]
常用选项:
-d:将文件中相邻重复行的数据显示出来,有多行重复时只显示一行。
-c:打印每行数据出现的次数,注意,这也是只针对相邻非空数据
-u:此选项的作用与uniq没有选项的作用基本相同,与uniq普通使用的区别很细微,对此我们可忽略不计。
因为此命令删除重复行的数据有缺陷,所以,当要删除文件中所有行中重复的数据时要先用sort指令进行排序,此时重复行的数据将相邻,再用此命令进行删除,即可删除文件中所有重复行的数据。
uniq的运用图如下:
uniq与uniq -u的使用
uniq -d与uniq -c的运用
uniq与管道的结合运用