首先我想和大家说的是:指令的学习或许很简单,很枯燥,但是通过理论和实践去验证我们的指令的作用,形成指令的连贯性和逻辑性,也是我们前期学习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下的剪切命令~~
说明:
全称: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
//shell脚本:
count=0;while [ $count -le 1000 ]; do echo "hello ${count}"; let count++; done > file.txt
让我们看看file.txt文件里的内容:
看过上一篇博客的你已经知道:nano可以打开并且编辑文件,但是为什么还要有cat?
因为通过nano来查看文件内容是需要打开nano编辑器的,并且是以一种交互的方式可修改file.txt,
在一些场景下,我们只查看文件内容而不需要修改文件内容,这时就需要使用cat指令。
说明:
作用:查看文件内容
//查看普通文件
cat filename
//查看普通文件并 带上行号 -n
cat -n filename
//逆序输出文本 tac
tac test.c
//正序输出文本 cat
cat test.c
当我们输入cat file.txt指令时,我们会发现一个现象:hello $内容一下就刷屏到了文件的末尾
如果我没有鼠标的话,没法鼠标滚轮上滑查看文本内容,那不是就寄了吗?
也就是如果我不想让文本内容一打开就刷屏到末尾,而是根据我的需求从0到1000,可控制的下翻,我该怎么做呐?
//more命令:分批查看
标准:more filename
举例:more file.txt
这时--More--(2%)就提示你了,当前已经展示了总文本内容百分比
但是唯一不足的就是这时只能用键盘的Enter下翻,没有“回头路”了
//刚开始显示文本内容范围大小可以使用 选项"-具体数字"来指定
标准: more -具体数字 filename
举例:more -5 filename
PS:
我还就傲娇了,非要查看第100行的内容,我们可以先用more file.txt或带上选项,用适合的分批查看,然后使用:
标准:/要查看的第几行的行数
举例:/200
这样就能直接跳过不需要的文本内容,直接定位到某一行进行查看。
less的语法和more类似。 唯一不同的是:less在Enter支持上翻的基础上,还加上了键盘上下键来"回头""前进"
//查看文件内容的最前面指定的行数内容
标准:head -行数 filename
举例:head -10 file.txt
//查看文件内容的最后面指定的行数内容
标准:tail -行数 filename
举例:tail -5 file.txt
//空行输出
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
但是>>之间是不能有空格的,
预告:后面我们讲到IO文件的时候,会解密文件的本质以及传说的LInux中一切皆文件
如果我想查看区间行第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
//显示:格林尼治时间显示格式
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 @时间戳
时间戳有什么用呐? 答案:一般在我们日志中,会带上时间信息,这个时间信息如果是给程序员看,当然优先选择年月日时分秒的格式,但是如果给程序看的话,优先选择的是时间戳。
千年虫问题:由于时间戳的位数限制,当我们提出时间戳的概念的时候,时间戳的位数就写死了,这样的话,随着时间的推移,时间戳就会导致溢出,时间就会一片混乱,会给社会和经济造成严重的影响。