首页 > 系统相关 >Linux-基本指令2

Linux-基本指令2

时间:2023-12-08 21:05:09浏览次数:44  
标签:基本 文件 查看 指令 内容 Linux 我们 man

上篇文章,我们分享了几个基本的指令。我们可以通过pwd指令来查看我们当前所在的路径,可以通过cd指令切换我们所在的路径,可以通过touch指令来创建普通文件,可以通过mkdir指令来创建目录文件,可以通过ls指令来查看当前路径下的文件等等。

本篇文章,我们继续分享一些常用的基本指令。本次文章会涉及man,echo,cat,cp,mv,which,alias,more,less,head,tail等指令。

Linux操作系统本身的指令就有很多,一旦再加上参数。一个指令,就就有了十几种的用法。这么多的指令和用法,我们是没法全部记住的,也没必要全部记住。当我们遇到某条不会使用的指令时,我们可以查询man手册。

man指令

man指令的作用也就相当于C语言官网,我们可以通过man手册查询一些指令和函数的用法介绍。那怎么去使用man手册呢?man的用法是:man+空格+要查询函数的函数名或指令。我们先拿ls指令为例:

Linux-基本指令2_文本文件

运行后,我们可以看到关于ls指令及它相关的选项的介绍。

Linux-基本指令2_输出重定向_02

man手册按q退出,按h可以查看帮助。

下面,我们再试着查询一下函数:

Linux-基本指令2_字符串_03

Linux-基本指令2_文本文件_04

从结果看我们并没有查到相应的函数,这是什么原因呢?

这是因为man手册分为八章,不同的章节存放着不同的内容:

第一章:是普通命令,也就是ls,pwd这些指令的存放章节

第二章:是系统调用,如open,write之类的函数

第三章: 是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件。

第五章: 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义

第六章: 是给游戏留的,由各个游戏自己定义

第七章: 是附件还有一些变量,比如向environ这种全局变量在这里就有说明

第八章: 是系统管理用的命令,这些命令只能由root使用,如ifconfig

目前,我们会经常用到的是前四个章节。向我们刚刚查询的open函数在第二个章节。所以,我们可以直接告诉man到第二章节去查找。

Linux-基本指令2_文本文件_05

Linux-基本指令2_字符串_06

从运行结果看,我们确实在第二章找到了open函数。除此之外,我们还可以通过使用-a选项,一个一个章节的找。

Linux-基本指令2_字符串_07

当man手册查到第一个后,就会停止,然后,显示,如果不是我们要查的,就按q退出,man手册会继续往后查,我们按回车键即可查看下一个结果。

今后,对于一些我们不懂得函数或指令就可以通过man手册来查询。比如说echo指令。

echo指令

Linux-基本指令2_字符串_08

通过man手册查找,我们可以了解到echo的功能,它可以打印一行文本。

我们来看看使用效果。

Linux-基本指令2_输出重定向_09

从运行结果看,我们不难看出echo的功能,就是将跟在它后面的内容,打印出来。可是当我们加上双引号的时候,它会帮我们去掉双引号,这是为什么呢?这是因为echo将其后面的内容当成了字符串。你不加双引号也没事,我默认它是字符串,你加双引号也行,表明它是字符串。

echo指令后面跟着的字符串,默认打在显示器上。我们可以通过输出重定向符号’>',来让它把它后面的内容打到文件里。

Linux-基本指令2_输出重定向_10

首先,我们先创建一个文件,text.txt。然后,使用echo指令。这次使用echo指令,我们发现内容并没有往显示器上面打,而是打印到文件里了。

我们如何去查看文件中的内容呢?

这里我们需要用到了一个新的指令cat。

cat指令

cat指令的作用是打印文件里面的内容。

Linux-基本指令2_输出重定向_11

我们再次使用echo指令将内容写到文件里。然后,查看text.txt文件里的内容,我们发现上一次我们打印到里面的内容没了。这是什么原因?这是因为输出重定向会将文件里的内容先清空,再进行写入。

如果你想追加写入文件,需要使用追加重定向'>>'。

Linux-基本指令2_输出重定向_12

我们将输出重定向改为输出追加重定向后,发现。我们再次对文件进行写入时,文件原有的内容并没有被覆盖清除,新的内容在原有内容的基础上进行写入。

我们来总结一下这两个符号的异同点。输出重定向,对文件进行写入是先对原有的内容做清楚,在进行新内容的写入。输出追加重定向,对文件进行写入是在原有内容的基础之上进行写入。它们的功能都是改变内容写入文件的方向。当它们向一个文件写入时,如果该文件不存在,则会先创建该文件在进行对文件的写入。

接下来,我们来验证一下:

Linux-基本指令2_输出重定向_13

首先,我们先查看当前路径下,存在的文件。很显然,什么也没有。我们分别对输出重定向和输出追加重定向两个符号进行使用。然后,当我们再次查看文件时,发现多了两个文件,恰好就是我们要写入的两个文件,并且,这两个文件里,什么内容都没有。

这时的它们,就有点类似touch,可以用来创建普通文件。

cat指令除了直接使用外,还可以加上-n选项,给查看的文件内容的每一行加上编号。

Linux-基本指令2_文本文件_14

上图中,不管是空行还是非空行都加上了编号。

如果我们只想给非空行加上编号,可以使用-b选项。

Linux-基本指令2_字符串_15

对于多个空行,我们可以使用-s选项,压缩成一行。

在Windowns系统下,我们会经常用到Ctrl+c和Ctrl+v来进行对文件的复制,然后,粘贴到其他文件中。

那在Linux操作系统之下,我们该如何去将一个文件拷贝到另一个文件呢?这里需要用到cp指令。

cp指令

cp指令,它的作用是将一个文件拷贝到别的路径下。使用的方式是:cp+文件(要拷贝的)+路径(要拷贝到那个文件中)。

Linux-基本指令2_输出重定向_16

首先,我们先创建一个目录文件dir,使用一个指令tree(一个小程序)来查看我们新建的目录。很显然,它是空的。现在,我们使用cp指令,将我们的目录文件dd拷贝到我们新建的文件中。从结果看拷贝失败,原因是文件dd是一个目录文件。

这是为什么呢?当我们加上-r选项,再次使用cp指令。这一次没有报错,我们再次使用tree指令查看dir目录,确实发现,目录文件dd被拷贝了目录dir中。当我们对目录文件进行拷贝时,要使用-r选项,告诉系统这是一个目录文件,它里面包含有多个文件,需要递归式的一个一个的进行拷贝。

cp指令是在我们需要拷贝文件的时候,进行使用。如果我们单纯的想移动某个文件到某个路径下,该如何操作。

如果想移动某个文件到某个路径下,需要用到一个新的指令mv。

mv指令

mv指令,它的作用是移动某个文件到某个路径下。有点类似剪切+粘贴。

Linux-基本指令2_字符串_17

首先,我们先分别查看当前路劲dir目录下的文件和它的上级路径下的文件都有那些。

我们可以看到dir目录中有一个dd的目录文件,现在,我们使用mv指令把它移动到上级目录中。

通过ls指令查看当前目录的文件,我们发现dd目录文件不见了。再通过ls指令查看上级目录的文件,我们发现并没有dd目录文件,可是多了一个dir1目录文件。

那它们是不是同一个文件呢?

Linux-基本指令2_文本文件_18

Linux-基本指令2_字符串_19

通过tree指令,我们可以验证得到,dir1和dd是同一个文件。可为什么它们得名字不同呢?这是因为mv指令相当于剪切+粘贴+重命名。当我们将一个文件移动到某个路径下的某个文件里时,如果该文件不存在,系统就会将文件(要移动的文件)移动到相应的路径下,并以那个不存在的文件的名字,来重新命名移动过来的文件。

根据mv指令的这个特性,我们还可以用mv指令来进行给文件进行重命名操作。就像下面这样:

Linux-基本指令2_字符串_20

将目录文件dd的名字重新命名为ddir。

说到这里,加上上篇文章,我们已经学了不少指令了。对于这些指令你是如何去看待的呢?

其实,这些指令的本质就是一个个可执行程序,存放在操作系统的特定路径下。

那我们怎么知道,那个指令在那个文件里呢?我们可以使用which指令。

which指令

which指令,它的功能是查找某个指令在那个路径下。

我们以ls指令为例:

Linux-基本指令2_输出重定向_21

通过which查找,我们可以知道ls指令在/usr/bin/ls路径下。

在我们使用which指令查找时,同样,可以知道cd指令所在的路径,可为什么cd指令没有alias这一行。

Linux-基本指令2_输出重定向_22

alias指令

这是因为ls是等号后面那一行字符串的别名。如果你觉得ls指令带上各种选项太长,太麻烦了,为了方便使用,就可以给它取个别名。就像这样:

Linux-基本指令2_输出重定向_23

Linux-基本指令2_字符串_24

通过取别名后,22_cmd达到了和指令ls -a -l 一样的效果。如果我们想删除掉这个别名的功能,可以把它设为空。

Linux-基本指令2_文本文件_25

这样22_cmd就失去原设的作用了。指令ll的功能和指令ls -l的功能一样,是因为前者是后者的别名。通常来说,不建议给指令取别名,因为Linux系统本身的指令就很多,要是我们把取的别名忘了。有一天,我们明明输了一个乱码,结果出来一些莫名其妙的数据。

前面,我们认识了cat指令,它可以用来查看文件内容。但cat的功能有限,它更适用于查看内容较少的文本文件。对于内容较多的文本文件,我们需要用到功能更多more指令。

more指令

more指令,它的功能是用来查看文本文件的内容。

Linux-基本指令2_文本文件_26

more指令查看文本,按回车可以往下翻找,不可以往上。按q退出。

如果知道直接要查看的内容大概的第几行,可以加上行号,直接查看相应位置。

Linux-基本指令2_文本文件_27

从使用上看,more的功能,使用起来还是有点笨拙,接下来,我们来认识一个比more指令更强的文本查看指令less

less指令

less指令,它的功能也是查看文本文件的内容。但是它的功能相对于more指令,更强。它可以上下随便移动查看。

Linux-基本指令2_字符串_28


在查看的过程中,我们可以通过输入斜杠加上字符串直接查找相应的内容。

Linux-基本指令2_字符串_29

然后,按下回车,确认即可。

Linux-基本指令2_字符串_30

less指令,也是按q退出查看。它有两个常用的选项,一是带上-N选项,给展示的内容加上编号。

Linux-基本指令2_文本文件_31

Linux-基本指令2_字符串_32

二是加上-i选项,这样在使用less中的搜索功能时,就会忽略大小写。

下面,我们来使用以下-i选项,看看它们的区别。

Linux-基本指令2_文本文件_33


Linux-基本指令2_输出重定向_34


Linux-基本指令2_字符串_35

从图中我们可以看到都是对字母l的查找,可是,标识出来的字母却不一样。带上了-i选项的less指令,很明显,在使用搜索的时候,忽略了大小写的区别。

看到这里,我们已经学会如何取查看文本内容。小文本用cat指令。大文本用less指令。

如果我现在想,把一个大型文本文件的某一个片段截取出来查看,有没有什么方法呢?

方法是有的,不过在讲述这个方法之前,我们得先认识两个新的指令。head和tail.

head指令

head指令,它的功能是查看文本文件最上面的几行内容。

Linux-基本指令2_文本文件_36

至于是前几行,你可以自行决定。加上-n(行数)。

我们来试着打印前三行。

Linux-基本指令2_输出重定向_37

亦或者最上面的五行。

Linux-基本指令2_文本文件_38

head指令是打印最前面的几行,tail指令是打印最末尾的几行。

tail指令

tail指令,它的功能是打印文本文件的末尾几行。

Linux-基本指令2_字符串_39

至于打印末尾的几行,就有你决定了。用法和head类似,加上-n(要打印的行数)选项。

看到这里,head和tail的用法,我们就了解清楚了。现在,我们来尝试着利用head指令和tail指令,来把text.txt第77行附近的文本内容截取出来查看。

Linux-基本指令2_输出重定向_40

我们先对text.txt文本文件的前100行,通过head截取出来,在通过管道文件传输给tail指令,截取这100行的后30行,这样一来,我们就可以把77行附近的内容截取出来了。

这里管道文件运用,减少了我们创建临时文件的操作。

Linux-基本指令2_文本文件_41

如果我们不使用管道操作,则需要先创建一个临时文件temp去保存,head指令截取的内容,然后,再通过tail截取temp这个文本文件,才能得到我们要的结果。

Linux-基本指令2_输出重定向_42

利用这个管道的操作,我们还可以结合cat指令计算我们截取内容有多少行。

Linux-基本指令2_文本文件_43

好了,到这里,我们本次的分享就到此结束了,不知道我有没有说明白,给予你一点点收获。如果你有所收获,别忘了给我点个赞,这是对我最好的回馈,当然你也可以在评论发表一下你的收获和心得,亦或者指出我的不足之处。如果喜欢我的分享,别忘了给我点关注噢。


标签:基本,文件,查看,指令,内容,Linux,我们,man
From: https://blog.51cto.com/u_15933803/8741580

相关文章

  • 提交补丁:将您的代码提交到内核的基本指南 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/process/submitting-patches.html对于希望向Linux内核提交更改的个人或公司来说,如果您不熟悉“系统”,这个过程有时可能会令人望而生畏。本文是一些建议的集合,可以极大地增加您的更改被接受的机会。本文档以相对简洁的格式包含了大量的建......
  • Linux内核开发流程指南 - 8. 获取更多信息【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/process/8.Conclusion.html以下是您提供的文本的中文翻译:8.获取更多信息关于Linux内核开发及相关主题,有许多信息来源。其中最重要的始终是内核源代码分发中的Documentation目录。从顶层的process/howto.rst开始;同时也阅读process/subm......
  • Linux_2 tmux和vim
    1tmux教程1.1功能分屏:可以在一个开发框里分屏允许terminal在连接断开之后可以继续运行,让进程不会因为断开连接而中断1.2结构//一个tmux可以包含多个session,一个session可以包含多个window,一个window可以包含多个pane。tmux: session0: window0: pane0 pa......
  • Linux内核开发流程指南 - 4. 编写正确的代码【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/process/4.Coding.html4.编写正确的代码虽然坚实且以社区为导向的设计过程有很多值得说的地方,但任何内核开发项目的证明都在于最终的代码。其他开发人员将审查这些代码,并将其合并(或不合并)到主线树中。因此,代码的质量将决定项目的最终成......
  • Linux内核开发流程指南 - 5. 编写正确的代码【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/process/5.Posting.html5.提交补丁迟早会有一个时刻,你的工作准备好被提交给社区审查,并最终被合并到主线内核中。毫不奇怪,内核开发社区已经形成了一套用于提交补丁的惯例和程序,遵循这些规定将使所有相关人员的生活变得更加轻松。本文将......
  • Linux内核开发流程指南 - 6. 跟进【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/process/6.Followthrough.html6.跟进到目前为止,您已经遵循了迄今为止给出的指南,并且凭借自己的工程技能,发布了一系列完美的补丁。即使是经验丰富的内核开发人员也可能犯的最大错误之一是认为他们的工作现在已经完成。事实上,发布补丁标......
  • Linux内核开发流程指南 - 7. 高级主题【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/process/7.AdvancedTopics.html高级主题到目前为止,希望你已经掌握了开发过程的工作方式。然而,还有更多需要学习的地方!本节将涵盖一些对于希望成为Linux内核开发过程中的常规部分的开发人员有帮助的主题。7.1.使用git管理补丁内核......
  • Linux内核开发流程指南 - 2. 开发流程的运作方式【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/process/2.Process.htmlLinux内核开发流程Linux内核在20世纪90年代初期是一个相当松散的事务,涉及的用户和开发者数量相对较少。随着用户基数达到数百万,并有约2000名开发者在一年内参与开发,内核不得不演变出一系列流程以确保开发顺利进行......
  • Linux内核开发流程指南 - 3. 早期规划【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/process/3.Early-stage.html3.早期规划在考虑Linux内核开发项目时,很容易就跃跃欲试,开始编码。然而,与任何重要项目一样,成功的基础工作最好是在编写第一行代码之前完成的。在早期规划和沟通上花费一些时间,可以在以后节省更多的时间。3......
  • Linux内核开发流程指南 【ChatGPT】
    原文:https://www.kernel.org/doc/html/v6.6/process/development-process.htmlLinux内核开发流程指南目录:介绍1.1.执行摘要1.2.本文内容1.3.鸣谢1.4.将代码纳入主线的重要性1.5.许可证开发流程的运作方式2.1.大局观2.2.补丁的生命周期2.3.补丁如何进入内核2......