linux基础指令【上篇】


📙 作者简介 :RO-BERRY

📗 学习方向:致力于C、C++、数据结构、TCP/IP、数据库等等一系列知识

📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持



引用

  • [01. ls 指令](#01. ls 指令)
  • [2. pwd命令](#2. pwd命令)
  • [3. cd 指令](#3. cd 指令)
  • [4. touch指令](#4. touch指令)
  • 5.mkdir指令
  • [6.rmdir指令 && rm 指令(重要):](#6.rmdir指令 && rm 指令(重要):)

01. ls 指令

🎄语法: ls [选项][目录或文件]

🎄功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。

常用选项:

-a 列出目录下的所有文件,包括以 . 开头的隐含文件。

-d 将目录象文件一样显示,而不是显示其下的文件。 如:ls --d 指定目录

-i 输出文件的 i 节点的索引信息。 如 ls --ai 指定文件

-k 以 k 字节的形式表示文件的大小。ls --alk 指定文件

-l 列出文件的详细信息。

-n 用数字的 UID,GID 代替名称。 (介绍 UID, GID)

-F 在每个文件名后附上一个字符以说明该文件的类型,"*"表示可执行的普通文件;"/"表示目录;"@"表

示符号链接;"|"表示FIFOs;"="表示套接字(sockets)。(目录类型识别)

-r 对目录反向排序。

-t 以时间排序。

-s 在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)

-R 列出所有子目录下的文件。(递归)

-1 一行只输出一个文件。

ls查看文件目录,ls -s 查看文件目录且更多文件信息

扩展知识

如果我今天在windows上,新建一个空文件,这个文件要占据磁盘/固态磁盘的空间吗

答案是一定会占据磁盘空间

其实文件名,文件的大小等文件的属性,属性也是数据,这些都是会被计算机记录下来的,下次关机再开机依然会看到这些文件

文件 =文件内容 + 文件属性 --> 全是二进制数据,都要被存储

所有的文件操作本质是:

1.要么对文件内容做操作

2.要么对文件属性做操作


现在可以更准确的说,ls显示的是文件属性

如果你觉的ls -l 太麻烦了

设计师也对这个取了一个别名 命令ll

ll就是 ls -l

前面学习了ls-s是显示更详细的文件属性

我们接下来来学习ls-a

ls-a: 显示当前目录下的隐藏文件

1.隐藏文件,在linux中隐藏文件以.开头

对应在windows里面其实也有隐藏文件,也是以.开头的文件

我们可以看到使用ls -l只能看到两个文件,这两个文件是我们刚才创造的,但是我们使用ls -al就可以看到出现了很多个以点开头的文件,这些都是隐藏文件

操作都是一样的没有任何差别

先介绍这两个

后面的操作后面会逐渐普及

2. pwd命令

🎄语法: pwd

🎄功能:显示用户当前所在的目录

具体实现上面已经有了

学了pwd,显示当前工作目录

那么在Windows有没有相同作用呢?

我们随便打开了很多个文件,最顶上这就是Windows当前的工作目录


3. cd 指令

Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。

语法:cd 目录名

功能:改变工作目录。将当前工作目录改变到指定的目录下。

作为一个Windows用户,我们想进入c盘就点进c盘,想进d盘就点进d盘

那么在linux里怎么进入想进入的目录呢?

我们使用mkdir指令创建了两个文件:code以及code.txt

使用ll查看看到了我们刚创建的两个文件,再使用cd更改我们的当前目录,我们就进入到了code文件目录里面了,使用pwd指令可以看到我们进入了code文件目录里

有人会问一开始为啥还有一个以点命名的文件和一个以点点命名的文文件呢?

一个点其实代表的是当前路径

两个点其实代表的是上级路径

我们可以看到,我们一开始使用pwd指令,看得到我们现在处在目录/root/code下

我们使用cd .指令再使用pwd指令,发现目录没有变化,

我们再使用cd ...指令再使用pwd指令,发现目录倒退了一个,也就是返回到了上级目录

我们在多重复几次倒退试试

我们会发现,最后到了只出现一个斜杠之后,就再也无法倒退了,在linux这个斜杠一般作为文件之间的分隔符

但是在这里只剩下斜杠,他就叫做根目录,那么,它既然叫做根目录,那它里面还能存东西吗?

我们使用ll指令可以看到里面确实还有许多的文件。

这里我们再引入一个概念:

其实linux的整体目录结构是一颗多叉树的样子

也就是这样,目录里可以创建多个其它目录,子目录里又可以创建多个目录

🍁这里我们有一个基础结论:

1.叶子结点,一定是普通文件,或者是空目录

2.分支结点,非叶子节点,一定是目录

3.访问一个文件的本质是需要先找到它,找到一个文件的本质就是在一颗多叉树中进行节点的查找


路径的本质就是这一颗多叉树的搜索路径

几乎所有的操作系统,文件夹或者目录结构都是树状结构的

4.绝对路径

我们将我们从根目录开始(/),定位一个叶子文件的方式,叫做绝对路径

类似于

这就是绝对路径

相对路径

相对于自身当前所在的目录为参考点,我们定义一个文件的路径叫做相对路径

不多说,直接看实操:
我们的root目录里不是有两个文件一个叫code,一个叫code.txt吗

我们也可以这样在code文件中进入code.txt

...代表了上级目录,我们就可以直接使用点点再进入上级目录里的文件

这就是使用了相对路径进入了code.txt文件

...代表了上级目录,我们就可以直接使用点点再进入上级目录里的文件

这就是使用了相对路径进入了code.txt文件

cd命令:cd 绝对路径/相对路径均可

cd ... : 返回上级目录

cd /home/litao/linux/ : 绝对路径

cd .../day02/ : 相对路径

cd ~:进入用户家目

cd -:返回最近访问目录

4. touch指令

语法:touch [选项]... 文件...

功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。

常用选项:

-a 或--time=atime或--time=access或--time=use只更改存取时间。

-c 或--no-create 不建立任何文档。

-d 使用指定的日期时间,而非现在的时间。

-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。

-m 或--time=mtime或--time=modify 只更改变动时间。

-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。

-t 使用指定的日期时间,而非现在的时间.

touch +文件名可以在当前目录下创建一个文件。

我们也可以快速创建多组文件:

如果我们想要查看某个文件的详细属性时,我们可以输入stat +文件名。

5.mkdir指令

语法:mkdir [选项] dirname...

功能:在当前目录下创建一个名为 "dirname"的目录

常用选项:

-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;

mkdir指令与touch非常相似,是创建目录的指令。

创建的文件夹默认为空。那我们可以直接可以创建一个路径呢?

答案是不行。只能一个一个创建。

但是我们可以使用mkdir -p +创建路径即可。

6.rmdir指令 && rm 指令(重要):

🎄rmdir是一个与mkdir相对应的命令。mkdir是建立目录,而rmdir是删除命令。

语法:rmdir [-p][dirName]

适用对象:具有当前目录操作权限的所有使用者

功能:删除空目录

常用选项:

-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。

🎄rm命令可以同时删除文件或目录

语法:rm [-f-i-r-v][dirName/dir]

适用对象:所有使用者

功能:删除文件或目录

常用选项:

-f 即使文件属性为只读(即写保护),亦直接删除

-i 删除前逐一询问确认

-r 删除目录及其下所有文件

rmdir只可以删除一个空的文件夹但不能删除文件。

它说dir不是一个空文件但是我们可以使用rm指令进行删除,但是为什么报错了呢?

但是为什么报错了呢?因为文件夹本来就是一个树状结构,就是递归定义的,所以得深度遍历在删除。

最后结果为:

所以得用递归一层层遍历,然后确定要删除即可将路径中的所有文件夹全部删除。但是只有root用户有询问交互,然后回答y/n。普通用户没有这个权限,所以直接就会删除。

rm -rf:这个指令是强制删除指令,界面就不会有交互直接删除。

删除文件直接使用rm -f + 文件名指令,强制删除不会有交互,但是用rm +文件名会有交互询问。

以上就是今天的linux基础指令的学习啦

相关推荐
石兴稳几秒前
Ceph client 写入osd 数据的两种方式librbd 和kernel rbd
linux·ceph
fareast_mzh31 分钟前
Setting Up a Simple Live Streaming Server on Debian 11
运维·debian·直播
xs_201232 分钟前
引入第三方jar包部署服务器后找不到jar处理方法
服务器·pycharm·jar
大G哥1 小时前
python 数据类型----可变数据类型
linux·服务器·开发语言·前端·python
BillKu2 小时前
Linux设置Nginx开机启动
linux·运维·nginx
阿大撒大撒2 小时前
Linux 服务器虚拟化技术详解
服务器
东方佑2 小时前
FastHTML快速入门:服务器渲染超媒体应用的利器
运维·服务器
baidu_375528812 小时前
光感传感器 芯片stk3171 linux驱动程序
linux·运维·服务器
飞腾开发者2 小时前
飞腾平台Arm NN软件栈安装使用指南
linux·运维·人工智能·机器学习·计算机视觉
夜暝2 小时前
Iotop使用
linux