目录
前言:
本文是Linux基本指令的最后一节了,涉及的指令较多~
有了前文的铺垫,我们知道指令的最基本的知识点是指令就是可执行程序,知道这个就够了,其次,我们在这里引入一个思想,Linux中一切皆文件,即便是显示器,也是文件,至于为什么,看下文咯。
基本指令
1.1 有关重定向
我们之前创建文件都是mkdir创建目录,touch创建文件,今天引入的第一个指令,echo:
第一个使用:
第二个使用:
我们从这两个使用入手,第一个,前言提到了在Linux中一切皆为文件,所以第一个echo 输入Hello Linux到显示器这个文件里面,所以指令结束就在显示器上输入了该字符串。
那么我们如何证明显示器也是个文件呢?
我们可以在选项卡那里复制一个当前选项卡:
然后我们就可以拥有两个窗口了:
我们在第一个窗口输入 ls /dev/pts -l:
这是没有加入第二个文件的时候,我们得到了如上结果,加入了第二个窗口,我们就可以得到:
好像猜想快成立了?
那么我们直接echo到0号文件,看能不能打印东西:
那么我们在0号窗口往1号窗口打印呢?
当我们在0号窗口输入了,0号窗口是没有反应的,1号有反应,此时证明就完成了。
那么证明的时候用到了 > 符号,这个的意思就是 输出重定向。
重定向好理解吧?为什么我们直接输入echo "xxx"就能直接在该窗口打印东西呢,因为默认的输出方向是显示器,那么我们重定向到某个文件,都可以执行该操作,所以我们重定向到第二个显示器,完成了打印。
那么echo是对文件起作用的,我们不妨试试:
发现文本内容发生了改变,这是因为输出重定向默认的是覆盖写,就会C语言的文本操作是一样的,打开了关闭之后,没有就创建文件,有文件可以直接覆盖写,所以这里的用处还有:
但是!我们还可以更简单一点:
这是输出重定向,但是有一天我不想覆盖写,我想追加写怎么办?这时候就需要>>,这时候就可以追加,而不是覆盖:
默认也可以创建,但是加了一个空行,后面继续追加。这是输出重定向。
同理,有输出就有输入,我们现在来看看输入重定向:
cat后面可以直接空行,代表输入从键盘里面读取,所以我输入什么它就打印什么,重定向就是加<:
当然可以不加,但是底层原理是不一样的,这里先不做了解,有关重定向介绍这么多。
1.2 有关文件查看
为了便于观察,我们先来创建一大堆的fake文件:
如图 请问你敢使用cat来看文件吗?
敢就瞬间刷屏到10000,所以使用cat的时候有一个很重要的点就是,数据容易被刷过去,那么为了支持更好的查看大文件,我们可以使用more 或者是 less:
默认到了22个文件,如果想要继续查看就回车逐行查看,这里less就比较香了,less支持数字键盘的上下查看,但是它们的本质都是铺满屏幕,然后逐行查看,实际还是有点麻烦,当然了,也有部分子指令,比如-n打印行号等。
在Linux中还有指令,例如head tail同样是查看文件的,默认是10行,我们也可以指定行数:
tail同理:
那么问题来了,我们如何查看文本中间的内容呢?有一种复杂粗暴的方法是从该文件拷贝多少多少行到tmp文件,然后在tmp文件使用head 或者是 tail,那可就太麻烦了,我们不妨使用|。这个东西的名字叫做管道,到后面会详细介绍,这里我们可以理解为同时使用两条指令:
可以理解为head -8010 big.txt 是管道的入口,tail是管道的出口,出口就像是进行数据传输的一样,后面会详细介绍。
查看文本数据我们还可以了解一个指令,叫做wc,用来统计文本行数的:
了解一下就可以了。
1.3 有关时间戳和日志
在Linux中有两个十分重要的概念,一个是时间,一个是日志,时间的重要性不言而喻,日志的重要性可能很多人没有概念,日记知道吧,我们不妨把日志理解为日记,当程序报错的时候,我们可以通过日志来查看最近一次程序的各种结果啊什么的,那么我们今天只是简单看看日志,主要内容还是时间:
这些是日志的一部分,有日志肯定有日历啦,日历的查看使用cal指令,子指令只有3个:
-3 显示系统前一个月,当前月,下一个月的月历
-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)y 显示当前年份的日历 。
主要内容是时间,相信大家有编程语言的基础,自然知道时间戳是怎么来的,时间戳来源于格林威治,一群大佬开会,说要统一一下时间,于是在格林威治的1970年1月1日00:00开始计算时间,我们现在的时间当时的时间,对应的秒数就是时间戳,那么我们如何查看时间呢?
date 指定格式显示时间: date +%Y:%m:%d
更多格式如下:
无非就是记住每个单位对应的首字符即可。
当然了,还有简写,一个是F等同于年月日,一个是X等同于时分秒。
我们有了时间戳的概念,时间如何转换为时间戳呢?或相反。
同样用到指令:
date +%s是时间转换为时间戳,时间戳转换为时间的指令如下:
1嘛,就是格林威治时间的第一秒。
1.4 有关文件查找和压缩
文件查找使用到的指令第一个是find,和which不同的是find是根据名字来找,并且一次查找之后,系统会存储结果,进行第二次相同的查找就会快很多了:
但是呢,文件量一多,find的遍历是比较漫长的,基于系统的树形结构开始查找的。
还有一种是grep,文本过滤器,可以正向过滤也可以反向过滤:
就像这样。
正向过滤是 -n 反向过滤式-v -n输出行号,就留个看官自己实验了。
那么文件的查找 创建 以及重定向等问题已经介绍完了,文件如何压缩呢?
压缩使用的指令式zip或者tar,压缩的形式不同产生的后缀就不同。
首先我们思考,为什么文件需要压缩?
1 因为压缩之后体积缩小 下载速率变快 2 压缩之后不会轻易丢失文件 。
打包指令咱们这里就不挖坑了,直接压缩的话,会导致只压缩了一个目录,所以我们需要递归压缩:
这样就压缩成功了,我们接下来试试解压:
unzip -d 目录 代表解压到某个特定的目录里面。
然后是tar压缩,我们这里理解多个子指令,-cvzf,-xvzf,c是创建 x的解压,v是压缩的时候显示文件,z是检查同时具有 gzip 的属性?先不管。
解压还要加-C。
我们先来试试压缩:
解压同理:
文件的部分操作暂时介绍这么多,然后呢,有几个有意思的指令介绍给大家:
1 bc指令,Linux中的计算器:
没什么用就是哈哈哈
2 看操作系统内核版本uname -r
感谢阅读!