创作初心:在加深个人对知识系统理解的同时希望可以帮助到更多需要的同学
🛠️柯一梦主页详情
座右铭:心向深耕,不问阶序;汗沃其根,花自满枝
首先我们要知道一个概念,linux里面一切皆文件。
ls指令
在windos系统中,当我们登陆了以后,首先进入的是一个叫作桌面的文件夹,只不过这个文件夹里面的内容被图像化显示出来了。在linux中我们想看这个文件夹里面有什么文件,就需要我们使用到这个指令
语法:ls+[选项]+[目录或件]
功能 :对于目录,该命令能列出该目录下所有的子目录和文件。对于文件,将列出文件名以及其他的信息
常用的选项:
- -l 列出文件的详细信息(以d开头的是目录文件,以l开头的是链接型文件,以-开头的是普通文件(文本文件,二进制可执行程序,图片音频动态库等))
- -a 列出该目录下的所有文佳你,包括以.开头的文件(以.开头的文件是隐藏文件,一般不会显示,功能是直接返回到上一个目录或者当前目录,可以将其想象成一个指针)
- -al 在显示隐藏目录的同时显示文件或者目录的详细信息
补充一些内容:在linux系统中,根目录叫作/,它的下面有很多子目录比如说root(是超级用户),比如说home(可以让其他 人登录的普通空间)
pwd指令
语法:直接使用pwd
功能:看到用户现在所在的目录
举例:

Linux的理论知识
- Linux系统中,磁盘上的目录和文件被组成一棵树,每个节点就是目录或者文件
- 普通文件一定是目录树的叶子节点
- 目录可能是叶子也可能是路上节点(叶子就是特殊的节点)
- 理解路径存在的意义:树状的组织方式都是为了能够快速的定位查找到指定的文件,而定位文件就需要具有唯一性的方案来定位文件。因为其中任何一个节点都只有一个父节点,所以从根目录开始,到任意一个指定的文件,路径都具有唯一性
- 绝对路径一般不会随着用户路径的变化而丧失唯一性,一般在特定服务的配置文件中经常被使用
- 相对路径相对路径一般因为他的便捷性,一般在命令行中使用较多

cd指令
语法:cd+目录名
功能;改变工作目录,将工作目录改变到指定的目录下(它的对象只是目录,不是文件)
cd后面可以加绝对路径也可以加相对路径。绝对路径是从根目录/开始的,而相对路径就是从现位置开始,这里来我们用到两个隐藏文件..和.,..就是退回到当前目录的上一个目录。
- cd .. 返回到当前目录的上一个目录
- cd /root/rxj 这个是绝对路径,直接跳转到你写的那个路径下
- cd ../rxj 这个是在当前目录下写的相对路径
- cd ~ 快速进入家目录
- cd - 快速退回上一次所处的目录,连续使用cd -会在两个目录之间反复横跳
补充:
- 可以把绝对路径看成是一种特殊的相对路径
- 每两个目录之间会用/隔开,最后一个目录后面的/可加可不加
touch指令
语法:touch 选项 文件
功能 :touch命令可以更改文档或者目录的日期时间,包括存取时间和更改时间。或者新建一个不存在的文件。
常用的选项:
- -a:更改读取时间
- -c: 改变更改时间
例如 ;
注:stat可以查看文件或者文件系统的详细状态信息,可以看到文件的三个时间戳
- Access (atime) :最近一次 "访问内容" 的时间(如用
cat
查看、less
浏览)。- Modify (mtime) :最近一次 "修改内容" 的时间(如用
vim
编辑并保存)。- Change (ctime) :最近一次 "修改状态" 的时间(如改权限、改所有者、重命名,或内容修改时也会同步更新)
mkdir指令
语法:mkdir [选项] dirname
功能:在当前目录下创建一个名叫"dirname"的目录
常用选项:
- -p/-parents:此时若路径中某写目录不存在,若加上此选项,系统将自动建立那些上不存在的目录,也就是一次可以创建一串目录
举例:

正常情况下mkdir是不能创建一连串目录的(或者说是创建指定路径),但是你使用-p就可以实现这一功能

rmdir指令
rmdir是一个与mkdir相对的一个指令,mkdir是创建目录,而rmdir是删除目录命令
语法:rmdir [-p] [dirName]
功能:删除空目录(删除的只能是空目录,里面有隐藏文件也不行。而且也不能对文件起作用)
常用选项:
- -p:当子目录如果被删除以后,如果父目录也变成空目录的话,就连带着父目录一起删除(可以删除用递归生成的一连串的空目录)
举例:

只能删除这种用递归生成的一连串的空目录,而不能删除有文件的目录

rm命令
rm命令可以直接删除文件或者目录
语法:rm [ -f -i -r -v ] [ dirName/dir ]
功能:删除文件或者目录
常用选项:
- -f 即使文件的属性是仅读(也就是不能写),也直接删除 (也就是强制删除)
- -i 删除前逐一询问确认
- -r 就是递归式删除目录及其以下的所有文件
举例:

在同一目录层级 中,rm -r对内容的处理顺序遵循 "文件优先于子目录" 的规则,而 "深度优先遍历" 是针对 "子目录内部的递归处理" 而言的.所以就先删除a目录里的aa而不是先递归进b

man指令
Linux的指令有很多参数,我们不可能全部记住,可以通过查看手册来获得帮助。也就是通过man指令来查看各个指令的用法
语法:man [ 选项 ] 命令
常用选项:
- -k 根据关键字搜索联机帮助
- -num 只在第几个章节里查找
- -a 就是把所有包含那个命令的章节都显示出来,比如man -a printf就会从第一章开始搜索,阅读完毕以后按q退出第一章,然后会有提示是否阅读第三章,按回车则继续阅读
解释man的常用的三个不同的章节
章节一:普通命令
章节二:是系统调用,后面会讲到
章节三:是c语言的库函数
举例:(首先要知道printf既是库函数,也是命令,库函数一般在第三章,普通命令在第一章)
man -num:如果你输入 man 3 printf,那么只会在第三章给你找printf的用法
man -k:这个k后面加这个命令的基本用法的关键字,比如:delete file
补充理论:
Linux下一切皆文件。
1.向显示器打印---->向显示器文件写入
2.从键盘获取文件--->从键盘文件中读取数据
我们再来认识一个命令:echo,相当于printf,都是在终端打印一些内容
我们再认识一个功能,那就是改变命令输出的 "目的地"------ 默认情况下,命令的输出会显示在终端屏幕上,而通过输出重定向,可以将输出 "转移" 到文件中(或其他地方)
那就是输出重定向>
我们可以看到echo没有把那些内容输到显示屏上,在使用输出重定向后平白无故多了一个文件夹,我们猜测,"hello world"的内容被输入进了文件夹中,我们接下来查看一下文件夹
使用cat命令
我们发现输出重定向将要打印在终端的信息输入进了指定的文件里面
输出重定向特点:
1.如果指定的文件不存在,它会自动新建一个
2.输出重定向在输出时会对文件先清空
因为输出重定向在向文件内输入的时候现将文件清空,所以我们就得到了一个清空文件的方法
还有一个重定向是两个大于符号>>,这个符号叫作追加重定向,他不会清空历史数据,而是在原先的基础上,不断新增。
cat命令就是从一个地方获取信息,然后打印,如果后面跟的是一个文件,那么它会直接读取文件里面的信息并且打印。如果后面什么都不跟的话,就会等待用户从键盘上输入,也就是从键盘文件夹读取数据然后进行输出。
输入重定向<:cat后面如果什么都不加,那么就是从键盘获取数据,然后打印。如果你使用cat < 文件名称,那么cat就会从文件里面获取数据而不是从键盘里面获取数据。
总结:cat的功能是获取数据并且打印出来,那么它既能从文件获取,也可以从键盘文件上获取。echo的功能是输出一些信息到文件中,如果不说明那么就是输出到显示器文件,当然你也可以通过重定向符号改变输出或者输入的信息走向和来源。
我们怎么解释Linux下一切皆文件呢?
终端其实也是一个文件,他存放在dev/pts里面,你可以打开多个终端,用已经学过的命令对终端文件进行操作。
cp指令
语法:cp [选项] 原文件或者目录 目标文件或者目录
功能:复制文件或者目录
常用选型
- -f或者-force 强行复制文件或者目录,不论目的文件或者目录是否已经存在
- -r递归处理,将指定目录下的文件与子目录一并处理。
说明:
- cp指令用于复制文件或者目录
- 如果同时指定两个以上的文件或目录,并且最后一个是已经存在的目录,那么它会把前面指定的所有文件或者目录全部都复制到目标文件中
- 如果目标文件已经存在,那么内容会被覆盖
- 如果目标文件不存在,那么就会新建一个文件或者目录
举例:
创建新文件:

覆盖掉原有文件:

递归复制文件:

mv指令
mv指令是move的缩写,如果说cp是复制文件,那么mv就是剪切加复制(当然还有重命名的功能)。它既可以用来移动文件也可以将文件改名。
语法:mv [选项] 源文件或目录(src) 目标文件或目录(dst)
功能:
- 如果dst是一个目录,源文件或者目录可以参数可以有多个,那么mv指令将会把文件或者目录均移到指定的目录中。
- 当第二个参数名是文件且目标不存在 时,
mv
就会表现为 "重命名" 操作 ------ 无论是对文件还是目录都适用。
常用选项:
- -f:force的意思,如果目标文件已经存在,会直接覆盖
- -i:如果目标文件已经存在,就会询问是否覆盖
举例:
转移一个目录,即使是递归,也不会提示

重命名目录或者文件

cat指令
语法:cat [选项] [文件]
功能:查看目标文件的内容(ls -l查看的是文件的属性)//主要查看小文件内容,一旦内容过长就会刷屏
常用选项:
- -b对非空输出行编号,空行不做编号
- -n对输出的所有行编号
- -s不输出多行空行
举例:

more指令
语法:more [选项] [文件名]
功能:more后面如果只带一个文件,运行以后会只显示一屏幕内容,看完以后可以按回车进行下翻,但是没有上翻功能,所以这个命令稍鸡肋,不做重点了解
常用选项:
- -n 指定输出行数
- q 退出more
less命令
less的一些特性:
- less工具也是对文件或者其他输出进行分页显示的工具,应该说是Linux查看文件内容的正统工具。
- less的用法比more更有弹性,在使用more的时候,我们没有办法进行向前翻,只能向后翻
- 在你使用了less之后,你可以使用PGUP/PGDN之类的案件来进行前后翻看文件,
- 除此之外,less还有很多的搜索功能,不仅可以向下搜,也可以向上搜
语法:less 选项 文件。
功能:less与more类似,但是使用less可以随意的浏览文件,而more只能向下翻,不能向上移动,且在less查看之前不会加载整个文件。
选项:
- -i:搜索时忽略大小写
- -N:显示每行的行号
- /字符串:向下搜索"字符串"
- ?字符串:向上搜索字符串
- n:重复前一个搜索(与?或/有关)
- N:反向重复前一个搜索
讲less只是因为less可以上下翻,搜索功能有更优的方式,大家不用管
值得注意的是:我们使用less的搜索功能的时候,要先用less打开文件,然后再进行搜索
head与tail指令
head与tail就像它的名字一样浅显易懂,它使用来显示开头或者结尾某个数量的文字区块,head用来显示文件的开头
语法:
head 参数 文件
功能:
head用来显示文件的开头到标准输出中,默认head命令打印其相应文件的开头10行(tail自动显示尾部信息)

管道pip
功能 :它的作用是将前一个命令的输出,作为后一个命令的输入,实现多个命令的 "协作"
大家先思考一个问题:如果我想获取一个文件里的第5000-5010行怎么办呢?有的同学可能会用head命令先获取前5010行,然后再取后10行,这样可行吗?其实是可以的。但是在Linux里面我们有更简便的操作方法,那就是管道(他的简便之处在于不需要新创建一个临时文件)
举例:
