当前位置: 首页 > news >正文

Linux01:基础指令与相关知识铺垫(一)

       

文章目录

一、粗过基础指令

二、ls 指令

三、pwd指令和cd指令

四、路径的认识

4.1绝对路径与相对路径

4.2家目录

五、touch指令

5.1touch指令

5.2补充命令:stat

5.2.1Access时间

5.2.2Modify时间

5.2.3Change时间

六、mkdir指令

6.1mkdir指令

6.2补充命令:tree

七、Linux文件类型

八、rmdir 指令&&rm指令

8.1rmdir指令

8.2rm指令


        指令是控制Linux系统的基本方法,我们第一步学习Linux指令先不直接一个一个讲,而是先带大家粗略的认识6~8个基础指令,再一个一个详细讲解后面的指令,因为讲指令就必须涉及做实验,而做实验也要组合使用指令才能有效果,因此先粗略过一些会用到的基础指令,懂得了最最常用的一些指令,就方便讲解更加复杂的指令了。

一、粗过基础指令

  • clear命令,当我们屏幕上铺满信息的时候,我们就可以用这个命令清空全屏
  • pwd命令,显示我们当前处于哪个工作路径
  • ls命令,查看当前目录下的所有文件,ls -l命令可以显示文件更多的信息
  • mkdir 文件夹名,用于在当前目录下创建文件夹,该操作就相当于在当前文件夹下鼠标右键创建文件夹
  • cd命名,用于跳转文件路径,假如我们刚才mkdir创建了一个learn文件夹,则cd learn就跳转到了learn文件夹中,如果是cd ..则返回了上级目录,..就表示上一级路径

二、ls 指令

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

        功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。本质就是罗列文件属性!

        ls -l后面的 -l 部分的内容叫做选项,选项可以让我们使用指定命名的扩展功能。

常用选项:

  • -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 一行只输出一个文件。

        如何理解文件?我们在windos中创建一个空文件,那么这个空文件是否会占磁盘空间?答案是会的,因为文件并不是简单的等于文件的内容,文件也是有文件名、修改时间等等信息的,这些信息叫做文件的属性数据,也叫做元信息,文件本身是有对应的属性的,我们的操作系统能够识别文件就是因为知道文件的属性,无论文件中是否含有内容。因此文件所占据的磁盘空间应该 = 文件的内容 + 文件的属性,学习文件本质无非就是对内容或者属性做操作。

        这里我们创建一个learn的文件夹,然后cd 进入该文件夹,在learn文件夹中通过touch创建一个test.c文件。

        当我们输入ls -l就可以看到当前文件的详细信息:

        接下来我们来讲ls 的下一个选项-a,这个-a选项可以列出目录下的所有文件,包括以.开头的隐藏文件,例如:

        这里我们使用touch在learn文件夹下创建了.hello隐藏文件,可以看到使用常规的ls命令是看不到以.开头的隐藏文件的,默认不显示隐藏文件,只有使用-a选项才可以显示出来。同时这里也显示了 . 和 .. ,这2个其实也是隐藏文件。

        那么现在,如果我们既想显示隐藏文件又想显示详细文件,应该怎么办呢?我们的选项既可以分别设置,也可以组合设置,而且没有前后关系,因此,选项可以自由组合,示例如下:

三、pwd指令和cd指令

        语法:pwd

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

        常用选项:无

        语法:cd 目录名

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

        我们先拿出Windows和Linux的文件路径进行比较一下:

Windows: C:\Users\huanghaocheng
Linux: /home/root_15023665523/learn

        我们Windows的文件目录中的反斜杠\和Linux文件目录中的斜杠/都是路径分割符。

        当我们使用ls -al时,几乎都可以看见 .. 和 . , .. 表示的是当前路径的上一级路径, . 表示的是当前路径。

        这里我们依次使用cd .. 和pwd指令,cd .. 返回上一级目录,pwd显示当前目录,可以看到我们一直在回退到我们的上一级目录中,最开始在/home/root_15023665523然后到/home最后到/。我们的cd ..一直回退会发现我们最终会回退到一个/的路径下就无法回退了,这个最后的/就叫做Linux的根目录。

四、路径的认识

        Linux管理文件,使用的是树形结构,磁盘上的文件和目录被组成⼀棵目录树,每个节点都是目录或文件,其中普通文件⼀定是目录树的叶子节点,即最末端的文件,无法再添加文件,空目录也是叶子节点,除了叶子节点外的其他目录都叫做路上节点。

        理解路径存在的意义:树状组织方式,都是为了保证快速定位查找到指定的文件,而定位文件就需要具有唯一性的方案来进行定位文件。其中任何一个节点,都只有一个父节点,所以,从根目录开始,定位指定文件,路径具有唯一性。

4.1绝对路径与相对路径

        我们的Windows系统也采用了树形结构的组织方式,我们的C盘、D盘等都可以看作是根目录的文件夹,叫做分区。

        绝对路径:一般从/开始,不依赖其他目录的定位文件的方式。

        相对路径:相对于当前用户所处目录,定位文件的路径方式。

        绝对路径一般不会随着用户的路径变化而丧失唯一性,一般在特定服务的配置文件中经常被使用,相对路径因为它的便捷性,一般在命令行中使用较多。

        . 表示的当前路径,pwd用于显示当前路径,如果我们先使用cd . 再pwd,我们会发现我们一直在当前目录下,并没有跳转,那这个有什么用呢?

        这里我们先写一个test.c代码,我们想用这个代码打印“hello world”,然后对代码进行编译链接生成可执行程序test.exe:

        我们运行可执行程序是将可执行程序从磁盘加载到内存,在内存中运行,但是放入内存还有一个前提就是我们得先找得到文件才能谈之后的运行,因此想要运行程序就必须告诉Linux系统我们要运行文件的路径才行,即使我们的当前路径就是文件的存储位置,那也只是我们用户知道,Linux系统并不知道,必须传给它路径信息才能运行。我们来运行一下:

        像我们现在这样只有几层目录嵌套还好,可以只用绝对路径传递路径信息,但是当目录嵌套过多时还使用绝对路径就非常麻烦,所以我们可以和程序文件在同一个路径下,接着使用 ./test.c传递文件路径信息,这样就可以让系统在当前路径下找到我们的程序,然后成功运行起来:

        这样我们就明白了为什么Linux系统中要存在 . 这个隐藏文件,它是为了方便我们快速定位当前路径。

        我们之前说路径是有唯一性的,那么请问相对路径也具有唯一性吗?答案是具有的,因为我们这里说的是相对路径本身是否具有唯一性,即使是相对路径,它回退还是只能回退到它的那一个父节点,即每一个子节点有且只有一个父节点,所以相对路径也是唯一的,但是为啥我们通过相对路径找同一个文件时,路径名不同呢?其实是相同的,无论是绝对还是相对,目标文件的父节点都只有一个,所以任意一个相对路径都是唯一的,但是对于同一个文件来说,可以有多个相对路径。

        补充一个小点,我们一直在说当前在哪个路径下,当前在哪个路径,那是谁当前在哪个路径下?这个谁应该怎么知道?这里我们可以使用whoami 这个指令来显示:

        再补充一个cd的相关知识,我们看下面的代码:

        这里我们先回到了learn路径的上一级路径,然后进入了learn路径,使用cd - 指令后,发现我们又回到了learn路径的上一级路径,再接着cd -指令后,发现又进入了learn路径,这个cd命令中的 - 选项就是指当前用户上一次所处的路径。之后我们在两个高频访问的目录下,需要进行快速切换时就可以用该命令。

4.2家目录

        如果我们使用不同的账号登录Linux,例如普通用户和超级用户在登录Linux之后可以发现,2个账户初始进入的路径是不同的,普通用户的初始路径以/home开头,超级用户的初始路径以/root开头,我们将一个用户登录后默认所处的路径称为家目录。

        Linux和Windows都是多用户操作系统,Windows系统中也有家目录的概念,我们用户登录Windows系统默认进入的桌面就是家目录,每一个用户都有自己的桌面,当我们切换用户时就会发现,之前用户的桌面放了许多东西,下一个用户的桌面可能就非常干净。

        为什么需要有家目录呢?请问你有没有发现当我们在浏览器中下载软件的时候,点击下载安装包,浏览器就是直接下载,但是没有询问我们下载路径,而是直接下载到了我们用户目录下的“下载”文件夹中。这就是为什么我们需要家目录,当我们进行下载等操作是能够有一个默认路径存放我们的下载内容,而不用反复询问存放路径。

        如果我们想要快速回到我们系统的家目录,可以使用cd ~ 这个指令,~就代表着当前用户的家目录。

五、touch指令

5.1touch指令

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

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

常用选项:

  • -a : change only the access time
  • -c:change only the modification time

5.2补充命令:stat

        在Linux中文件等于内容加属性,如果我们想要查看一个文件更详细的属性,可以使用stat [文件名]指令查看,包括文件大小、时间等信息。

        这里的文件属性有3个时间,我们常说的ACM时间就是这3个:Access、Modify、Change

5.2.1Access时间

        Access:最近一次访问文件的时间,无论是读取文件内容,还是修改文件内容或者属性,Access都会发生变化,修改文件内容或者修改文件属性的时候,Access的时间会立即更新;但是读取文件或者查看文件的操作,不会立即更新。

5.2.2Modify时间

        Modify:最近一次修改文件内容的时间,只要是修改文件内容,Modify的时间都会被更新,这个被视为低频操作,所以一般修改文件内容以后,会立即刷新。

5.2.3Change时间

        Change:最近一次修改文件属性的时间,修改文件属性也被视为低频操作,修改文件属性会立即更新Change的时间,只是单纯的修改文件属性,不会影响到Modify的时间。

六、mkdir指令

6.1mkdir指令

        语法:mkdir [选项] 目录名...

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

常用选项:

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

        上一个touch指令用于创建普通文件,当我们想要创建一个目录时,就需要用到我们的mkdir指令。如果我们想要创建一串路径,应该怎么办呢?

        例如想创建一个a中有b,b中有c,c中有d的一个路径,我们发现mkdir指令是无法直接创建的,该指令只支持一次创建一个目录。这时候我们就可以使用 -p 选项创建一连串目录。例如:

        这里我们可以看到,我们成功创建了a/b/c/c这样一条路径。

6.2补充命令:tree

        tree的意思是树,只要在tree之后加上路径,就可以查看对应路径的结构,但是tree命名不是Linux系统自带的,而且要下载tree只能是超级用户才有权限下载,对与root用户的安装方式有2中:

  • centos 7下:yum install -y tree
  • ubuntu: apt install -y tree

        例如:

七、Linux文件类型

        上述我们讲了touch指令创建普通文件,mkdir指令创建目录,那我们的Linux系统是怎么区分普通文件和目录的呢?这就要了解我们的文件类型了。Windows中要区分一个文件类型是什么,看的是文件的后缀,但是Linux区分文件类型,不关心文件后缀(并不代表不可以用),而是通过文件属性。

        我们用ls -l指令可以看到当前目录下的文件详情,这当中以文件显示的第一列的第1个字母来进行区分,以d开头的文件是目录,以-开头的文件是普通文件。Linux中的普通文件包括:可执行文件,文本文件,动静态库等等。

        虽然说Linux系统本身不关注文件后缀,但是当不属于Linux操作系统的操作要对文件进行修改的时候,就可能会要求文件后缀,例如:gcc编译器不属于Linux操作系统,要想用gcc编译我们Linux系统中的代码时,如果代码文件不适配gcc编译器,比方说用gcc编译.txt文件,虽然.txt文件中写了可以编译的代码,但是因为文件后缀不适配,所以会编译失败,但是如果是.c文件后缀就可以被gcc编译。

八、rmdir 指令&&rm指令

8.1rmdir指令

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

        语法:rmdir [-p] 文件名

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

        功能:删除空目录

常用选项:

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

        这里的dir1目录是空目录,rmdir指令可以删除,但是当我们想要删除a目录时,却报错了,因为a目录不是空目录,非空目录说明该目录下还包含着许多其他文件,删除它就相当于删除一个路径树,因此需要递归才能删除,这就要用到我们下面的rm指令。

8.2rm指令

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

        语法:rm [-f -i -r -v] 文件或者目录

        适用对象:所有使用者

        功能:删除文件或目录

常用选项:

  • -f 即使文件属性为只读(即写保护),亦直接删除
  • -i 删除前逐一询问确认
  • -r 删除目录及其下所有文件

        这里我们要删除普通文件file.txt,我们就可以直接rm + 文件名,当我们是超级用户时会自动询问是否确认删除,y表示yes确认,n表示no取消。但是当我们想要删除目录时,直接使用rm + 目录却报错了,这时候就需要用到-r选项了。

        我们可以看到-r删除目录是递归删除的,当我们每次进入对应的路径时都会询问是否确认,然后才依次删除。如果我们不想要删除目录时每进一个目录都询问一次,就可以使用-f选项,-f选项表示强制删除,不会再询问。

        rm命令还有一个-i选项,当我们每次执行rm删除命令时都会询问是否删除,对于超级用户的rm指令是默认带有-i选项的,而普通用户没有,因此普通用户想要在每次删除时添一道保护就会加上-i选项。

        好了,本次Linux操作系统的基础指令第一集就先讲到这里,下次我们还是接着基础指令讲,让我们尽情期待!

http://www.dtcms.com/a/506883.html

相关文章:

  • QueryWrapper - MyBatis-Plus的“查询条件构建器“
  • Linux外设驱动开发1 - 单总线驱动开发__dht11
  • 使用高性能流式的库SpreadCheetah来添加图片和合并表格单元
  • 建设银行网站建设情况免费招聘的网站
  • 手机上怎么做微电影网站徐州做网站谁家最专业
  • 【Mathematics】椭圆眼睛跟随鼠标交互中的仿射变换数学推导
  • 【u-boot】u-boot的分区支持
  • CG-FS-A3 风速传感器 485型 体积小巧 便捷安装 三杯式 聚碳材质
  • http和https区别如何转https
  • 国外的主要电机生产厂商
  • 英伟达公司发展历史
  • 网站首页文件名通常是无锡市建设安全监督网站
  • SQL之参数类型讲解——从基础类型到动态查询的核心逻辑
  • Linux中匿名设备和安全相关以及VFS的slab缓存对象创建
  • B.NET编写不阻塞UI线程的同步延时
  • 论文泛读:DYNAPROMPT: DYNAMIC TEST-TIME PROMPT TUNING(动态测试时调优)
  • 做 58 那样的网站北京公司网页设计
  • PyTorch实战(9)——从零开始实现Transformer
  • 18.SELInux安全性
  • Layui连线题编辑器组件(ConnectQuestion)
  • 电影网站加盟可以做么网奇seo培训官网
  • 【Linux】Socket编程TCP
  • Debian编译Qt5
  • [3-03-01].第07节:搭建服务 - 服务重构cloud-consumer-ocommon
  • Ubuntu Certbot版本查询失败?Snap安装后报错终极修复指南(通用版)
  • Kafka底层解析:可靠性与高性能原理
  • 分布式链路追踪中的上下文传播与一致性维护技术
  • 为已有nextjs项目添加supabase数据库,不再需要冗余后端
  • 网站建设怎样上传程序微信网站搭建多少钱
  • rabbitmq在微服务中配置监听开关