您的位置:首页 > 新闻 > 资讯 > Linux中的简单命令2

Linux中的简单命令2

2024/12/27 19:53:16 来源:https://blog.csdn.net/xsc2004zyj/article/details/142209561  浏览:    关键词:Linux中的简单命令2

一.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. 若后续文件不存在,则以该文件名新建文件,然后写入
  2. 若文件存在,先清空文件内容,然后写入

 验证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. 事件排序和比较:时间戳可以用于标记事件的发生顺序,比较事件的时间先后,以便进行排序和分析。

  2. 数据唯一标识:时间戳可以作为数据的唯一标识,确保每条数据具有唯一的标识符,方便在数据库或系统中进行查询和操作。

  3. 缓存和更新:时间戳可以用来判断数据是否已过期或需要更新,比如在缓存系统中,通过比较时间戳可以确定缓存是否需要重新获取最新数据。

  4. 安全验证:时间戳可以用于验证数据的完整性和真实性,比如在数字签名和加密算法中,时间戳可以用来确保数据未被篡改或伪造。

  5. 数据同步和复制:时间戳可以用于数据同步和复制,通过比较时间戳来确定哪些数据需要复制或同步到其他系统或设备。

  6. 日志记录和审计:时间戳可以用来记录事件的发生时间,方便后续的日志分析、故障排查和安全审计。

  7. 多时区处理:时间戳可以用来处理多时区的时间差异,通过统一的时间戳标准,可以准确地将不同时区的时间转换为统一的格式。

总的来说,时间戳在计算机科学和信息技术中扮演着重要的角色,用于标识、排序、比较和分析事件的时间信息,以及在数据处理和安全验证等方面起到关键作用。

 1.时间->时间戳

#date +%s

2.时间戳->时间

#date -d@时间戳

11.3cal指令 

cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。“阳历”又名“太阳 历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”。

 


完! 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com