本专题将介绍关于Linux操作系统的种种,那么第一章讲述的是对于命令行一些基础命令的使用,旨在可以更号地去理解并使用Linux系统。(本章节默认使用的环境是centos 7.8,使用root(超级用户)账号)
Linux系统与我们平常使用的Windows、macOS系统一样,也是一款操作系统,不过与之不同的是linux操作系统凭借其免费、开源的特点一直被各大企业所喜爱。
Linux是⾃由软件和开放源代码软件发展中最著名的例⼦。只要遵循GNU通⽤公共许可证,任何个⼈和机构都可以⾃由地使⽤Linux的所有底层源代码,也可以⾃由地修改和再发布。随着Linux操作系统⻜速发展,各种集成在Linux上的开源软件和实⽤⼯具也得到了应⽤和普及,因此,Linux也成为了开源软件的代名词。
Linux的使用场景一般来说是命令行,但是它也有着自己的图形化界面,不过我们一般不会去使用,因为使用图形化界面是会占据一定的资源,一般为了极致的资源利用率,在很多地方是不用使用图形化界面的。那么这时,指令便是我们的“双手”,接下来将为大家介绍一些基本的指令,以便我们能够更好的去使用Linux。
Linux的基本操作,是通过指令来进行的。接下来我们先来简单认识几个常见指令,以便接下来的学习:
有了上面的基础认识,接下来让我们详细地去学习一些指令。
ls的功能:显示当前目录下所有的普通文件和子目录。
ls指令的语法结构:ls+选项+目录或文件
选项是我们对一个指令的更多操作方式,对于ls指令,我们常用的选项有下面几个:
对于上述指令,我们只需记住最常用的几个即可:如-l、-a
。其他的当我们需要用到时再去查询即可
-l选项可以让我们看到详细的文件属性信息,-a可以显示隐藏文件
如上图所示,当指令一次性用到多个选项时选项可以合并,并且先后顺序不会影响。在使用-l
选项显示详细信息时,对于最前面的那一行信息这里要告诉大家的是d
开头的代表是目录,-
开头的代表是普通文件。相信大家已经对ls指令以及选项有了一定的了解。那么接下来便讲解一些知识点:
文件 != 文件的内容 文件 = 文件的内容+文件属性 因为文件的内容和文件的属性都是数据,都需要保存起来。例如下图,我们在windows系统下创建一个空文件,虽然它的内容大小为0,但是它的各种信息例如访问时间等属性也是数据,也要被保存起来,所以空文件也是会占据内存的。
上面对文件给大家进行了介绍,接下来是隐藏文件,顾名思义,隐藏文件就是我们不能直接看到的文件,一般来说存放一些比较重要的东西,可以防止我们对其他文件进行操作时对其进行误操作。在Linux系统下,以.
开头的文件和目录为隐藏文件。在上图中出现的.
和..
两个隐藏文件(每一个目录中都存在)分别是当前路径和上级路径,我们可以用cd命令进行测试:
pwd命令特别简单,就是显示当前所在路径。
对于上图中红框圈住的/
叫做路径分隔符:
上面讲到每一个目录中都有一个隐藏文件..
是上级路径,那么当我们一直cd到该路径会发生什么呢?
可以发现,让我们达到目录/
时,再使用cd ..
没有发生变化,这里的/
就是Linux的根目录,它的..
路径是它自己。至此,我们可以得出一个结论,Linux的所有文件的系统结构是一个多叉树。
当我们想要访问一个文件的前提是要知道这个文件在哪里,这时我们就需要知道它的路径。路径分为两种,一种是相对路径,一种是绝对路径:
例如我们要用ls查找一个文件的信息,有以下两种方法:
cd命令的功能:改变⼯作⽬录。将当前⼯作⽬录改变到指定的⽬录下。
对于cd命令有两个特殊的符号:
~
:进入特定用户的家目录。-
:切换回最近的一次路径。对于我们的root用户,它的家目录就是/root
,我们该如何去理解家目录呢?简单来说,家目录就是用来保护用户私有信息的目录,是我们登录时默认所在的路径。
touch命令除了可以创建一个文件,还可以改变文件或目录的日期时间,包括存取时间和更改时间。
touch命令有两个常用选项:
我们可以使用stat命令来详细显示一个文件的信息:
这里再补充一个Linux的知识点:
在Linux中,文本文件、二进制可执行文件(我们所使用的一个个指令就是一个个二进制可执行文件)、动静态库、视频、音频、图片等等被称为普通文件。 在Linux系统中,文件类型与文件后缀无关,但系统 != 软件,对于一些软件规定了文件的后缀名。因此,我们在创建文件时最好带上相应的后缀名。
mkdir命令的功能就是创建一个目录。
它有一个常用的选项:-p
可以连续创建目录,如下图所示:
可以看到我们连续创建了四个目录。tree + 指定目录
命令可以以树形结构展示文件和目录结构。
rmdir是⼀个与mkdir相对应的命令,mkdir是建⽴⽬录,⽽rmdir是删除目录。不过rmdir命令只能删除空目录,因此,我们一般都会使用rm命令。
rm命令的功能是删除文件或者目录。该命令有三个常用选项:
-f
即使⽂件属性为只读(即写保护),亦直接删除-i
删除前逐⼀询问确认-r
删除⽬录及其下所有⽂件Linux的命令有很多参数,我们不可能全记住,可以通过查看联机⼿册获取帮助,也就是man命令。
格式: man [选项] [需要查询的东西]
下图是对ls进行查询
常用选项:
-k
根据关键字搜索联机帮助num
只在第num
章节查找-a
将所有章节的都显⽰出来,⽐如 man printf
它缺省从第⼀章开始搜索,知道就停⽌,⽤-a选项,当按下q退出,他会继续往后⾯搜索,直到所有章节都搜索完毕man手册一共分为九章,我们能用到的基本上只有前三章:
cp命令的格式:cp [选项] 源文件或目录 目标文件和目录
cp命令的功能就是复制文件或者目录到指定的位置。
如上图所示,我们将dir1目录
下的a.txt文件
复制到了dir2目录
中,除了简单的复制,我们还可以在复制的时候改变复制之后文件的名字,如下图所示:
当我们想要复制一整个目录时,就需要加上-r
选项:
上图即为将dir1目录
在当前路径下复制一份并且命名为dir3
。下面看一下cp命令的常用选项:
-f
或 --force
强⾏复制⽂件或⽬录, 不论⽬的⽂件或⽬录是否已经存在-i
或 --interactive
覆盖⽂件之前先询问⽤⼾-r
递归处理,将指定⽬录下的⽂件与⼦⽬录⼀并处理。若源⽂件或⽬录的形态,不属于⽬录或符号链接,则⼀律视为普通⽂件处理mv命令也就是move,意味着移动,可以理解为windows系统下的剪贴操作。可以⽤来移动⽂件或者将⽂件改名。
mv命令的语法:mv [选项] [src] [dst_dir]
、mv [选项] [sre] [newname]
,常见选项如下:
-f
:force 强制的意思,如果⽬标⽂件已经存在,不会询问⽽直接覆盖-i
:若⽬标⽂件 (destination) 已经存在时,就会询问是否覆盖mv命令的功能:
mv命令除了移动单个文件,还可以移动一整个目录:
cat命令的作用是查看目标文件的内容。语法:cat [选项] [文件]
,常见选项有:
在使用cat命令前,我们需要先了解Linux系统的一个知识点:
在Linux系统下,一切皆文件。 例如我们现在使用的终端,显示器,键盘等都是文件。 打印到显示器 -> 显示器就是文件 -> 写入到显示器文件 从键盘读入数据 -> 键盘也是文件 -> 从键盘文件读取数据
这里我们补充一个命令:echo命令
,它的作用是向显示器文件写入数据,如下图所示:
那么我们如果想要在文件中写入数据该怎么办呢?这时就需要用到一个操作符:>
输出重定向。顾名思义,它的作用就是将我们输出的数据重定向,输入到其他文件中,例如:
对于 > 操作符,它的工作原理是先清空再写入。如果重定向的文件不存在,那么它会新建一个文件再将数据写入,若是左侧没有数据写入,那么就会将文件中的内容清空,如下所示:
若是我们不想删除文件中原有的数据,而是追加一些数据,此时可以使用追加重定向:>>
。
对于cat命令我们一般用来查看一些小文件的内容,对于大文件,cat不能进行查找和翻页,使用起来效果极差。这时我们可以使用less命令。
less ⼯具也是对⽂件或其它输出进⾏分⻚显⽰的⼯具,应该说是linux正统查看⽂件内容的⼯具,功能极其强⼤。使⽤了 less 时,就可以使⽤ [pageup] [pagedown] 等按键的功能来往前往后翻看⽂件,更容易⽤来查看⼀个⽂件的内容。除此之外,在 less ⾥头可以拥有更多的搜索功能,不⽌可以向下搜,也可以向上搜。
less指令的语法:less [选项] [文件]
。常见选项:
-i
忽略搜索时的⼤⼩写-N
显⽰每⾏的⾏号/字符串
:向下搜索“字符串”的功能?字符串
:向上搜索“字符串”的功能n
:重复前⼀个搜索(与 / 或 ? 有关)N
:反向重复前⼀个搜索(与 / 或 ? 有关)q
:quit ,退出除了前两个后边的都是在查看的过程中使用的。
head
与 tail
就像它的名字⼀样的浅显易懂,它是⽤来显⽰开头或结尾某个数量的⽂字区块,head ⽤来显⽰档案的开头⾄标准输出中,⽽ tail 当然就是看档案的结尾。
head ⽤来显⽰档案的开头⾄标准输出中,默认head命令打印其相应⽂件的开头10⾏。它的选项-n
就是需要显示的行数,默认是十行:
tail 命令从指定点开始将⽂件写到标准输出,其他的与head相同。不过使⽤tail命令的-f
选项可以⽅便的查阅正在改变的⽇志⽂件,tail -f filename
会把filename
⾥最尾部的内容显⽰在屏幕上,并且不断刷新,使你看到最新的⽂件内容。
tail⽤于显⽰指定⽂件末尾内容,不指定⽂件时,作为输⼊信息进⾏处理。常⽤查看⽇志⽂件。
这里有一个问题,当我们想要查看一个文件中第180行到第200的内容该如何进行操作呢?这时我们就可以使用Linux中另一个操作符:管道|
,它可以将左边的结果传入到右边,简单来说就是对管道左边的结果再执行管道右边的命令:
这里我们先简单了解一下管道即可。
接下来是Linux中的一个知识点:
我们用的这些命令是什么呢?这时命令就是程序,是特定系统路径下的程序!
我们可以用which指令快速找到指定的命令文件:
这些命令都是在/usr/bin
目录下的程序,对于我们使用的ls命令来说,它并不是直接使用,而是有一些选项,使我们的目录名字有了不同的颜色,这是使用alias指令对其起了别名,相当于我们C++中的引用。在系统中,我们可以直接使用ll
指令来表示ls -l
指令,因为系统也对其进行了起别名的操作:
date命令是使用指定的格式来显示时间,例如:date +%Y:%m:%d
。在显⽰⽅⾯,使⽤者可以设定欲显⽰的格式,格式设定为⼀个加号后接数个标记,其中常⽤的标记列表如下:
date命令后使用标记%s可以显示当前时间的时间戳date +%s
,同时也可以通过时间戳来转换为对应的时间date -d@[时间戳]
:
所谓的时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
cal命令可以⽤来显⽰公历(阳历)⽇历。公历是现在国际通⽤的历法,⼜称格列历,通称阳历。“阳历”⼜名“太阳历”,系以地球绕⾏太阳⼀周为⼀年,为西⽅各国所通⽤,故⼜名“西历”。
cal命令的语法格式:cal [选项] 年份
。功能:⽤于查看⽇历等时间信息,如只有⼀个参数,则表⽰年份(1-9999),如有两个参数,则表⽰⽉份和年份。常用选项:
-3
显⽰系统前⼀个⽉,当前⽉,下⼀个⽉的⽉历-j
显⽰在当年中的第⼏天(⼀年⽇期按天算,从1⽉1号算起,默认显⽰当前⽉在⼀年中的天数)-y
显⽰当前年份的⽇历Linux下find命令在⽬录结构中搜索⽂件,并执⾏指定的操作。 Linux下find命令提供了相当多的查找条件,功能很强⼤。由于find具有强⼤的功能,所以它的选项也很多,其中⼤部分选项都值得我们花时间来了解⼀下。(在运⾏⼀个⾮常消耗资源的find命令时,很多⼈都倾向于把它放在后台执⾏,因为遍历⼀个⼤的⽂件系统可能会花费很⻓的时间(这⾥是指30G字节以上的⽂件系统)。)
find的语法结构:find [路径] [选项] [根据选项填写对应的参数]
,这里我们先介绍一个选项:-name
,顾名思义,根据名字来查找:
find 与 which 的区别 find命令通过系统目录树直接查找,可以查任意文件。 which命令只能用来查找系统自带的可执行程序
还有一个whereis
命令,用于找到程序的源、⼆进制⽂件或⼿册。
grep命令(行文本过滤工具)的语法结构:grep [选项] 搜寻字符串 ⽂件
,它的功能是在⽂件中搜索字符串,将找到的⾏打印出来。常用的选项有:
-i
:忽略⼤⼩写的不同,⼤⼩写视为相同-n
:顺便输出⾏号-v
:反向选择,亦即显⽰出没有 ‘搜寻字符串’ 内容的那⼀⾏打包压缩是我们在传输文件时需要用到的操作,它通过使用特定的算法,将文件进行合并或者压缩,减少体积:
(这里我们将打包压缩看成一个整体,不再分开说,没有必要。)
经过打包压缩后的文件有多种后缀名,不过我们只需要了解两种即可,分别是.zip
、.tar.gz(亦可简写成.tgz)
。
我们要打包成.zip
的压缩包需要使用zip命令。zip命令的语法结构:zip 压缩⽂件.zip ⽬录或⽂件
,功能是将⽬录或⽂件压缩成zip格式。若我们要将指定目录下的所有东西全部压缩,则需要带上-r
选项:
对打包后的.zip
文件进行解压缩操作需要用到unzip命令,语法格式:unzip [xxx.zip]
、unzip [xxx.zip] -d 路径
,第一个是解压缩到当前文件,第二个是解压缩到指定路径,需要用到-d
选项:
上面就是关于.zip
格式的压缩与解压缩的操作,接下来我们来看一下.tgz
格式的压缩与解压缩。
tar的语法格式:
tar -czf dst(打包压缩到).tgz src(被打包压缩)
tar -xzf xxx.tgz
2、解压到指定路径tar -xzy xxx.tgz -C 路径
若是需要展现打包压缩的过程可以再加入选项-v
。
解压缩:
uname命令可以获取当前电脑和操作系统的相关信息,使用-a
选项可以详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称 :
至此,一些基本的指令的学习就到这里结束了,在后面的学习中我们也会不断地学习其他常用的指令。
由上面我们知道,Linux系统会记录我们的历史命令,当我们想要查询我们所使用过的命令时可以使用history
命令。
那么Linux系统的第一章学习到这里就结束了,期待和您的下一次相见。
若有纰漏或不足之处欢迎大家在评论区留言或者私信,同时也欢迎各位一起探讨学习。感谢您的观看!