一.echo指令
echo的作用是显式文本内容
#echo ‘字符串’
#echo “字符串”
echo会将后面的内容当作字符串直接打印在屏幕上,后面的内容需要用单引号或者双引号括起来
注意:echo会自动在字符串后面加上一个换行符。
可以与printf进行对比:
printf不会自动加换行符,我们可以自己加上
二.mv指令
mv是move的缩写,作用是移动文件/目录到指定目录中,或者文件和目录的重命名
mv src dst
mv srcfile dstdir //src是文件/目录,dst是目录,则现在是移动文件
mv srcfile dstfile //src和dst都是文件,且dst文件不存在,则现在是文件重命名
mv srcdir dstdir //src和dst都是目录,且dst目录不存在,则现在是目录重命名
注意:mv改成move也同样成立
在上图中,当前目录下有一个123.txt的普通文件,我们利用mv指令,将该文件重命名为xsc.txt。这里之所以是文件重命名是因为前后两者都是文件且后者不存在。
在上图中,该目录下有一个dir1子目录,我们借助mv指令,将dir1目录重命名为111.
在上图中,111是一个目录,testfile也是一个目录,我们这时再使用mv指令,就是将111目录移动到了testfile目录中。
三.在Linux操作系统中,一切皆文件
在任何系统中,不管是我们自己创建的文件还是显示器,键盘,等等都是文件。
在C/C++中,print/cout它们是将数据写入到显示器文件中,这时数据就能在显示器显式了。scanf/cin它们就是从键盘文件中读取文件,所以它们的输入输出操作其实就是文件操作。
但是我们在之前的学习中知道,当我们要进行文件操作时,首先要打开文件,然后再进行文件操作,再关闭文件。
那为什么我们没有打开键盘文件和显示器文件就可以使用呢?
其实系统在我们刚开始的时候就替我们打开了一些文件,这些文件是比较常用的,不需要自己打开,当遇到其他文件操作时,我们就需要自己打开了。这就像在C语言中,编译器默认打开了stdin、stdout、stderr这三个文件。
3.1输出重定向
我们刚才的echo是向屏幕上打印字符串,其实它是先将字符串写入到了显示器文件中,再由显示器文件将其打印到屏幕上。
所以echo默认就是将数据写入到屏幕文件中。
我们可以利用>(大于号)进行输出重定向,即echo本来是输出到显示器文件中,我们可以改变其默认的输出位置为我们指定的文件:
echo "字符串" > dstfile
我们看到,当我们直接使用echo时,就会将字符串打印到屏幕上。但是当我们使用输出重定向时,它就不会再向屏幕上打印内容了,而是将数据写入到了我们指定的文件。
我们来看一下该文件的内容:
我们看到,字符串确实被写到了该文件中。我们可以借助图来理解输出重定向:
之所以会这样是因为我们利用>(大于号)改变了echo的默认输出文件。该输出重定向有两个特性:
- 若后续文件不存在,则以该文件名新建文件,然后写入
- 若文件存在,先清空文件内容,然后写入
验证1:
该目录下本来没有123.txt文件,我们借助输出重定向就可以创建一个新文件,并写入数据。
验证2:
该文件我们向里面写入了hello world,然后我们在利用输出重定向时,就会先将里面的数据清空,然后再写入。
那我们想一下:我们用echo是默认向文件里面写数据,那么我们可不可以不写呢?直接进行重定向操作呢?
#> dstfile
从图中我们就可以得出结论,我们可以直接进行重定向操作,所以我们就可以直接借助>(大于号)来创建文件。
3.2追加重定向
输出重定向会将文件内容清空再写入,那如果我们不想让其清空,而是追加呢?
#echo "hello world" >> dstfile
利用>>就可以实现追加的操作: 追加重定向时文件的内容就不会被清空了,而是直接向文件中追加。
四.文件类型
以下面的开头为区分文件的依据:
- -:普通文件,例如:.txt、.c、.cpp、音频、视频、可执行等等
- d:目录文件
- c:字符文件,键盘、显示器,终端,输入的数据具有顺序性
- b:块设备文件,磁盘
- l:连接文件
- p:管道文件
需要注意的是:普通文件不看后缀来区分,而是靠开头的-,但是这是对于系统来说的,对于其他工具来说,它就要看后缀来操作其对应的普通文件。
五.cat指令
cat指令的功能是:链接文件并打印文件内容到标准输出(屏幕)。 简单来说就是将文件内容打印到屏幕上,但是cat只适合查看短文件。
cat指令还有一个有用的选项-n,效果是显示行号
tac指令:tac的功能是倒着打印文件内容
5.1输入重定向
输入重定向的符号为<(小于号):
#cat < dstfile
它的解释为:将dstfile打开,作为cat的输入,如果dstfile为空,则以标准输入为cat的输入。
自己理解为:cat也是一个文件,输入重定向就是将dst打开写入到cat文件中,如果没有dst,则cat就从标准输入获取数据即键盘文件。
当从标准输入获取数据时,我们每输入一次,就会回显一次。
那么有个问题:
#cat 123.txt
#cat < 123.txt
这两个的结果好像是一样的,那么二者有没有区别?
答案是有的,但是目前还无法理解,我们可以先记住二者有区别。
六.more指令
more指令的功能类似于cat,也是查看文件。more更适合查看那些大文件。
在软件领域、大型项目等都有日志,日志就是一个的文件,我们此时就可以借助more来查看该日志文件。
# more /var/log/messages
//按q退出more
当我们用more查看日志时或者大文件时,就会自动展开一页,然后按enter可以往下翻。但是当你把某一条翻过去之后想在返回去看是不可以的,more只能往下翻,不能往回翻。
more还有搜索功能,当我们进入more之后,输入/以及要搜索的字符串,more就会跳转到开头含有该字符串的位置
七.less指令
less的功能类似于more,但是比more更强大,less可以随意浏览文件,而more只能往下翻,不能往上。而且less在查看之前不会加载整个文件
- less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大
- less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看
- 但若使用了 less 时,就可以使用 [pageup][pagedown] 等按键的功能来往前往后翻看文件,更容易用 来查看一个文件的内容!
- 除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。
#less dstfile
//按q退出
//搜索前要输入/
我们在使用less时可以利用上下键来实现随意查看,也可以进行搜索,方式与more的搜索方式相同:在文件中搜索开头含指定字符串的信息并跳转到该信息处,并且会高亮提示。按enter可以跳到下一个含有该字符串开头的位置。
八.head指令
head指令就是显式文件的前一部分/指定行数到标准输出,默认打印该文件的前10行到标准输出。
#head -[行号] dstfile
//行号可输可不输
九.tail指令
tail指令和head指令是一对兄弟指令,head是查看文件的前10行,tail默认查看文件的后10行。
#tail -[行号] dstfile
//行号可输可不输
十.组合指令
我们前面已经了解了那么多的查看文件的指令,但还是不够实用,如果我要查看文件的500~510行的内容呢?
这里我们就可以使用组合指令来实现:
#cat /var/log/messages | head -510 | tail -10
我们来分析一下这段指令:首先cat /var/log/messages是将文件内容显示在屏幕上,但是我们后面加了‘|’,这个是管道文件,我们先将要显示的文件放入到管道文件中,然后对管道文件执行head -510,将该文件的前510行取出再放入到管道文件中,接着继续对管道文件执行tail -10指令,取出管道文件的后10行,这样不就拿出了原文件的500~510行的内容么!!
十一.时间相关的指令
11.1date指令
date指令就是显式时间,但是要指定格式:
#date +(格式)
- %H : 小时(00..23)
- %M : 分钟(00..59)
- %S : 秒(00..61)
- %X : 相当于 %H:%M:%S
- %d : 日 (01..31)
- %m : 月份 (01..12)
- %Y : 完整年份 (0000..9999)
- %F : 相当于 %Y-%m-%d
格式之间可以用符号隔开。
11.2时间戳
时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒,因为有时差)起至现在的总秒数
时间戳具有多种作用,包括但不限于以下几个方面:
-
事件排序和比较:时间戳可以用于标记事件的发生顺序,比较事件的时间先后,以便进行排序和分析。
-
数据唯一标识:时间戳可以作为数据的唯一标识,确保每条数据具有唯一的标识符,方便在数据库或系统中进行查询和操作。
-
缓存和更新:时间戳可以用来判断数据是否已过期或需要更新,比如在缓存系统中,通过比较时间戳可以确定缓存是否需要重新获取最新数据。
-
安全验证:时间戳可以用于验证数据的完整性和真实性,比如在数字签名和加密算法中,时间戳可以用来确保数据未被篡改或伪造。
-
数据同步和复制:时间戳可以用于数据同步和复制,通过比较时间戳来确定哪些数据需要复制或同步到其他系统或设备。
-
日志记录和审计:时间戳可以用来记录事件的发生时间,方便后续的日志分析、故障排查和安全审计。
-
多时区处理:时间戳可以用来处理多时区的时间差异,通过统一的时间戳标准,可以准确地将不同时区的时间转换为统一的格式。
总的来说,时间戳在计算机科学和信息技术中扮演着重要的角色,用于标识、排序、比较和分析事件的时间信息,以及在数据处理和安全验证等方面起到关键作用。
1.时间->时间戳
#date +%s
2.时间戳->时间
#date -d@时间戳
11.3cal指令
cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。“阳历”又名“太阳 历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”。
完!