【寻找Linux的奥秘】第一章:基础指令

发布于:2025-03-10 ⋅ 阅读:(14) ⋅ 点赞:(0)

【寻找Linux的奥秘】第一章:基础指令

QQ20250309-161248

前言

本专题将介绍关于Linux操作系统的种种,那么第一章讲述的是对于命令行一些基础命令的使用,旨在可以更号地去理解并使用Linux系统。(本章节默认使用的环境是centos 7.8,使用root(超级用户)账号)

1. 认识Linux

Linux系统与我们平常使用的Windows、macOS系统一样,也是一款操作系统,不过与之不同的是linux操作系统凭借其免费、开源的特点一直被各大企业所喜爱。

Linux是⾃由软件和开放源代码软件发展中最著名的例⼦。只要遵循GNU通⽤公共许可证,任何个⼈和机构都可以⾃由地使⽤Linux的所有底层源代码,也可以⾃由地修改和再发布。随着Linux操作系统⻜速发展,各种集成在Linux上的开源软件和实⽤⼯具也得到了应⽤和普及,因此,Linux也成为了开源软件的代名词。

Linux的使用场景一般来说是命令行,但是它也有着自己的图形化界面,不过我们一般不会去使用,因为使用图形化界面是会占据一定的资源,一般为了极致的资源利用率,在很多地方是不用使用图形化界面的。那么这时,指令便是我们的“双手”,接下来将为大家介绍一些基本的指令,以便我们能够更好的去使用Linux。

2.基础指令

Linux的基本操作,是通过指令来进行的。接下来我们先来简单认识几个常见指令,以便接下来的学习:

  • pwd -> 显示当前所在的路径 QQ20250308-104324
  • whoami -> 显示当前正在使用的Linux账号名称QQ20250308-104402
  • ls -> 显示当前路径下所有文件以及目录的名称 QQ20250308-104539
  • mkdir -> 创建一个目录 QQ20250308-104602
  • cd -> 进入指定的目录 QQ20250308-104624
  • touch -> 创建一个文件 QQ20250308-104658
  • rm -> 删除一个文件 QQ20250308-104808

有了上面的基础认识,接下来让我们详细地去学习一些指令。

2.1 ls 命令

ls的功能:显示当前目录下所有的普通文件和子目录

ls指令的语法结构: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 ⼀⾏只输出⼀个⽂件。

对于上述指令,我们只需记住最常用的几个即可:如-l、-a。其他的当我们需要用到时再去查询即可

-l选项可以让我们看到详细的文件属性信息,-a可以显示隐藏文件

QQ20250308-221225

如上图所示,当指令一次性用到多个选项时选项可以合并,并且先后顺序不会影响。在使用-l选项显示详细信息时,对于最前面的那一行信息这里要告诉大家的是d开头的代表是目录,-开头的代表是普通文件。相信大家已经对ls指令以及选项有了一定的了解。那么接下来便讲解一些知识点:

文件 != 文件的内容

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

因为文件的内容和文件的属性都是数据,都需要保存起来。例如下图,我们在windows系统下创建一个空文件,虽然它的内容大小为0,但是它的各种信息例如访问时间等属性也是数据,也要被保存起来,所以空文件也是会占据内存的。QQ20250308-221733

上面对文件给大家进行了介绍,接下来是隐藏文件,顾名思义,隐藏文件就是我们不能直接看到的文件,一般来说存放一些比较重要的东西,可以防止我们对其他文件进行操作时对其进行误操作。在Linux系统下,以.开头的文件和目录为隐藏文件。在上图中出现的...两个隐藏文件(每一个目录中都存在)分别是当前路径和上级路径,我们可以用cd命令进行测试:QQ20250308-222823

2.2 pwd 命令

pwd命令特别简单,就是显示当前所在路径。

QQ20250308-223431

对于上图中红框圈住的/叫做路径分隔符

  • 两个路径分隔符之间的一定是一个目录。
  • 末端的文件可能是一个目录也可能是一个文件。

上面讲到每一个目录中都有一个隐藏文件..是上级路径,那么当我们一直cd到该路径会发生什么呢?

QQ20250308-224147

可以发现,让我们达到目录/时,再使用cd ..没有发生变化,这里的/就是Linux的根目录,它的..路径是它自己。至此,我们可以得出一个结论,Linux的所有文件的系统结构是一个多叉树

当我们想要访问一个文件的前提是要知道这个文件在哪里,这时我们就需要知道它的路径。路径分为两种,一种是相对路径,一种是绝对路径:

  • 绝对路径:以根目录开始到达指定位置。(绝对路径⼀般不会随着⽤⼾的路径变化⽽丧失唯⼀性,⼀般在特定服务的配置⽂件中经常被使⽤)
  • 相对路径:以当前位置到达指定位置。(相对路径因为它的便捷性,⼀般在命令⾏中使⽤较多)

例如我们要用ls查找一个文件的信息,有以下两种方法:QQ20250308-225156

2.3 cd 命令

cd命令的功能:改变⼯作⽬录。将当前⼯作⽬录改变到指定的⽬录下。

对于cd命令有两个特殊的符号:

  • 后跟 ~:进入特定用户的家目录。
  • 后跟 -:切换回最近的一次路径。

QQ20250308-230123

对于我们的root用户,它的家目录就是/root,我们该如何去理解家目录呢?简单来说,家目录就是用来保护用户私有信息的目录,是我们登录时默认所在的路径。

2.4 touch 命令

touch命令除了可以创建一个文件,还可以改变文件或目录的日期时间,包括存取时间和更改时间。

QQ20250308-231001

touch命令有两个常用选项:

  • -a :只改变access时间
  • -c :只改变modification时间

我们可以使用stat命令来详细显示一个文件的信息:

QQ20250308-231259

这里再补充一个Linux的知识点:

在Linux中,文本文件、二进制可执行文件(我们所使用的一个个指令就是一个个二进制可执行文件)、动静态库、视频、音频、图片等等被称为普通文件。

在Linux系统中,文件类型与文件后缀无关,但系统 != 软件,对于一些软件规定了文件的后缀名。因此,我们在创建文件时最好带上相应的后缀名。

2.5 mkdir 命令

mkdir命令的功能就是创建一个目录。

它有一个常用的选项:-p 可以连续创建目录,如下图所示:

QQ20250308-232104

可以看到我们连续创建了四个目录。tree + 指定目录命令可以以树形结构展示文件和目录结构。

2.6 rm 与 rmdir 命令

rmdir是⼀个与mkdir相对应的命令,mkdir是建⽴⽬录,⽽rmdir是删除目录。不过rmdir命令只能删除空目录,因此,我们一般都会使用rm命令。

rm命令的功能是删除文件或者目录。该命令有三个常用选项:

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

QQ20250308-232659

2.7 man 命令

Linux的命令有很多参数,我们不可能全记住,可以通过查看联机⼿册获取帮助,也就是man命令。

格式: man [选项] [需要查询的东西]

下图是对ls进行查询

QQ20250308-233348

常用选项:

  • -k 根据关键字搜索联机帮助
  • num 只在第num章节查找
  • -a 将所有章节的都显⽰出来,⽐如 man printf 它缺省从第⼀章开始搜索,知道就停⽌,⽤-a选项,当按下q退出,他会继续往后⾯搜索,直到所有章节都搜索完毕

man手册一共分为九章,我们能用到的基本上只有前三章:

  1. 普通的命令
  2. 系统调用,如open,write之类的(通过这个,⾄少可以很⽅便的查到调⽤这个函数,需要加什么头⽂件)
  3. 库函数,如printf,fread4是特殊⽂件,也就是/dev下的各种设备⽂件

2.8 cp 命令

cp命令的格式:cp [选项] 源文件或目录 目标文件和目录

cp命令的功能就是复制文件或者目录到指定的位置

QQ20250309-133147

如上图所示,我们将dir1目录下的a.txt文件复制到了dir2目录中,除了简单的复制,我们还可以在复制的时候改变复制之后文件的名字,如下图所示:

QQ20250309-133526

当我们想要复制一整个目录时,就需要加上-r选项:

QQ20250309-133654

上图即为将dir1目录在当前路径下复制一份并且命名为dir3。下面看一下cp命令的常用选项:

  • -f--force 强⾏复制⽂件或⽬录, 不论⽬的⽂件或⽬录是否已经存在
  • -i--interactive 覆盖⽂件之前先询问⽤⼾
  • -r 递归处理,将指定⽬录下的⽂件与⼦⽬录⼀并处理。若源⽂件或⽬录的形态,不属于⽬录或符号链接,则⼀律视为普通⽂件处理

2.9 mv 命令

mv命令也就是move,意味着移动,可以理解为windows系统下的剪贴操作。可以⽤来移动⽂件或者将⽂件改名

mv命令的语法:mv [选项] [src] [dst_dir]mv [选项] [sre] [newname] ,常见选项如下:

  • -f :force 强制的意思,如果⽬标⽂件已经存在,不会询问⽽直接覆盖
  • -i :若⽬标⽂件 (destination) 已经存在时,就会询问是否覆盖

mv命令的功能:

  • 视mv命令中第⼆个参数类型的不同(是⽬标⽂件还是⽬标⽬录),mv命令将⽂件重命名或将其移⾄⼀个新的⽬录中。
  • 当第⼆个参数类型是⽂件时,mv命令完成⽂件重命名,此时,源⽂件只能有⼀个(也可以是源⽬录名),它将所给的源⽂件或⽬录重命名为给定的⽬标⽂件名。
  • 当第⼆个参数是已存在的⽬录名称时,源⽂件或⽬录参数可以有多个,mv命令将各参数指定的源⽂件均移⾄⽬标⽬录中。

QQ20250309-134810

mv命令除了移动单个文件,还可以移动一整个目录:

QQ20250309-135110

2.10 cat 命令

cat命令的作用是查看目标文件的内容。语法:cat [选项] [文件],常见选项有:

  • -b :对⾮空输出⾏编号
  • -n :对输出的所有⾏编号
  • -s :不输出多⾏空⾏(当连续空行大于一行时只显示一行空行)

在使用cat命令前,我们需要先了解Linux系统的一个知识点:

在Linux系统下,一切皆文件

例如我们现在使用的终端,显示器,键盘等都是文件。

打印到显示器 -> 显示器就是文件 -> 写入到显示器文件

从键盘读入数据 -> 键盘也是文件 -> 从键盘文件读取数据

这里我们补充一个命令:echo命令,它的作用是向显示器文件写入数据,如下图所示:

QQ20250309-140757

那么我们如果想要在文件中写入数据该怎么办呢?这时就需要用到一个操作符:> 输出重定向。顾名思义,它的作用就是将我们输出的数据重定向,输入到其他文件中,例如:

QQ20250309-141048

对于 > 操作符,它的工作原理是先清空再写入。如果重定向的文件不存在,那么它会新建一个文件再将数据写入,若是左侧没有数据写入,那么就会将文件中的内容清空,如下所示:QQ20250309-141609

若是我们不想删除文件中原有的数据,而是追加一些数据,此时可以使用追加重定向:>>QQ20250309-143203

2.11 less 命令

对于cat命令我们一般用来查看一些小文件的内容,对于大文件,cat不能进行查找和翻页,使用起来效果极差。这时我们可以使用less命令。

less ⼯具也是对⽂件或其它输出进⾏分⻚显⽰的⼯具,应该说是linux正统查看⽂件内容的⼯具,功能极其强⼤。使⽤了 less 时,就可以使⽤ [pageup] [pagedown] 等按键的功能来往前往后翻看⽂件,更容易⽤来查看⼀个⽂件的内容。除此之外,在 less ⾥头可以拥有更多的搜索功能,不⽌可以向下搜,也可以向上搜。

less指令的语法:less [选项] [文件]。常见选项:

  • -i 忽略搜索时的⼤⼩写
  • -N 显⽰每⾏的⾏号
  • /字符串:向下搜索“字符串”的功能
  • ?字符串:向上搜索“字符串”的功能
  • n:重复前⼀个搜索(与 / 或 ? 有关)
  • N:反向重复前⼀个搜索(与 / 或 ? 有关)
  • q:quit ,退出

除了前两个后边的都是在查看的过程中使用的。

2.12 head 与 tail 命令

headtail 就像它的名字⼀样的浅显易懂,它是⽤来显⽰开头或结尾某个数量的⽂字区块,head ⽤来显⽰档案的开头⾄标准输出中,⽽ tail 当然就是看档案的结尾。

head ⽤来显⽰档案的开头⾄标准输出中,默认head命令打印其相应⽂件的开头10⾏。它的选项-n就是需要显示的行数,默认是十行:QQ20250309-144139

tail 命令从指定点开始将⽂件写到标准输出,其他的与head相同。不过使⽤tail命令的-f选项可以⽅便的查阅正在改变的⽇志⽂件,tail -f filename会把filename⾥最尾部的内容显⽰在屏幕上,并且不断刷新,使你看到最新的⽂件内容。

tail⽤于显⽰指定⽂件末尾内容,不指定⽂件时,作为输⼊信息进⾏处理。常⽤查看⽇志⽂件。

这里有一个问题,当我们想要查看一个文件中第180行到第200的内容该如何进行操作呢?这时我们就可以使用Linux中另一个操作符:管道|,它可以将左边的结果传入到右边,简单来说就是对管道左边的结果再执行管道右边的命令:QQ20250309-144849

这里我们先简单了解一下管道即可。

接下来是Linux中的一个知识点:

我们用的这些命令是什么呢?这时命令就是程序,是特定系统路径下的程序!

我们可以用which指令快速找到指定的命令文件:QQ20250309-145442

这些命令都是在/usr/bin目录下的程序,对于我们使用的ls命令来说,它并不是直接使用,而是有一些选项,使我们的目录名字有了不同的颜色,这是使用alias指令对其起了别名,相当于我们C++中的引用。在系统中,我们可以直接使用ll指令来表示ls -l指令,因为系统也对其进行了起别名的操作:QQ20250309-150232

2.13 date 命令

date命令是使用指定的格式来显示时间,例如:date +%Y:%m:%d 。在显⽰⽅⾯,使⽤者可以设定欲显⽰的格式,格式设定为⼀个加号后接数个标记,其中常⽤的标记列表如下:

  • %H : ⼩时(00…23)
  • %M : 分钟(00…59)
  • %S : 秒(00…61)
  • %X : 相当于 %H:%M:%S
  • %d : ⽇ (01…31)
  • %m : ⽉份 (01…12)
  • %Y : 完整年份 (0000…9999)
  • %F : 相当于 %Y-%m-%d

QQ20250309-150520

date命令后使用标记%s可以显示当前时间的时间戳date +%s ,同时也可以通过时间戳来转换为对应的时间date -d@[时间戳]QQ20250309-150847

所谓的时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。

2.14 cal 命令

cal命令可以⽤来显⽰公历(阳历)⽇历。公历是现在国际通⽤的历法,⼜称格列历,通称阳历。“阳历”⼜名“太阳历”,系以地球绕⾏太阳⼀周为⼀年,为西⽅各国所通⽤,故⼜名“西历”。

cal命令的语法格式:cal [选项] 年份。功能:⽤于查看⽇历等时间信息,如只有⼀个参数,则表⽰年份(1-9999),如有两个参数,则表⽰⽉份和年份。常用选项:

  • -3 显⽰系统前⼀个⽉,当前⽉,下⼀个⽉的⽉历
  • -j 显⽰在当年中的第⼏天(⼀年⽇期按天算,从1⽉1号算起,默认显⽰当前⽉在⼀年中的天数)
  • -y 显⽰当前年份的⽇历

QQ20250309-151251

2.14 find 命令

Linux下find命令在⽬录结构中搜索⽂件,并执⾏指定的操作。 Linux下find命令提供了相当多的查找条件,功能很强⼤。由于find具有强⼤的功能,所以它的选项也很多,其中⼤部分选项都值得我们花时间来了解⼀下。(在运⾏⼀个⾮常消耗资源的find命令时,很多⼈都倾向于把它放在后台执⾏,因为遍历⼀个⼤的⽂件系统可能会花费很⻓的时间(这⾥是指30G字节以上的⽂件系统)。)

find的语法结构:find [路径] [选项] [根据选项填写对应的参数],这里我们先介绍一个选项:-name,顾名思义,根据名字来查找:QQ20250309-151825

find 与 which 的区别

find命令通过系统目录树直接查找,可以查任意文件。

which命令只能用来查找系统自带的可执行程序

还有一个whereis命令,用于找到程序的源、⼆进制⽂件或⼿册。

2.15 grep 命令

grep命令(行文本过滤工具)的语法结构:grep [选项] 搜寻字符串 ⽂件,它的功能是在⽂件中搜索字符串,将找到的⾏打印出来。常用的选项有:

  • -i :忽略⼤⼩写的不同,⼤⼩写视为相同
  • -n :顺便输出⾏号
  • -v :反向选择,亦即显⽰出没有 ‘搜寻字符串’ 内容的那⼀⾏

QQ20250309-152449

2.16 zip/unzip 、tar 命令

打包压缩是我们在传输文件时需要用到的操作,它通过使用特定的算法,将文件进行合并或者压缩,减少体积:

  • 打包是将我们需要传输的文件放到一个文件中,可以提高文件传输的容错性。
  • 压缩是将文件体积减少,节省资源和磁盘空间,减少网络传输的成本

(这里我们将打包压缩看成一个整体,不再分开说,没有必要。)

经过打包压缩后的文件有多种后缀名,不过我们只需要了解两种即可,分别是.zip.tar.gz(亦可简写成.tgz)

我们要打包成.zip的压缩包需要使用zip命令。zip命令的语法结构:zip 压缩⽂件.zip ⽬录或⽂件 ,功能是将⽬录或⽂件压缩成zip格式。若我们要将指定目录下的所有东西全部压缩,则需要带上-r选项:QQ20250309-154059

对打包后的.zip文件进行解压缩操作需要用到unzip命令,语法格式:unzip [xxx.zip]unzip [xxx.zip] -d 路径,第一个是解压缩到当前文件,第二个是解压缩到指定路径,需要用到-d选项:QQ20250309-154748

上面就是关于.zip格式的压缩与解压缩的操作,接下来我们来看一下.tgz格式的压缩与解压缩。

tar的语法格式:

  • 打包压缩:tar -czf dst(打包压缩到).tgz src(被打包压缩)
  • 解压缩:1、解压缩到当前目录tar -xzy xxx.tgz 2、解压到指定路径tar -xzy xxx.tgz -C 路径

QQ20250309-155637

若是需要展现打包压缩的过程可以再加入选项-vQQ20250309-155746

解压缩:QQ20250309-155955

2.17 uname 命令

uname命令可以获取当前电脑和操作系统的相关信息,使用-a选项可以详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称 :

QQ20250309-160204

至此,一些基本的指令的学习就到这里结束了,在后面的学习中我们也会不断地学习其他常用的指令。

3. 重要的几个热键

  • [Tab]按键—具有『命令补全』和『档案补⻬』的功能
  • [Ctrl]-c按键—让当前的程序『停掉』
  • [Ctrl]-d按键—通常代表着:『键盘输⼊结束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可以⽤来取代exit
  • 键盘的上下键–可以翻阅历史命令

由上面我们知道,Linux系统会记录我们的历史命令,当我们想要查询我们所使用过的命令时可以使用history命令。

那么Linux系统的第一章学习到这里就结束了,期待和您的下一次相见。

尾声

若有纰漏或不足之处欢迎大家在评论区留言或者私信,同时也欢迎各位一起探讨学习。感谢您的观看!