【Linux】基本指令详解(一) 树状文件结构、家目录、绝对/相对路径、linux文件类型

文章目录


一、linux版本

linux分为许多版本,理解它分为两个层面:

  • 内核

操作系统的核心部分,内核有自己的技术类版本,比如2.6.32

  • 内核的发行版本

一款操作系统被发明出来后的首要问题就是如何被更多人使用,所以linux系统就衍生出了各类linux社区和linux的应用版本,比如Ubuntu CentOS

小编目前用的就是 centOS

二、基本指令速览

whoami

在正式介绍指令之前,我们要先知道访问linux系统的主体是谁,whoami就可以让系统告诉我答案,接下来小编都会以root为主体来介绍指令。

pwd指令

(print working directory)
功能:显示用户当前所在的目录

一个常识:windows系统中,文件唯一性是通过文件路径来标识的。

如何理解当前所在目录呢,我们要明白,无论的windows还是linux,我们登陆成功后,都会默认处在一个特定的路径下,比如我们我们登陆windows后桌面就是一个特定的路径,它其实就是一个文件夹,只不过桌面这个文件夹比较重要,windows把桌面文件夹里的内容以图形化界面的形式展现了出来。

这条指令的结果完全取决于你自己是谁,示例如下:

登陆linux后默认所处的路径 /root 其实是家目录,具体说明什么是家目录呢,小编这篇博客都给你安排明白.

clear指令

功能:清屏

ls指令

(list)
功能:罗列当前目录下的文件名(包括文件和文件夹)

补充:linux下的目录等价于windows下的文件夹,所以不管是文件夹还是目录都指的是一个东西。

mkdir指令

功能:在当前目录下,新建一个目录/文件夹

cd指令

(change directory)
功能:更改路径

类似于windows中在一个文件夹里双击其中一个文件夹,然后进入到这个双击的文件夹里。

touch指令

功能:在指定目录下,新建一个普通文件

看上面指令,当我们进入到刚刚创建的test_mulu 文件夹时,用ls指令后文件夹里没有任何文件,这里就可以用touch指令创建一个空文件。

注意要和mkdir指令区分,mkdir指令是创建文件夹,而touch指令是创建文件。

三、指令详解

ls详解

这里我想问一个问题,创建的空文件test.c它的大小为0kb,那它会不会占用磁盘空间呢?

答案是肯定的,因为就算一个文件是空文件,但是它有文件名,文件类型,文件修改时间等信息,包括这个大小为0kb也是文件的信息,这些信息叫做文件的元数据或者属性信息 。所以:

文件 == 文件内容 + 文件属性

所以上面我们介绍ls指令时它展项出的文件名就是文件属性,只不过它只会展现文件名一个属性,如果我们想查看文件的更多属性,就可以使用指令: ls -l (-l 一般代指详细)

小编这里补充一点,linux系统中,可以存在隐藏文件,隐藏文件往往以.开头,比如下面我们分别创建了一个隐藏文件和隐藏文件夹:

这样创建的隐藏文件用 ls 或者 ls -l 都无法看到, 需要在后面再加上 -a (a代表all),-a可以显示当前路径下的隐藏文件或者文件夹:

这里的 -l -a 叫做指令的选项 ,它可以让指令执行不同的操作,并且顺序不重要,合在一起、分开写都可以。

windows系统里其实也有隐藏文件夹,windows系统的隐藏文件夹不一定的以.开头。(隐藏文件夹一般是为了防止用户误操作删除文件,因为删除文件需要知道文件名)。

pwd/cd 详解(多叉树文件结构)

在此之前,小编介绍一下两个概念:路径和路径分隔符

不管是左斜杠还是右斜杠都叫做路径分隔符,两个路径分隔符之间的内容是文件夹或目录,路径分隔符和目录组合到一起就是路径。

在linux系统中,一个.通常表示当前路径,两个.表示上级路径,下面是这个概念用在cd指令上的效果:

我们看上面在退到最后的/时发现退无可退了,那这个/是有什么特殊性质吗?其实这是linux系统的根目录,下面小编来详细介绍。

在linux系统里,把路径的第一个路径分隔符称为根目录,这里我们可以知道根目录肯定的一个目录,那根代表什么意思呢?这里就牵涉到linux的文件结构特点了,linux的整个文件结构其实是一个树状结构,我们来看下图:

这个树状结构是一棵多叉树,这棵树上的每一个结点都是一个目录(叶子结点除外),所以目录是这个树形结构的基础,这里小编可以得出三个结论:

1、这棵多叉树的叶子结点一定是普通文件或者空的文件夹。 2、路上节点(非叶子结点)本质就是文件夹或者目录。

3、多叉树除了根节点以外的任意一个结点都只有一个父节点。

有了上面的结论就可以解释先前小编提到的一个结论:路径具有唯一性,原因就在于任何一个多叉树的结点都只有一个父结点,所以当从根目录/向目标文件定位时,路径是唯一的,或者说在多叉树中存在一条且唯一一条路径可以让根目录走向目标文件。

比如从根目录到src:

/usr/src

这个就是从根目录定位到src的唯一路径,并且这是绝对路径,这里小编又引入了一个概念,下面来仔细讲解。

绝对路径/相对路径

路径存在的意义:树状组织⽅式,都是为了保证快速定位查找到指定的⽂件,⽽定位⽂件就需要具有唯⼀性的⽅案来进⾏定位⽂件。
绝对路径 :以根目录为基准到目标文件的一条唯一路径。

cd指令 ls 指令 都可以通过直接路径跳转和访问

在介绍相对路径之前小编先输出一个结论,在linux系统中,任何目录里,包括根目录,都要隐藏存在 . (当前目录路径)和 ...(上级目录路径),(两个相对路径)这两个东西可以理解成目录里存放的两个指针,一个指向它自己,一个指向它的父节点,所以我们可以 cd . .回退到它的父结点。

至于为什么我们退到根目录就不能再退了,因为根目录的 . . 可以理解成是指向自己的。
一个.的使用场景:当我们要在linux下运行可执行程序时,需要先把它加载到内存里,那就要先找到这个可执行程序。又因为可执行程序也是一种文件,所以就需要通过它的路径找到,首先可以通过绝对路径+可执行程序告诉操作系统可执行程序在哪,如果你本身处在可执行程序所在的目录,也可以 . + 可执行程序,以相对路径的方式告诉操作系统可执行程序在哪个路径下。

相对路径:

以当前所处目录为基准访问目标文件的路径

上面的第一个是绝对路径,下面两个是相对路径,这里我们可以看到,相对路径有两个,是不是意味着相对路径不能唯一标识一个文件呢?实则不然,这里也是小编刚接触这个知识的误区,所谓唯一标识是指当路径确定后,你访问的文件就确定了,这也符合上面的两个相对路径,如果相对路径不能唯一标识文件的话,也就是指. . / . ./ . ./这个相对路径访问到的文件夹不一定是root,那么我想编译器就会报错,因为它无法确定访问的是那个文件。

所以无论绝对路径还是相对路径,都能标识文件的唯一性。

如果读者朋友感觉理解有点困难,小编这里还想输出一个观点,这个世界上只有相对路径,绝对路径就是参照点一直是根目录的特殊的相对路径。
实践中绝对与相对路径什么时候使用:

1、配置文件,配置各种路径,建议绝对路径

2、常规操作统一使用相对路径

cd详解(家目录)

cd指令我们之前介绍了:

cd 文件名(这里是指以当前目录为基准来找这个文件名)

cd , ,

除了这两个之外它还可以cd 绝对路径 直接跳转到目标路径,也可以cd 相对路径跳转。

下面我们来看一个有趣的选项:

不论我们当前在哪个目录,只要 cd ~ 都会跳转的 /root ,这个 ~ 和 /root 都代表什么意思呢? 其实 /root 是root用户的家目录,类比windows系统中C盘里的用户文件夹,我这里截取一部分windows家目录的文件给大家看看:

每一个windows用户的家目录都是属于这个用户的,那么按理来说每个用户的家目录里的文件都是不一样的,也就是说如果你在电脑上登陆其他用户的windows账号,就能看到他的桌面等一系列文件.这个文件夹在linux下就是家目录,只不过linux分为超级用户和普通用户,它们的家目录是不同的,一般超级用户的家目录是 /root ,普通用户的家目录是 /home/xxx
所以 cd ~ 就是进入当前用户的家目录
还有一个选项: cd - 可以回退到上一次路径

touch详解

这里小编再补充一条指令,stat(status)它可以查看文件的状态信息,这里最重要的是查看文件的三种时间,而这三种时间具体是什么,我们以后再介绍,我们这里新建一个文件并查看它的状态信息:

这里我们就要介绍touch指令除了新建一个不存在文件外,还可以更改已存在文件或目录的日期时间:

mkdir详解

mkdir我们前面介绍的是可以创建一个空目录,那么可不可以一次性创建一串目录呢?当然是可以的,在此之前,小编再介绍一个指令:tree,它可以把当前的文件结构以树状结构打印出来,非常直观:

我们可以看到新建的dirc目录确实是空目录,如果要一次性创建一串目录就需要加上 -p(path)选项,效果如下:

linux文件类型

在windows中,文件类型是由文件后缀决定的,而linux不是这样,linux的文件类型是取决于ls -l,使用指令ls -l后看到的众多文件属性的第一列的第一个字符,以d开头表明该文件是目录文件,-开头表明该文件是普通文件,linux下,文本文件,二进制可执行程序,图片,视频音频等都是普通文件。

如果想查看文件的更多信息,可以用指令 file:

我们前面讲linux系统不以文件后缀区分文件类型,但是并不意味着linux不能用文件后缀,因为加不加都没影响,所以我们平时可以把文件后缀加上,可读性更强。

注意:我们这里谈的是linux系统不以文件后缀决定文件类型,但是有一些工具如gcc会关心文件后缀。

删除指令 rmdir/rm

rmdir是用来删除目录的,并且它只能删除空目录。

rm 指令不仅可以删除目录,还可以删除普通文件:

我们可以看到,因为当前我们是超级用户,权限很大,并且linux系统下文件删除后不可恢复,所以系统会提示是否删除,y是同意系统删除,n就是不同意,有的读者可能会认为这样太墨迹了,所以我们也可以后面加 - f (force) 强制删除:

如果 rm 要删除目录的话,不论是否是空目录,都必须要加 -r (recursion)

才能删除,因为目录是树状结构,所以只能递归删除,recursion就是递归的意思。

四、一些补充

当你的操作出现终止不了的情况时,ctrl + c 可以终止正在做的操作。

以上就是小编分享的全部内容了,如果觉得不错还请留下免费的赞和收藏
如果有建议欢迎通过评论区或私信留言,感谢您的大力支持。
一键三连好运连连哦~~

相关推荐
早起的年轻人3 小时前
CentOS 8系统盘大文件查找方法
linux·运维·centos
心灵宝贝3 小时前
Linux CentOS 7 安装 zip-3.0-11.el7.x86_64.rpm 详细步骤(命令行教程)(附安装包)
linux·运维·centos
挺6的还3 小时前
50.Reactor反应堆模式
linux
Thexhy4 小时前
在Centos的Linux中安装Windows10系统
linux·运维·经验分享·学习·centos
Lzc7744 小时前
Linux的Socket编程之UDP
linux·socket编程之udp
zimoyin5 小时前
Linux 程序使用 STDOUT 打印日志导致程序“假死”?一次线上 Bug 的深度排查与解决
linux·运维·bug
杜子不疼.5 小时前
【Linux】操作系统的认识
linux·运维·服务器
Dovis(誓平步青云)6 小时前
《Gdb 调试实战指南:不同风格于VS下的一种调试模式》
linux·运维·服务器
小-黯6 小时前
Ubuntu离线安装软件包
linux·运维·ubuntu
学不动CV了6 小时前
C语言(FreeRTOS)中堆内存管理分析Heap_1、Heap_2、Heap_4、Heap_5详细分析与解析(二)
linux·c语言·arm开发·stm32·单片机·51单片机