目录
1.上节复习
(1)我们上次学习了这个和文件的删除以及文件夹的删除的相关的指令,rm -rf这个样的话后面加上文件的名字和文件夹的名字,基本上就会不显示错误信息然后直接删除掉了;
我们前期是学习的rmdir指令删除掉普通空文件夹,后来我们发现这个好像并没有直接使用rm方便,rm指令无论是对于文件夹还是普通的文件,无论是有内容还是没有内容,我们都是可以使用这个指令删除文件内容的;
我们需要补充的就是这个*运算符,这个运算符可以帮助我们找到相关联的文件,例如这个我们使用ls *.c这个指令,这个时候就会显示出来所有的后缀是.c类型的文件,这个*就表示可以是任何的内容,我们也可以使用ls test.*这样的话这个就会显示所有的文件名字是test,文件类型不同的所有的文件;我们再删除的时候,敲入rm * -rf,因为没有任何的指定,这个时候就会删除这个目录下面的所有的文件;
2.man指令
(1)这个指令其实就相当于是一个字典,因为在这个linux里面是有很多指令的,我们不可能会完全记住,这个时候我们就可以使用这个man指令帮助我们进行理解,man+指令的名字,就会出现英文版的帮助文档供我们学习了解,尤其是这个对于我们不是很熟悉的指令;
(2)其实任何一个指令对应的都有这个操作手册,例如这个1号手册,2号手册,这个就是指令的一些分类,用来显示这个指令的不同的用途,当我们不指出这个是几号操作手册的时候,系统会按照这个顺序给出来,但是我们制定之后,就会只显示这个部分,平常我们不指定,后期我们熟悉之后可能会指定;
3.echo指令
(1)这个指令我们后续会用到,但是其实这个用法很简单,就是在这个指令后面的语句会显示在这个屏幕的上面;
(2)通过上面的实例就可以看出来,这个指令会把我们的内容显示在屏幕上面,不仅如此,这个还可以把内容写到文件里面去,但是不会显示,效果是这样的:
我们使用这个指令加上写入的内容,加上这个向右的箭头,加上这个文件的名字,就可以把这个内容写入到文件里面去,但是我还是把这个文件夹座位了写入的对象,这个时候的系统就会提示我们这个是一个文件夹(可能就无法写入到文件夹里面去吧);
(3)但是当我们使用上面的语法把内容写进去之后,这个是不会显示的,我们可以使用cat指令查看这个文件里面的内容,用来进行检查这个内容是不是真正的写入到了这个文件里面去;
具体的用法就是在这个cat指令的后面添加上这个文件的名字就可以了,这样就可以查看这个文件里面的内容,检查这个内容是不是真正的被写入到了这个文件里面去;
像这种应该显示在显示器上面,但是没有显示,而是直接写到这个文件里面去了,我们把这个现象叫做输出重定向;
4.cp指令
(1)这个指令就是用来拷贝的,他可以把一个文件里面的内容拷贝到另外的一个文件里面去,我们还可以使用上面介绍的cat指令查看这个是否被拷贝到了新的文件里面去;
我们不需要提前创建这个文件,经过拷贝之后,这个文件是会被自动创建出来的,我们在拷贝完成之后可以进行查看这个文件的内容,同时可以查看当前的目录下面这个体系结构,这个时候我们就可以发现这个新的文件已经被创建了出来;
(2)我们上面的拷贝是默认拷贝到同一级的目录下面的,我们也是可以拷贝到不同级的目录下面,就是还记得我们之前使用的cd ..这个指令可以跳转到上一级目录里面去,同理,这个地方,我们只需要稍作修改就可以拷贝到上一级目录里面去,这个地方也是不需要我们自己进行这个创建的 ,这个系统在进行拷贝的时候也是会自动生成的;
按照常识一般在同一级目录下面这个文件的名字是不允许重复的,但是在不同级别的目录下面,这个文件的内容是可以重复的,因此我们使用上面的方式,就可以在不同级别的目录下面创建相同的文件名字的文件,同时我们也可以使用ls ../方式进行查看,同理这个ls指令一般也只会显示这个当前路径下面的文件信息,我们在后面添加上这个../ 之后,就可以查看上一级目录下面的文件信息,这个时候,我们可以看到这个上一级的路径里面已经创建出来这个文件,我们使用cat ../test.txt就可以查看这个文件里面的相关的信息,这个时候,发现这个拷贝是成功的;
(3)还有一点就是我们之前介绍过的这个-p指令后面假的选项可以用来表示这个创建连续的路径,就是一连串的路径,我们如果想要把这个一连串的路径文件全部拷贝给这个新的文件,这个时候我们仅仅使用上面的cp指令就不可以了,这个时候我们要在原来的基础上面添加这个-r选项,表示这个要拷贝的内容不是一个简单的文件内容,而是一个递归形式的文件,这个时候使用“cp -r 源头文件 目标文件” 就可以实现这个拷贝了;
5.mv指令
(1)在学习这个linux的时候,我们应该把这个学习的内容和这个windows里面的内容进行一一对应,这个就会更加有助于我们的理解,例如我们想要实现这个文件的重命名,就是修改这个文件的名字,在这个linux指令里面,也是有指令可以对于这个文件的名字进行修改:
我们这个是把这个原来文件名字叫做test2.txt的文件修改名字为test3.txt,使用的就是上面的mv指令,修改之后我们发现这个效果确实是达到了;
(2)当然这个mv指令的功能远远不仅如此,这个还有剪切的功能,就是我们把某一个文件剪切到上一级目录下面去,类似这样的,这个时候他和拷贝的区别就在于这个拷贝之后,无论是拷贝的新文件还是原来的文件都是存在的,但是这个剪切之后原来的文件就会不存在,但是这个新的文件会被创建出来,接下来给这个大家演示一下:
test.txt就是当前的目录下面的文件,我们想要使用这个剪切到上一级目录下面去,就是这个两个点表示的就是上一级目录,一个点表示的就是当前的目录下面,我们使用这个ls ..指令查看上一级目录下面的问价,这个时候发现就已经被剪切进去了,其实这个时候在当前的目录下面这个文件就已经不存在了(只不过我没有进行演示);
(3)我们剪切过去之后还是可以剪切回来的,这个方法基本是一样的,我们可以使用这个ls指令验证当前的目录下面的文件和上一级目录下面的文件;
(4)概括起来,这个mv指令就是用来进行这个文件的重新命名以及这个文件的剪切的,但是会产生歧义,mv test.txt ../这个就是很明显的用来把这个文件剪切到上一级路径里面去,但是像这个 mv test.txt test3.txt这个就是典型的重命名,但是这个mv test.txt ../test3.xtx这个就是剪切并且进行重新命名的操作,在同一级目录下面实际上也是进行的剪切并且重命名,只不过这个剪切的过程没有体现出来,因为这个文件本来就是存在的;下面这个就是一个剪切并且重新命名的过程;
6.重新认识
(1)linux下面,一切都是文件,这个就是我们对于这个文件的重新认知,也是对于这个linux指令等等的重新认知,为什么说都是文件呢;
显示器打印这个信息,我们就可以把这个显示器理解为具有写方法的文件,键盘是输入的,就是读取的,我们可以把这个键盘理解为只是具有读方法的文件,而像这个我们熟悉的普通的文件,就可以理解为是读方法和写方法都具有的文件,只不过与之相比较而言,显示器是仅仅具有写方法的文件,键盘是仅仅具有读方法的文件,仅此而已;
(2)结合文件重新理解输出重定向
echo就是把这个指令显示到显示器上面去,但是后面加上这个箭头和新的文件之后就不会写入到这个显示器上面了,而是写入到新的指定的文件里面去;
这个时候我们就可以这样理解这个输出重定向:就是把这个原来应该写入到显示器文件里面的东西,内容写入到了这个指定的文件里面去,我们把这个过程理解定义为输出重定向;
7.和文件相关的指令的辨析
(1)我们前面进行介绍的就是这个echo命令就是把这个指令后面的内容直接显示在这个屏幕上面
echo后面加上一个文件的名字就会把这个文件的名字当做字符串显示在这个屏幕上面,cat后面加上文件的名字就会把这个文件的内容显示在屏幕上面 ,因此虽然后面的内容是一样的,打印的结果是有差别的,echo就是很无脑的你给我什么我就会打印什么,不管是什么类型的任何东西;
(2)前面还学习了ll指令,这个指令也是打印文件的相关内容的,只不过打印的是文件的属性,文件包括文件内容和文件属性,文件内容就是使用这个cat指令进行打印,文件的属性就是使用的ll指令进行打印;
(3)这个输出重定向里面的>test.txt就是这个大于号加上对应的文件的名字,就会把这个文件里面的内容删除掉,就是清空文件内容;
(4)在文件里面本来就有内容存在的情况下,这个多次使用这个echo ***** > 文件名 这样的方式对于文件写入内容的时候,每一次的输入都会把原来的内容覆盖掉;
(5)我们如果不想要每次输入内容的时候把原来的内容给覆盖掉,怎么办呢,我们之前使用这个指令向文件里面写入内容的时候,使用的是一个大于号,就会把原来文件里面的内容给覆盖掉,如果我们使用两个大于号,就可以不覆盖原来的文件内容的情况下进行这个内容的写入;
这个方式我们叫做追加重定向,就是在原来的内容的基础上面进行追加新的内容,这个echo指令每次追加的时候都是显示在不同的行里面的(这个通过上面的事例我们也是可以观察出来的),我们可以把这个echo换成printf这样的话这个内容就会在同一行里面进行显示,而不是自动换行了;
8.三大重定向
(1)上面我们已经展示了这个输入重定向,以及这个追加重定向,第一个就是简单的向这个文件里面去输入数据,只不过每一次输入的数据都会覆盖之前的数据,为此我们学习使用了这个追加重定向指令,这个指令可以让我们在输入新的内容的基础上步不覆盖文件里面的原来的内容;
(2)除了上面的输入重定向和追加重定向,实际上还有一个叫做输出重定向,这个重定向和我们的ct指令有关,简单的介绍一下:
就是我们自己也是可以进行尝试的。我们仅仅使用一个cat指令,后面不添加任何内容,这个时候我们输入什么,这个显示器上面就会打印什么,而且还是不会停止的,我们可以使用ctrl+D这个组合键停止这个向键盘输入的过程;
(3) 我们可以使用这个cat < 文件的名字 表示的就是把这个文件里面的内容显示出来,这个就叫做输出重定向,因为这个默认的话是要显示键盘里面输入的内容的,但是现在要打印的就是文件里面的内容,我们把这个原本应该打印键盘里面输入的内容但是现在却打印文件里面的内容的过程就叫做输出重定向;
(4)新的理解
我们使用这个echo "hello world" >> test.txt向这个文件里面写入内容,这个时候如果这个文件是不存在的,这个系统就会自动创建这个文件,我们可以不用使用这个touch进行文件的创建,而是选择这样的方式去创建文件;
9.cat指令
(1)这个指令就是我们上面介绍的,把文件里面的内容显示出来,没有这个文件就会创建这个文件,但是cat指令还有一些其他的选项,我们来认识一下;
cat -b 文件名字----------------这个就是输出这个非空行的编号;
cat -n 文件名字----------------这个就是输出所有的行的编号,包括空行;
cat -s 文件名字----------------这个就是对于连续的空行,这个就只会输出一个空行;
10.more命令和less命令
(1)我们上面介绍的这cat命令适合这个进行查看一般的小型的文件,我们如果想要查看大型文件,一般使用的就是这个more指令,这个指令可以帮助我们进行翻阅,但是只能向下翻,后面加上这个选项:more -n 文件(大型),这个就是指明我们想要查看的文件行数,输入500,这个屏幕上面就会显示第500行上下的的内容,我们可以使用这个enter键进行向下翻,但是缺点就是不能向上翻;
(2)这个less指令和more指令的用法基本上就是一样的,但是这个指令可以向上翻阅,就是使用的我们的键盘上面的向上键和向下键,这个就比more好了那么一点点;