zl程序教程

您现在的位置是:首页 >  其他

当前栏目

【Linux操作系统】理论知识和常用指令(二)

2023-02-25 18:20:11 时间

首先我想和大家说的是:指令的学习或许很简单,很枯燥,但是通过理论和实践去验证我们的指令的作用,形成指令的连贯性和逻辑性,也是我们前期学习Linux操作系统的重点。以及我们学完Linux的指令和系统后,学习网络的时候会变得很有意思的,敬请期待吧!

回顾一下我们上次讲解的内容:

目录

1.剪切&重命名命令 mv

2.查看文件任意位置的内容(重点)

2-1用shell脚本创建一个长文本

 2-2查看文件内容 cat

 2-3 拒绝刷屏,只下翻模式&查看某行 more&/行号(推荐less)

2-4 上下翻&查看某行  less&/行号

 3.查看文件内容的任意位置

3-1 查看头部

 3-2 查看尾部

 3-3 echo&输出重定向> &追加重定向>>

3-4 cat & 输入重定向< 

3-5 查看中间

4.查看日期


上次我们说到Linux下的复制命令,那么Linux中肯定也有类似windows下的剪切命令~~

1.剪切&重命名命令 mv

说明:

全称:move 1.对于普通文件的作用:将普通文件剪切到其他位置或工作目录下的其他目录,如果mv 普通文件  普通文件就是重命名; 举例:如果 mv test1.c  ../ 就是将普通文件test1.c剪切到上级目录            如果 mv test1.c  p1 就是将普通文件test1.c剪切到当前工作目录下的p1目录中

           如果 mv test1.c test2.c 就是价格普通文件test1.c重命名为test2.c

2.对于目录的作用:将目录剪切到其他位置或者工作目录下的其他目录,如果mv 目录  工作目录下不存在的目录就是重命名。             如果 mv dir1 ../ 就是将目录剪切到上级目录             如果 mv dir1 p1(dir2在工作目录下已经存在)就是将dir1剪切到dir2目录下

            如果 mv dir1 dir2(dir2在工作目录下不存在) 就是将dir1重命名为dir2

2.查看文件任意位置的内容(重点)

2-1用shell脚本创建一个长文本

//shell脚本:
count=0;while [ $count -le 1000 ]; do echo "hello ${count}"; let count++; done > file.txt

 让我们看看file.txt文件里的内容:

 2-2查看文件内容 cat

看过上一篇博客的你已经知道:nano可以打开并且编辑文件,但是为什么还要有cat?

因为通过nano来查看文件内容是需要打开nano编辑器的,并且是以一种交互的方式可修改file.txt,

在一些场景下,我们只查看文件内容而不需要修改文件内容,这时就需要使用cat指令。

说明:

作用:查看文件内容

//查看普通文件
cat filename

//查看普通文件并 带上行号 -n
cat -n filename
//逆序输出文本 tac 
tac test.c

//正序输出文本 cat
cat test.c

 2-3 拒绝刷屏,只下翻模式&查看某行 more&/行号(推荐less)

当我们输入cat file.txt指令时,我们会发现一个现象:hello  $内容一下就刷屏到了文件的末尾

如果我没有鼠标的话,没法鼠标滚轮上滑查看文本内容,那不是就寄了吗?

也就是如果我不想让文本内容一打开就刷屏到末尾,而是根据我的需求从0到1000,可控制的下翻,我该怎么做呐?

//more命令:分批查看
标准:more filename
举例:more file.txt

 这时--More--(2%)就提示你了,当前已经展示了总文本内容百分比

但是唯一不足的就是这时只能用键盘的Enter下翻,没有“回头路”了

//刚开始显示文本内容范围大小可以使用 选项"-具体数字"来指定
标准: more -具体数字 filename
举例:more -5        filename

PS:

  1. 这里的more -具体数字是显示的行数,cat -n是显示所有行号,不要混淆
  2. 这里我们依然是按大写或者小写的Q/q键来退出文本内容窗口。

我还就傲娇了,非要查看第100行的内容,我们可以先用more file.txt或带上选项,用适合的分批查看,然后使用:

标准:/要查看的第几行的行数
举例:/200

 这样就能直接跳过不需要的文本内容,直接定位到某一行进行查看。

2-4 上下翻&查看某行  less&/行号

less的语法和more类似。 唯一不同的是:less在Enter支持上翻的基础上,还加上了键盘上下键来"回头""前进"

 3.查看文件内容的任意位置

3-1 查看头部

//查看文件内容的最前面指定的行数内容
标准:head -行数 filename
举例:head -10   file.txt

 3-2 查看尾部

//查看文件内容的最后面指定的行数内容
标准:tail -行数 filename
举例:tail -5    file.txt

 3-3 echo&输出重定向> &追加重定向>>

//空行输出
echo 

//将字符串输出到标准输出(显示器)
标准:echo 字符串
举例:echo "hello song"

输出重定向:

//将字符串写入到普通文件中
PS:如果普通文件原先不存在,会自动创建名为filename的文件
标准:echo 字符串 > 普通文件
举例:echo  "hello song" > test.txt

//echo原本将字符串默认输出到标准输出(显示器)中
//输出重定向写入到了普通文件中,这就是重定向。

 我们如果再输出将字符串"AAAA"输出重定向到test.txt文件中,你会发现,新重定向的字符串"AAAA"将原来的字符串"hello song"给覆盖掉了,也就是说: 

问题总结:使用 "echo 字符串>文件名"命令会将文件清空后再写入。 新需求:如果我们不想清空后再写入,而是直接写入,我们该怎么做呐?

//两个大括号完成输出重定向(更准确来说是追加重定向)
//追加"BBBB"到"AAAA"末尾
echo "BBBB">>test.txt

PS:"BBBB">>test.txt "BBBB"与>>和test.txt三者之间空格有无均可,echo "BBBB" >> test.txt
     但是>>之间是不能有空格的,

3-4 cat & 输入重定向< 

 预告:后面我们讲到IO文件的时候,会解密文件的本质以及传说的LInux中一切皆文件

3-5 查看中间

如果我想查看区间行第10行--第20行,我该怎么做呐?

//临时文件版本
head -20 file.txt > temp.txt

tail -10 temp.txt

总结:先head并且重定向,将前20行写入到一个临时文件中,然后tail提取临时文件中的后10行,也就等同于拿到了第10行--第20行。

1.首先我们知道head -20 file.txt
  是将文件file.txt中的前20行打印到显示器
2.但是我们可以通过我们3-3中讲的用输出重定向 head -20 file.txt > temp.txt
  把前20行临时保存到一个临时文件中temp.txt(不存在会自动创建)
  这时我们如果cat temp.txt就能够得以验证
3.然后我们通过tail -10 temp.txt就能拿到第10行--第20行的文本内容了

 那么我们能不能不创建中间的那个temp.txt临时文件呐?

 答案是可以的~~

//管道版本:

head -20 file.txt | tail -10

4.查看日期

//显示:格林尼治时间显示格式
date 

//显示:年月日时分秒显示格式
date +%Y/%m/%d/%H/%M/%S

//%F就相当于%Y-%m-%d
date +%F

 时间戳:

时间戳定义:从1970/01/01/00/00累计到现在的秒数

时间戳转化:

1.网页在线转换工具

 2.Linux指令

date +%F-%H-%M-%S -d @时间戳

时间戳有什么用呐? 答案:一般在我们日志中,会带上时间信息,这个时间信息如果是给程序员看,当然优先选择年月日时分秒的格式,但是如果给程序看的话,优先选择的是时间戳。

千年虫问题由于时间戳的位数限制,当我们提出时间戳的概念的时候,时间戳的位数就写死了,这样的话,随着时间的推移,时间戳就会导致溢出,时间就会一片混乱,会给社会和经济造成严重的影响。