Linux基本指令(下)
- 前言
- cat指令
- more命令
- less命令
- head命令
- tail命令
- wc指令
- date指令
- cal指令
- find指令
- grep指令
- top命令
- alias命令
- zip/unzip命令
前言
上一篇Linux基本指令主要讲解了关于文件操作方面的指令,接下来这一片Linux基本指令主要讲解一下关于文件内容方面的基本指令;
cat指令
语法 :cat 选项 目录
功能: 查看目标文件的内容;
常用选项:
-b :不对空行进行标行号;
-s : 压缩多余空行,对多余空行不进行输出;
-n :对所有行进行标号并输出;
实际演练:
现在我们利用命令输出num.txt文件里面的每一行的行号:
现在我们对num.txt里面的内容稍加修改,以便演示后面的选项:
我们向文件的头部加入了几行空格,但是现在我们不想让这些多余空行输出出来,我们就可以带上-s
选项:
当然我们不想对空行进行标号,可以带上选项-b
:
好,既然讲到这里了,我们现在来拓展一点小知识:
我们现在就简单的揭晓一个命令:echo "字符串"
(关于其选项,读者可以自行去查man手册),这个命令的作用呢是将字符串输出到显示器上面;
我们都知道其实命令也是一个一个可执行文件,就与我们在Window环境下生成的.exe文件是一样,简单来说我们写的程序也可叫做指令,这二者之间没有什么本质区别,好现在我们回归主题:那么命令既然是个程序的话,那么现在他的作用就是将字符串输出到显示器,在linux系统中万物皆是文件,包括我们的网卡、显示器、键盘等等,那么好既然显示器是一个文件是呗,弄我echo的本质是不是就是向一个文件里面输出数据或者叫做向这个文件里面写入数据(都是站在程序的角度来看的),那我们可不可以改变echo的输出方向呢,让他不在向显示器输出数据,而向另一个文件输出?
答案是可以的!!!
我们把这种操作叫做输出重定向,就是重新改变程序的输出方向!!!!
我们改怎么表示输出重定向?
就比如我现在想要向test.txt里面输入“测试1”,可用命令:
echo "测试1" > test.txt
,这里的>
就表示输出重定向
我们来多玩几次:
我们可以发现每次重定向输出的结构貌似都是最后一次的结果,不会保留上一次的结果,也就是说,每次重定向输出数据之前的系统会先将文件里面的内容清理干净,再输出!!!也就是覆盖式输出;我们不想覆盖掉上一次的内容怎末办?
那就用追加重定向呗!>>
这两个箭头表示追加重定向!!!
那如果我想清空该文件怎末办?
直接指向命令> test.txt
将空白输出到test.txt问价里面去:
啥内容也就没有了!!
好嘞!理解上面了,我们再回到cat命令来,既然都有输出重定向(改变输出方向),那有没有输入重定向(改变输入方向嘞)?
有的,cat命令就是先从文件里面读取数据,再打印数据的!!
如果我们不在cat后面加任何参数的话,就是默认从键盘读取数据,读到啥就回显啥:
按下Ctrl+C就可以退出了;
现在我们改变cat的输入方向:
总结一下:
1、>
表示输出重定向;
2、>>
表示追加重定向;
3、<
表示输入重定向;
more命令
虽然cat是能查看文件内容,但是太麻烦了,你想假设文件内容太长,cat一下就把你的内容刷到了末尾,你想看前面的还得往前拉,很是麻烦,为了解决这个问题,我们可以采用more命令来查看文件内容;
语法 :more 选项 文件
功能: 查看文件内容;
常用选项:
-n:代表一个具体数字,比如1、2、3、4……等,表示地一次先显示n行,按空格又显示n行,按回车显示一行;
按q退出;
实例演示:
当然这个命令查看文件内容的话,只能下翻不能回翻,很是麻烦,我们一般用它也用的比较少,我们更习惯用less;
less命令
语法 :less 选项 文件
功能: 查看文件内容;
常用选项:
-i : 忽略搜索时的大小写
-N: 显示每行的行号
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
实例演示:
head命令
语法 :head 选项 文件
功能: 查看文件的前n行(n是你带的选项决定的,如果没有n默认显示前10行);
常用选项:
-n: 查看前n行内容
实例演示:
默认显示前10行的内容:
tail命令
与head相对的就是tail命令了
语法 :tail 选项 文件
功能: 查看文件后n行的内容(n由我们所带的选项决定,默认是后10行);
常用选项:
-n : 查看后n行的内容;
-f :循环读取,j就是不断获取文件最尾部的内容,并且不断刷新,使你看到文件最新的内容;
实例演示:
默认情况:
wc指令
语法 :wc 选项 文件
功能: 输出文件行数、单词数、字节数;
常用选项:
-l : 输出文件行数
-w: 输出文件单词数
-c 输出文件字节数;
实战演练 :
假设我们现在只想统计text.txt的行数,那么我们就可以利用指令:wc -l text.txt;
我们也可以输出其单词数、字节数:
那么现在问题来了,我如果想要统计[500,520]的行数嘞?
我们虽然能一眼看出来,但是计算机不行啊,我们得告诉他具体指令他才能算出来,
怎末办?
方法1:
1、利用head指令将文本前520行数据利用重定向输出到一个叫做tmp.txt的文件里面;
2、再利用tail指令将tmp文本后20行数据利用输出重定向输出到tmp2.txt文件里面;
3、最后再利用指令wc -l tmp2.txt, 去统计tmp.txt文件里面的行数;
这样创建临时文件的方法很是麻烦;
我们现在利用第二种方法:
方法2:
利用管道的概念,我们巧妙的解决了行数问题;
那么什么是管道?
利用管道里我们就能利用命令批量化高效化的处理问题!!!可以将多个命令链接起来使用!!
我们可以将这个管道理解成一个临时的文件!!!
date指令
1、直接显示时间:命令:date
2、格式化显示时间;命令:date +"%Y-%m-%d %H-%M-%S";格式的话最好用双引号括起来,避免由空格引起的不必要的麻烦!
%Y:年份
%m:月份
%d:日
%H:小时
%M:分钟
%S:秒
3、如果我们当前时间有误,我们可以利用命令date -s "格式",来重新设置时间;
date -s//设置时间只有拥有root权限才可以;
格式如下:
"20221101",只设置年月日,具体时间会被置为00:00:00
“11:36:21”,只设置具体时间,不会对日期进行改变;
“01:01:01 2008-05-23”,这样可以设置全部时间;
"01:01:01 20080523",这样可以设置全部时间;
“2008-05-23 01:01:01”,这样可以设置全部时间;
"20080523 01:01:01",这样可以设置全部时间;
4、时间戳
date +%s//获得当前时间的时间戳;(当前时间->时间戳)
什么是时间戳?
Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。
5、时间
date -d@ 时间戳//将时间戳转换为具体时间
cal指令
cal指令也是一个关于时间的指令:
语法 :cal 选项 [月份] [年份]
功能: 查看指定年月的日历;
常用选项:
-3 : 查看当前月、上一月、下一月的日历;
-y:显示当前年份日历;
-j:显示在当年中的第几天;
实际演示:
cal 什么也不带,默认是当年当前月份的日历:
比如我们只想显示指定年月的时间,比如 2022 12月份的日历,我们就可以输入命令cal 12 2022
当我们仅输入一个数字时,默认是带的数字表示年,则cal命令会将该年的日历全部展现出来:
find指令
语法 :find 选项 目录 文件名
功能: 用于在指定路径系查找文件,并做出相应的处理(可能访问磁盘)
常用选项:
-name :
实战演练:
比如现在我们想要搜索下一num.txt文件:
当然我们可以在指定路径去查找,如果没有指定路径则默认在当前目录下查找:
指定路径查找:
当然find还有其他很多选项,这里只讲解 -name选项;
接下来咱们再讲解连个也跟查找相关的命令:
which 指令
查看指令(指令也是个可执行程序)所在路径,和取别名的情况!!
比如:
whereis 指令
搜索包含关键字的文档;
比如:
当没有搜到时,它会直接显示关键字名称:
grep指令
语法 :grep 选项 “字符串” 文件名
功能: 用于过滤出含有指定字符窜的数据;
常用选项:
-i :忽略大小写
-v : 过滤出不含指定字符串的数据;
-n :输出数据时带上行号;
实战演练:
现在我们筛选出含有字符串 “aaa“的:
再加上个忽略大小写:
输出不含“aaa”的,忽略大小写,并且顺带输出行号:
这里在介绍几个简单命令:
sort 选项 文件
对文件进行正向排序并输出,如果带上选项-r
的话就是降序:
降序:
接着我们在介绍一个去重的命令,由于上述文本不方便演示,我们接着重新写一个文本来演示:
uniq 选项 文件
对文件去重:
我们对其排序并去重:
top命令
查看Linux环境下的任务管理器:
输入q退出;
alias命令
该命令主要用来给比较复杂的命令取别名,比如:
我们给ls -a -l -1命令取别名为myls:
那么myls与ls -a -l -1具有一样的作用:
zip/unzip命令
语法 :zip 选项 压缩文件.zip 目录或文件名
功能: 将目录或文件打包压缩成一个以.zip结尾的压缩文件
常用选项:
-r :递归处理,目录下的子目录或文件
实战演练
现在我们将lesson4压缩成一个zip文件:
现在我们有了lesson4的压缩包,我们想要知道压缩成功了没有,我们就需要对其解压看看:
为此我么接着学习解压命令:
这个命令很简单:直接unzip 压缩文件.zip -d 解压到指定目录
为此我们现在来解压一下lesson4.zip
我们现在来查看一下lesson4里面有什么:
这是为什么?我不是已经成功压缩了嘛;
主要是由于我们直接压缩的话zip命令就只会压缩目录,不会压缩其里面的子目录和文件,如果我们想要连其子目录和文件一起压缩的话,我们需要带上选项-r:
接下来我们删除掉原来的压缩文件重新压缩:
我们再来查看一下文件里面的内容:
我们可以发现lesson4里面的所有文件都被压缩进来了;
那么为什么要压缩呢?
1、为了利用有限的空间装载更多的数据;
2、方便管理零散的文件,提高传输速率;