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

【Linux系统】—— 基本指令(一)

【Linux系统】—— 基本指令(一)

  • 1 「ls」指令
    • 1.1 初识 「ls」 指令
    • 1.2 「ls -l」
    • 1.3 认识文件
    • 1.4 「ls -l」显示的内容
    • 1.5 如何区分文件类型
    • 1.6 「ls -a」
    • 1.7 混合使用命令行选项
    • 1.8 「ls」查看指定目录下文件
    • 1.9 「ls」 指令常用命令行选项
  • 2 「pwd」 指令
    • 2.1 「whoami 」指令
  • 3 「cd」 命令
    • 3.1 初识 「cd 」命令
    • 3.2 再探 『 . 』 和 『 .. 』目录
    • 3.3 根目录
    • 3.4 绝对路径与相对路径
    • 3.5 「cd ~」与「cd -」
  • 4 「touch」 命令
    • 4.1 初识 「touch」 指令
    • 4.2 文件的时间
      • 4.2.1「stat」 指令
      • 4.2.2 文件的三个时间
    • 4.3 「touch」 指令命令行选项
  • 5 「mkdir」 命令
    • 5.1 初识 「mkdir」
    • 5.2 「mkdir」 创建一串路径
    • 5.3 「tree」 命令
  • 6 指令的本质

1 「ls」指令

1.1 初识 「ls」 指令

  • 语法:「ls」 [选项] [目录或文件]
  • 功能:对于目录,该指令列出该目录下的所有子目录与文件。对于文件,该指令列出该文件名及其相关信息

  简单来说,「ls」 指令就是显示当前目录下的文件
  

  • 那么目录是什么呢
    这里补充一个重要的知识点:
    在 Linux 中,目录相当于 windows 中的文件夹
    目录 == 文件夹
  • 当前目录:当前我这个用户所处的目录
    好比当前你问我在哪里,我回答我在我家里,我家在某市某区某单元。我们人类世界中,地址就是一个典型的目录,它是用来定位你当前在哪里。Linux 中的目录也是一样的

在这里插入图片描述

  

  如果当前目录下没有任何文件或目录即一个空目录(空文件夹),ls 是不会显示任何东西
  
在这里插入图片描述

  

1.2 「ls -l」

  其实,在 「ls」 后面加上 「-l」 也可以显示当前目录下的文件或目录

在这里插入图片描述

  我们发现,仅仅只有 「ls」 指令,只显示当前目录的文件名或目录名;而 「ls -l」 前面还显示出了一堆信息,虽然现在的我们也许还看出懂这些信息的含义。
  

我们先来介绍一些基本的概念:
  我们在命令行中:输入的 「ls」 字符串,我们称之为命令;而后面的 「-l」 (「ls」和 「-l」中间有个空格不要忘记),这种以 「-」 开头的,我们将其称为命令行选项。命令行选项可以是0个或多个,多个命令行选项都是用空格隔开的。

   「ls」默认只会显示文件名(目录名),而「ls -l」则显示文件名和更多的内容
  

1.3 认识文件

  既然加上「-l」可以显示文件的更多内容,那么文件又有什么内容呢?

  现在我问大家一个问题:windows 系统中,我们新建一个空文件,里面没有任何内容,这时它要不要在磁盘上占用空间呢?

  答案是要占据磁盘空间

  文件,除了我们经常关心的文件内容,文件还有文件名、日期,类型、大小等等其他很多东西
  
在这里插入图片描述

  像文件名,文件类型,修改时间等等这些,我们称之为文件的属性。而文件的属性也是数据,这些数据也是要被存储下来的
  什么是属性呢?就好比一个人的身高、体重、性别、籍贯等,这些就是一个人的属性,这些信息在你的学校中都会记录下来,你的学籍档案中都有。
  
  所以不要认为一个文件,磁盘只存储文件中的内容,磁盘存储的是文件的属性加内容。
  上述图片中大小显示的是 0 字节,这仅仅统计的是文件内容的大小,而文件的实际大小还要加上文件的属性
  
  我们得出的结论是:文件 == 内容 + 属性
  既然 文件 == 内容 + 属性,未来我们学习文件的时候,要么是对文件的内容进行操作,要么是对文件的属性进行操作
  

1.4 「ls -l」显示的内容

  对文件有了更进一步的了解后,我们来看看「ls -l」所显示的内容
  「ls」只会显示文件(目录)的文件名,而「ls -l」还会进一步显示文件(目录)的属性

在这里插入图片描述

  「ls」命令更准确来说是显示文件(目录)的属性只有「ls」,只显示文件名这一属性;加上「 -l」显示更多属性
  

1.5 如何区分文件类型

  Linux 中是如何区分文件的类型呢?我怎么知道他是普通文件还是目录呢?
  在 windows 系统中,我们可以直接看出来,因为 windows 系统中每一个文件都有它对应的后缀(.zip、 .pdf、 .txt、.jpg)

  而 Linux 并不是通过后缀来区分,它一般通过「ls -l」指令显示出的信息中的 第一大列的第一个字符来区分

如图:
  
在这里插入图片描述

  如果第一个字符是 「d」,表示它是一个 目录;如果是 「-」 表示它是一个 普通文件
  这里,我们暂时只介绍这两种文件
  我们也可以看到,Linux 默认将目录标记为蓝色;普通文件不做处理,依然是白
  

1.6 「ls -a」

  这里我们再介绍一个选项:「-a」

  我们先来看看输入 「ls -a」 命令会发生什么
  
在这里插入图片描述

  我们发现又多了两个目录(他们是 d 开头):.. .
  
  现在我们进入空目录中(怎么进入等会介绍),我们知道对于空目录「ls」是不进行任何显示

在这里插入图片描述

  
  现在我们加上命令行选项「-a」会发生什么呢

在这里插入图片描述

  
  发现依然是多了两个目录:.. .
  为什么「ls」看不到,而「ls -a」可以看到 .. . 呢?
  
  我们先来介绍一下 隐藏文件(目录)
  在 Linux 中,以 『 . 』开头的文件(目录)叫做 隐藏文件(目录)

在这里插入图片描述

  所以「ls -a」就是显示包括隐藏文件(目录)在内的所有文件(目录)
  而 『.』和 『.. 』目录都是以 『.』 开头,是隐藏文件,「ls」与「ls -l」是不会查看隐藏文件(目录)的

  至于『.』 和 『..』目录是什么,我们后面再介绍
  

1.7 混合使用命令行选项

  前面我们知道命令行选项可以是多个,那可不可以「-a」和「-l」同时使用呢?是可以的

在这里插入图片描述

  
   那「-l」再「-a」呢?是可以的,而且效果一模一样

在这里插入图片描述

  
  不仅如此,还可以省略写法:「ls -la」及 「ls -al」

在这里插入图片描述

  Linux 的指令,绝大部分的指令所带的选项(命令行选项),是否分开写、是否连着写、是否按顺序写完全没有关系

  

1.8 「ls」查看指定目录下文件

  「ls」默认查看的是当前目录下的文件

在这里插入图片描述

  「ls」后面也可以指定目录,查看指定目录下的文件

在这里插入图片描述

  

1.9 「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」:在 I 文件名后输出该文件大小。(大小排序,如何找到目录下最大的文件)
  • 「-R」:列出所有子目录下的文件。(递归)
  • 「-1」: 一行值输出一个文件

  
  

2 「pwd」 指令

  但 Linux 系统,我怎么才能知道自己当前所处的路径(所处的目录)是哪个呢

  这时就可以用到 「pwd」 指令

  • 语法:「pwd」
  • 功能:显示用户当前所在的目录(所处路径)

  当我们用超级用户(root)登录系统时,我们默认在 /root 目录下

在这里插入图片描述

  当我们用普通用户登录系统时(假设是user1),默认是在 /home/user1 目录下

在这里插入图片描述

  

  • 我们知道,在 windows 中是用 「 \ 」 作为路径分割符
  • 而在 Linux 中,则用 「 / 」 作为路径分割符
  • 在两个「 \ 」(windows)或两个「 / 」(Linux) 之间的一定是一个文件夹(目录)
  • 所谓路径本质就是由 多个目录 构成的
  • 而路径的最末端(如上述 user1)有可能是目录,也有可能是普通文件

  

2.1 「whoami 」指令

  这里我们补充一条指令

  • 语法:「whoami 」
  • 功能:显示当前用户名称

  在这里插入图片描述
  
在这里插入图片描述

  
  

3 「cd」 命令

3.1 初识 「cd 」命令

  • 语法:「cd」 目录名
  • 功能:改变工作目录,将当前工作目录改到指定目录下

  既然「cd」是改变目录,那肯定要知道变成什么样子,因此「cd」后面要加指定目录的目录名

  如:我现在在 113目录 下,通过「cd」进入到 root目录 下

在这里插入图片描述

  

3.2 再探 『 . 』 和 『 … 』目录

  前面我们知道『 . 』 和 『 .. 』是隐藏目录,但是他们又是什么呢
  现在我们来正式了解一下

  • 在 Linux 中,任何一个目录(包括空目录)系统都会默认自带两个目录:...
  • . 』 和 『 .. 』是隐藏目录,他们是以『 . 』开头,正常来说看不到
  • . 』表示当前目录;『 .. 』表示上级目录

  
  先来看『 . 』(当前目录)

在这里插入图片描述

   可以看到,输入cd . 我们一直在当前路径下

  我们再来看『 .. 』(上级目录)

在这里插入图片描述

  可以看到输入cd ..,我们不断往上级目录退

  相信『 . 』 和 『 .. 』很好理解,这里就不再过多赘述了
  

3.3 根目录

  但是我们能一直回退吗?

在这里插入图片描述

  我们发现,回退到一定程度时,就回退不了了,这时因为回退到了根目录

  前面我们曾说 「 / 」 是路径分割符,但是有一个 「 / 」 非常特殊:整个路径中最开始「 / 」
  Linux 中,我们将路径中 第一个「 / 」称为根目录
  Linux的目录结构由「 / 」开始

  而根目录本质也是一个文件夹,既然是文件夹,那它里面肯定也是可以放文件和文件夹的
  我们可以通过 「ls」 看看根目录的文件

在这里插入图片描述

  
  所以 Linux 的文件结构,是一棵从根目录「 / 」开始的多叉树

在这里插入图片描述

  这棵树的 叶子结点 一定是普通文件或者是空目录非叶子结点 一定是一个非空目录!
  

3.4 绝对路径与相对路径

  上图中,我们想找到 test.c 文件怎么找呢。
  是通过路径来找的:/home/bit/test.c
  为什么能这样找呢?因为一个节点虽然能有多个孩子,但只能有一个父亲,所以从叶子结点逆向地向回找,该路径具有唯一性

  我们把这种从根目录开始一直定位到目标文件的方式,我们称之为:绝对路径

  这里我们再来聊聊路径这一概念:linux 中我们要访问一个文件,前提是你先找到他,而找到一个文件我们必须要通过路径来找到。这就是为什么 windows 和 linux 下都要谈路径。而绝对路径具有唯一性,所以我们通过绝对路径可以快速找到一个文件。

  在 linux 中要找到一个文件,除了绝对路径还有一种方式:相对路径
  相对路径:以当前目录为参照位置,定位一个文件
  比如 cd .. 就是以当前目录为参照点,返回当前目录的上级目录,这就是一个相对路径

在这里插入图片描述

:使用相对路径可以 cd 「文件(目录)名」cd 「./」+「文件(目录)名」 。如 cd ./113cd 113 都是可以的

  绝对路径一般在 linux 系统重配置文件来使用
  相对路径我们日常操作用的多,因为比较简单

  

3.5 「cd ~」与「cd -」

  「cd」命令除了使用绝对和相对路径,还可以使用两个特殊符号:~-

  • 「cd ~」 :进入当前用户自己的家目录

  这里先简单介绍一下家目录:任何一个 linux 用户,用特定的用户名登录系统时,默认在家目录下
  以超级用户登录(root账号),默认在 /root 路径下
  以普通用户登录,默认在 /home/用户名 路径下

在这里插入图片描述

  

  • 「cd -」:返回最近所处路径

  

在这里插入图片描述

  
  

4 「touch」 命令

4.1 初识 「touch」 指令

  • 语法:「touch」 [选项]… 文件…
  • 功能:「touch」命令可以更改文档或目录的日期时间,包括存取时间和修改时间;或者新建一个不存在的文件

  「touch」是用来 创建普通文件 的:

例如:创建新文件 hello.txt
  在这里插入图片描述

  但是 「touch」命令不能创建文件夹

  此外「touch」命令还可以更新一个文件所对应的时间

在这里插入图片描述

  

4.2 文件的时间

  现在我们知道文件包括文件内容文件属性,其中文件属性中有一种属性是非常重要的:文件时间
  文件的时间如果乱了,那这个系统就乱了。任何一个文件新建的时候都要有自己时间的概念
  一般文件的时间有三种,怎么查看呢?这里我们介绍一个新指令:「stat」

  

4.2.1「stat」 指令

  「stat」 就是 state(状态)的意思:显示一个文件或目录的属性

在这里插入图片描述

  通过 「stat」 指令,我们就可以看到一个文件详细的属性介绍
  

4.2.2 文件的三个时间

  虽然上面显示出的文件属性我们很多看不懂,但没关系,今天我们来看看文件的三个时间

在这里插入图片描述

  文件一般都有三种时间:Access时间Modify时间Change时间。为了方便记忆,这三个时间可以记为:ACM时间

  在 Linux 系统中,文件的属性通常与文件的访问、修改以及状态改变相关联。具体来说,access、modify(有时也称为 change,但在此上下文中我们通常区分两者)、change(这里特指 inode change time)指的是文件的不同时间戳,它们各自代表了文件的不同方面的变化。

  • Access Time (atime):
    • 访问时间是指文件数据最后一次被读取(访问)的时间。这包括使用如 cat、more、less 等命令查看文件内容,或者使用 grep 等命令搜索文件内容时的最后一次操作时间。然而,值得注意的是,很多文件系统(特别是挂载时使用了 noatime 或 relatime 选项的文件系统)为了减少磁盘写入操作,可能会优化或忽略 atime 的更新。
  • Modify Time (mtime):
    • 修改时间是指文件内容最后一次被修改的时间。这包括了对文件内容的任何写入操作,如使用文本编辑器修改文件、向文件中追加数据等。mtime 是文件内容变化的直接反映。
  • Change Time (ctime):
    • 状态改变时间(或 inode change time)是指文件的状态( inode 信息)最后一次被改变的时间。这不仅仅包括文件内容的修改(这也会更新 mtime),还包括了文件权限、所有者、链接数(有多少文件名链接到 inode)等的改变。简而言之,任何导致文件 inode 信息发生变化的操作都会更新 ctime。因此,即使文件内容没有改变,但如果其权限或所有者等属性发生了变化,ctime 也会更新。

  

4.3 「touch」 指令命令行选项

  • 「-a」:或 --time = atime 或 --time=access 或 --time=use 只更改存取时间
  • 「-c」:或 -no-create 不建立任何文档
  • 「-d」:使用指定的日期时间,而非现在的时间
  • 「-f」:此参数将忽略不予处理,仅负责解决 BSD 版本 「touch」 指令的兼容性问题
  • 「-m」:或 --time=mtime 或 --time=modify 只更改变动时间
  • 「-r」: 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同
  • 「-t」:使用指定的日期时间,而非现在时间

  
  

5 「mkdir」 命令

5.1 初识 「mkdir」

  • 语法:「mkdir」 [选项] dirname…
  • 功能:在当前目录下创建一个名为 “dirname” 的目录

  「touch」 命令是创建一个普通文件,而「mkdir」则是创建一个目录

在这里插入图片描述

  

5.2 「mkdir」 创建一串路径

  直接用「mkdir」创建一个目录很简单,这里就不再多说了。如果我想创建一串路径,比如:当前我在 newdir 目录下,我想在当前目录下创建 a/b/c 路径,「mkdir」可以做到吗。

  我们试一试

在这里插入图片描述

  可以看到,直接这样创建是不行的。「mkdir」无法一次性创建这样的路径,它无法创建目录的结构

  如果要创建一串目录的结构,我们可以用到命令行选项:「-p」「-p」可以一次性创建一串路径

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

  我们来试试

在这里插入图片描述

  可以看到是成功创建了的,我们是可以进入到 a、b、c 目录下的

  

5.3 「tree」 命令

  像上面我们分别进入到 a、b、c 目录下去查看目录太过繁琐,也不够直观。有没有什么方式可以只看看出当前目录的结构呢?这时我们就可以使用 「tree」命令

  在 Linux 系统中,「tree」命令是一个非常有用的工具,用于以树状图的形式递归地列出目录的内容。这个命令可以非常直观地展示目录结构,包括子目录和文件,以及它们的层级关系。

如:

在这里插入图片描述

  
  「tree」 命令默认显示当前目录下的结构,当然,后面可以加上路径,查看指定目录的目录结构

在这里插入图片描述

  
  需要注意的是,在默认情况下,Linux 系统可能并不自带「tree」命令,但我们可以通过你的 Linux 发行版的包管理器来安装它。
  centos 可以通过输入代码:yum install -y tree 来安装;ubuntu 可以通过输入代码:apt install -y tree 来安装

  
  

6 指令的本质

  前面讲了这么多,相信大家对指令已经有了模糊的概念,但是指令的本质是什么呢

   「which 」指令可以帮助我们了解指令的本质
  Linux 中的 「which 」 指令是一个常用的命令,主要用于 查找并显示指定命令的绝对路径

在这里插入图片描述

   先讲结论:命令本质上就是我们系统中的文件! 而且是以 「- 」开头,我们称之为普通文件。也就是说当我们在系统中执行对应的命令时,实际上这一个个命令就是一个个文件罢了!

   命令(指令)就是文件!
  
   那这样的话,我们直接输入指定命令的路径,也可以实现相关功能咯?
  
确实如此

在这里插入图片描述

   命令的本质 == 可执行文件 == 我们写的C/C++程序

  命令本质上就是别人用 C/C++ 等语言写出来的可执行程序罢了

  那是不是意味着我们自己写一个简单的C代码,生成一个可执行文件也可以跑起来呢?
我们试一下

在这里插入图片描述

  可以看到,我们输入相关路径,确实执行了 C语言 代码

  为什么要加 「./」 呢?因为要执行一个命令就要先找到这个命令,而我们自己写的 mycmd 命令就在当前目录下的 mycmd 文件

  可是系统命令也是可执行程序,为什么可以不用带路径就可以直接执行呢?

  我们将 mycmd 命令拷贝到 /usr/bin 目录下,发现它也可以不带路径,像命令一样运行

在这里插入图片描述

  我们刚刚安装了 「tree」 命令,安装命令的本质就是将其从网络里下载下来,将其拷贝到指定的 /usr/bin 目录下,「tree」 命令就能直接跑了。
  刚刚我们将 mycmd 拷贝到 /usr/bin 目录下,本质就是在做 linux 下的软件安装。其实 大部分的安装都只是拷贝罢了,将相应文件拷贝到指定目录下

  
  
  
  


  好啦,本期关于基本指令的知识就介绍到这里啦,希望本期博客能对你有所帮助。同时,如果有错误的地方请多多指正,让我们在 Linux 的学习路上一起进步!


http://www.mrgr.cn/news/64759.html

相关文章:

  • 回归预测 | MATLAB实现基于RF-Adaboost随机森林结合AdaBoost多输入单输出回归预测
  • 程序员日志之DNF手游1023版本活动补充
  • 「iOS」——知乎日报一二周总结
  • glsl基于LTC的面光源渲染 - 矩形光通过three.js
  • Java面向对象编程高级-枚举类(四)
  • C/C++--10--VS2008编译C语言时如何将const LineA * 里面的值赋值给另外一个结构体LineA?
  • ceph灾备之cephfs snapshot mirror和rsync对比
  • Java编码编程2(juc常用的类,线程池)
  • 第三方支付系统架构设计
  • Django3 + Vue.js 前后端分离书籍添加项目Web开发实战
  • 细说STM32单片机USART中断收发RTC实时时间并改善其鲁棒性的方法
  • celery在django项目中实现并发任务和定时任务
  • 顺德自闭症全托管学校:专业照顾,细心呵护
  • C++笔试题之实现一个定时器
  • OCC布尔接口调用 ,交并差等,举例说明
  • 【机器学习】机器学习与成像技术:开启智能视觉的新篇章
  • 干货指南:原生住宅IP代理如何判断真伪?
  • 编程入门:大学新生的指南
  • stm32f103c8t6的原理图
  • 用插值公式实现滚动进度条动画效果
  • rust编写的系统监测器
  • Vue进阶指南:Watch 和 Computed 的深度理解
  • 【电力系统】MATLAB环境下基于神经网络的电力系统稳定性预测
  • c语言-8进制的表示方法
  • 【基础语法】Java Scanner hasNext() 和 hasNextLine() 的区别
  • Netty 组件介绍 - ChannelFuture