Linux系列学习 (一) - Linux的系统安装(MacOS)、文件系统、基本命令

目录

引言: 

学习:

为什么要学习Linux?

Linux常见的发行版本:

红帽企业系统(RedHat Enterprise Linux,RHEL)

社区企业操作系统(CentOS)

红帽用户桌面版(Fedora(Linux))

国际化组织的开源操作系统(Debian)

基于Debian的桌面版(Ubuntu)

Linux系统安装的简单介绍:

安装软件的准备:

Linux版本信息的查看:

Linux中用户身份以及权限的说明:

认识Linux的文件系统(The file system of  Linux):

1 . 根目录( / ):

2 . 命令文件目录(/bin):

3./boot文件:

4.设备目录文件(/dev):

5.系统配置文件目录(/etc): ​​​​​​​

6.家目录(/home): 

7.系统使用的函数库目录(/lib):

8./lost+fount 文件: 

9.临时挂载系统文件(/mnt):

10./opt 文件:

11./proc文件:

12./root文件:

13./sbin文件: 

14./tmp文件:

15.应用程序存放目录(/usr):

16./var文件:

绝对路径和相对路径(GetFull and Relative Path):

绝对路径(GetFull Path):

相对路径(Relative Path): 

Linux系统中常用的命令(Commands for Linux):

ls命令:

ls -l 命令:

ls -a命令:

ls -i命令:

以ls -i命令为基础,对inode的知识点做进一步的扩充:

ls + 路径:

cd命令: 

cd + 路径:

cd ..  :

clear命令:

pwd命令:

mkdir命令:

rm命令:

rm -r命令:

rm *+... 命令:

mv命令:

touch命令:

Linux系统中的文件类型(File type): 

总结:

参考资料:


引言: 

昨晚正式开启了Linux的系统性学习,老师简单介绍了Linux中简单的命令以及文件系统,并详细地对虚拟机(virtual machine)形式的Linux系统的安装步骤进行了介绍。这篇文章对课程截止到目前的所有内容进行总结并对老师简单提到的东西加以补充和修饰。

学习:

为什么要学习Linux?

Linux普遍用于C/C++的服务器端开发,对于公司的软件集成开发有着举足轻重的作用,且Linux具有相对较高的安全性。

Linux常见的发行版本:

红帽企业系统(RedHat Enterprise Linux,RHEL)

全球最大的开源技术厂商,全世界内使用最广泛的Linux发布套件,提供性能与稳定性极强的Linux套件系统并拥有完善的全球技术支持。

 

社区企业操作系统(CentOS)

CentOS最初是将红帽企业系统“重新编译/发布”给个人用户免费非食用,现在已经正式加入了红帽公司并且一直保持免费(CentOS随着RHEL的更新而更新),我们今天也要通过CentOS来介绍Linux系统。

 

红帽用户桌面版(Fedora(Linux))

最初由红帽公司发起的桌面版系统套件(目前已经不仅仅局限于桌面版),用户可以免费体验到最新的技术或工具,功能成熟以后加入到RHEL中。

 

国际化组织的开源操作系统(Debian)

提供超过37500种不同的自由软件且都具有非常高的认可度,杜宇哥勒内核架构支持良好、稳定、安全,且都有免费的技术支持。

基于Debian的桌面版(Ubuntu)

Ubuntu是一款基于Debian派生的产品,对新款硬件具有极强的兼容能力,普遍认为Ubuntu与Fedora都是极其出色的Linux桌面系统。

 

Linux系统安装的简单介绍:

前面介绍了5种Linux系统的不同版本,因为在我大三下学期对Linux进行学习与在学校机房进行实验时我使用的是CentOS,我对CentOS相对比较熟悉,在这里我选择CentOS版本的Linux系统进行安装。

我使用的是MacOS,在这里我着重对基于MacOS的Linux系统安装做介绍,基于Windows的Linux系统安装过程我会在后面进行补充:

安装软件的准备:

不同于Windows安装Linux的过程需要提前准备镜像文件,这里我们直接下载一个名叫Paralles的软件:

软件官网:https://www.parallels.cn

 

下载完成之后,安装软件,出现如下界面:

 在这里我们选择“下载Cent OS Linux”,点击继续:

后续建议你分配大约30GB大小的空间以供CentOS的正常使用,因为我这里已经下载安装过CentOS,后面省略。我们直接切入到安装之后的界面:

进入到用户界面:

通过parallels用户进入CentOS界面:

至此,CentOS版Linux操作系统已经安装完成。

Linux版本信息的查看:

我们点击CentOS桌面的左上角“活动”按钮,在菜单栏中选择终端选项:

输入命令:

uname -a

然后回车,出现: 

这个命令用于查看Linux的内核版本号,可以看到,输入命令之后出现了一串数字4.18.0-305,这串数字分别代表:

4代表主版本号;

18代表次版本号;

0-代表修正版本号;

305代表修成版本的第几次微调

Linux中用户身份以及权限的说明:

例如我们现在打开CentOS系统的终端,里面显示的第一行命令是:

在这里我使用蓝色标注的 parallels 就是我的用户名;

我使用绿色标注的 localhost就是我的主机名;

我使用红色标注的符号“~”的意思是我目前所处的位置是我作为普通用户的主目录;

我使用红色标注的符号“$”的意思是我目前的身份只是Linux操作系统中的一个普通用户;

这时我切换到了管理员模式,并直接访问根目录,如图:

这里我使用蓝色标注的root代表我的用户名为root;

我使用红色标注的localhost是我的主机名;

我使用绿色标注的符号“/”代表我目前所处的位置是根目录;

符号“#”代表我目前的身份为系统的管理员。

认识Linux的文件系统(The file system of  Linux):

Linux系统与Windows系统的磁盘管理方式完全不一样,Linux下面的所有目录都挂在根目录的下面,Linux的文件系统都衍生出同一个根节点,所有的磁盘必须挂载在文件系统相应的的目录下面,也就是说Linux并没有像Windows系统中那样的C盘或者D盘,如果说一台电脑的主力操作系统是Linux系统的话,不管挂载了几个HDD或者SSD,Linux最终都会将他们联合成一个整体。

Linux操作系统的系统目录就像是数据结构中的树形结构,文件系统只有一个根结点,也就是Linux中的根目录: / ,在根目录的下面包含了不同层级的子目录或者文件的信息,在子目录的下面又可能包含子目录和文件的信息,所以说Linux的文件系统就像是一棵树。

这里我们给出一张图用来展示Linux的文件系统:

图中根目录我使用了红色方框进行了标注,二级目录使用的是蓝色方框,三级目录使用的是绿色方框,接下来我们将对Linux文件系统中各个文件所发挥的作用进行解释:

1 . 根目录( / ):

根目录一般位于Linux文件系统的顶层,根目录在一般情况下是只存放目录部存放文件的,所以当我们试图在根目录进行文件夹或者文件创建的时候,系统一般都会驳回,我们直接在Linux系统上进行这一操作,看看系统的反应:

我们使用“cd /”命令进入Linux的根目录并使用ls命令对根目录下面的各个文件进行查看;

此时我们使用“mkdir fuck”命令意图在根目录下创建一个名叫fuck的文件夹:


显然我们创建fuck的行为并没有成功,反而遭到了系统的驳回,这时交互的命令行显示“Permission denied”,意思就是我们并没有权限这样做。

但是需要注意的是,在前面我们提到了系统的用户和管理员问题,现在在终端的命令行中我们的身份是“~”也就是说我们此时的身份只是系统的用户,如果我们此时使用命令“sudo su”将我们的身份切换成“#”也就是管理员模式强行在根目录下创建文件夹,也是可以的。

2 . 命令文件目录(/bin):

/bin目录是命令文件目录,它的另一个名字也叫二进制目录。这个目录包含了系统管理员或者普通用户使用或管理Linux操作系统的重要命令,它也同时包含了二进制(可执行)文件,其中包含shell脚本语言的解释器等,在目录usr/bin存放大部分的用户命令;

我们现在使用命令“cd /bin”进入到根目录下的/bin文件夹,并使用ls命令查看这个文件夹中所有的文件:

我们现在使用命令“cd /usr/bin”进入到usr目录下名叫bin的二级子目录中,并使用ls命令对这个文件夹中的所有文件进行查看:

在这个文件中,我们可以直接查找到我们已经使用过的sudo、su命令:

 如图,在CentOS中,这两个命令本身就使用了红色方框进行了标注,也就是我们的箭头所指。 

3./boot文件:

boot文件目录中主要存放系统的内核文件和引导装载程序文件,例如:/boot/vmlimnz 就是Linux的内核文件,如图,我们通过cd /boot命令进入boot文件夹并通过ls /boot查看boot文件夹中的所有文件:

4.设备目录文件(/dev):

设备目录文件(/dev)主要存放Linux操作系统下的设备文件,访问该目录下面的某个文件相当于通过Linux访问某个设备,存放连接到计算机上的设备(例如终端、磁盘驱动器、光驱、网卡)的对应文件,包括字符设备和块设备等。我们通过cd /dev 命令进入到设备目录文件并通过ls命令对/dev文件夹中的文件进行查看:

5.系统配置文件目录(/etc): 

/etc是系统配置文件存放的目录,改目录存放系统的大部分配置文件和子目录,一般建议在此目录下存放可执行文件,重要的配置文件有/etc/sysconfig(与网络有关的)、/etc/xinetd.d,另外必须要注意的是,在你修改配置文件之前,必须要保存配置文件的备份。这个目录下的文件基本上都是由系统管理员来进行操作的,如果你是普通用户则对/etc文件夹中的文件只有只读权限。我们通过cd /etc 命令进入到/etc文件夹并通过ls -l命令显示出此文件夹所有的文件且显示出我们作为普通用户的权限和我们作为系统管理员的权限:

6.家目录(/home): 

这个目录就是Linux默认的系统用户宿主目录,我们前面在介绍根目录(/)时曾经说过,普通用户的前提下在根目录中是无法创建文件夹的,家目录也就是一般普通用户创建文件夹的一级目录,我们通过cd /home命令进入家目录并通过ls命令显示/home文件夹中的文件:

我红色圈标注的地方就是我的用户名,如果此时我在虚拟机上再创建一个名为Parallel 1的用户,在/home文件夹中就会多出来一个/Parallel 1的文件,我们在这里进入到/Parallel并查看下一级目录的文件:

如图,在这里就会显示我们的中文目录了。 

7.系统使用的函数库目录(/lib):

/lib、/usr/lib、/usr/local/lib 就是Linux系统使用的函数库目录,当我们在Linux中编写的程序在执行的过程中,通常需要调用一些额外的参数,这时我们就需要函数库的协助了,这个目录存放了各种编程语言的函数库。经典的Linux系统/lib目录下一般包含C/C++/Fortran语言的库文件。/lib文件目录下的库映像文件可以用来启动系统并执行一些命令,目录/lib/mmodules包含了可加载的内核模块,/lib目录存放了所有重要的库文件,其他的库文件一般存放在/usr/lib文件目录下,我们通过cd /lib 命令来进入/lib文件夹并使用ls命令查看文件夹中的文件:

例如我在这里用红线进行标注的cpp、gcc、python都是我们熟知的编程语言库。 

8./lost+fount 文件: 

在EXT2或者EXT3文件系统中,当系统意外崩溃或者机器意外关机(突然断电的情况或其他硬件问题),这时产生的一些文件碎片放在这里。在系统启动的过程中fsck工具就会检查这里,并修复已经损坏的文件系统。

在这里我简单的介绍一下EXT文件系统以及fsck工具:

fsck全称file system check,中文名叫文件监测系统,它是Linux系统中一个常用的工具,作用就是用来检查和维护与系统不一致的文件系统。

9.临时挂载系统文件(/mnt):

/mnt目录主要用来存放临时挂载文件系统,为某些设备提供默认的挂载点,如floppy,cdrom。这样当挂载了一个设备,例如光驱时,就可以通过命令 cd /mnt/cdrom下的文件来访问相应的光驱上的文件了。

那么,何为挂载呢?

这是一个比较庞大的话题,因为不同操作系统中的挂载都有不同的含义,后面我将会单独写一篇文章对挂载进行详细的阐述。

10./opt 文件:

这个文件主要存放的是给主机额外安装软件所摆放的目录,例如我安装的是原生的CentOS 8.4还没有安装任何其他除了Linux自带以外的软件,所以当我通过根目录进入到/opt文件并使用ls命令查看文件夹对应的文件时是没有任何文件夹存在的:

11./proc文件:

次目录的数据都存放在内存中,例如系统核心、外部设备、网络状态,由于数据都存放于内存中,所以这些数据是不占用外部存储空间的也就是磁盘的空间。 

12./root文件:

这个文件存放的是系统管理员root的宿主目录,当我们的身份为普通用户时自然我们也没有对这个文件夹的访问权限,如图:

 只有当我们切换到管理员模式的时候才有权限访问/root文件夹:

13./sbin文件: 

这个文件是用来放置系统管理员使用的可执行命令,例如fdisk、shutdown、mount等。 /usr/sbin存放应用软件,/usr/local/sbin存放用户安装的系统可执行文件,我们进入/sbin文件夹并通过ls命令对这个文件夹中的文件进行查看:

如图,红色圈标注的地方就是刚才提到的命令。 

14./tmp文件:

这个文件用来存放临时文件目录,一些命令和应用程序会用到这个目录。这个目录下的所有文件会被定时删除,以避免临时文件占满整个磁盘。

15.应用程序存放目录(/usr):

关于/usr文件中的几个子目录我们在前文中已经或多或少的提到过,这里我们再对/usr文件下存放的子目录做一下介绍,/usr/bin存放应用程序;/usr/share存放共享数据;/usr/lib:存放函数库文件;usr/local:用户安装软件的目录;/usr/share/doc:系统说明文件存放目录。

16./var文件:

这个文件放置系统执行过程中经常变化的文件,如随时更改的日志文件、邮件文件。/var/log/message:所有的登录文件存放目录;/var/spool/mail:邮件存放的目录;/var/run:程序或服务启动后,它的PID(操作系统中的进程识别号)存放在该目录下。

绝对路径和相对路径(GetFull and Relative Path):

介绍命令之前,我们首先需要路径进行了解:Linux系统中的路径分为绝对路径和相对路径

绝对路径(GetFull Path):

绝对路径指的是从根目录(“ / ”)开始到指定位置的路径

例如我要以绝对路径的形式来表示我在家目录中的stu文件中创建的test.c文件:

/home/parallels/test.c

再例如我要以绝对路径的形式来表示我的桌面位置:

/home/parallels/Desktop

相对路径(Relative Path): 

相对路径指的是从当前目录开始到指定位置的相对路径

例如“ . ”代表当前位置 、“..”代表的是当前位置的上一级目录、“./test.c”表示当前位置的上一层目录。

Linux系统中常用的命令(Commands for Linux):

在简单了解Linux的文件系统之后,我们接下来对Linux中一些常见且常用的命令进行学习,在Linux桌面版之前的UNIX系统,用户与操作系统进行交互的方式就是通过命令行,鼠标在那个时代是没有出现的,Linux是基于UNIX系统开发出来的操作系统,所以我们也要通过命令对Linux进行绝大多数的操作。

ls命令:

ls命令在英文中的全称为(list),用于查看当前路径下所存在的文件。

例如我现在跳转至“ / ”根目录,并使用ls命令对根目录下的文件进行查看,因为Linux文件系统在前文中已经进行了简单的介绍,这里相当于一次验证:

如图我使用绿色标注的就是通过ls命令查看根目录下的文件。 

ls -l 命令:

ls -l命令用于查看当前路径下所存在的文件的详细信息、权限问题、创建日期、文件大小:

ls -a命令:

ls -a命令用于显示该路径下所有的文件,包含隐藏文件:

如图,我用红色圆圈标注的“ . ”、“ .. ” 就是当前目录下的隐藏文件。

ls -i命令:

显示文件的inode节点号:

如图,每一个文件前面的那一串数字,就是各个文件对应的inode节点号。

以ls -i命令为基础,对inode的知识点做进一步的扩充:

inode翻译成中文的意思就是“索引节点”。每个存储设备或存储设备的分区被格式化为文件系统后有两部分,分别是block和inode 。

在写inode之前,我们必须对电脑的外部存储空间——磁盘做一个了解:

我们通常把文件存储在外部存储空间——磁盘上,不以字节这种单位划分的话,在磁盘内部最小的存储单位叫做扇区(Sector),举个例子:我们一般使用的Windows系统,(以下说法的前提为机械硬盘)如果系统无法读取分区中的某个指定区域时,就说明磁盘的这个区域一部分扇区发生了损坏,也就是俗称的“坏道”。如果我们还想继续使用这块硬盘的话,最好的方法就是通过磁盘管理工具对磁盘中指定区域进行屏蔽,也就是不读取这一部分,磁盘在短时间内还是可以正常使用的,但是我们要及时的考虑更换磁盘,因为坏道不可能永远屏蔽,它会一直坏下去。理论上讲,每个扇区可以存储512B(字节)的内容,操作系统在读取硬盘的时候,是不会一个扇区接着一个扇区地读的,因为这样效率低下。所以这时操作系统就会以“块”(Block)的形式进行读取,块也就是多个扇区的组成,前文中提到,磁盘中最小的存储单位是“扇区”(Sector),那么块(Block)就是文件存取的最小单位。

注:一定要区分这里的存储和存取!

“块”(Block)的大小通常为4KB,也就是说一个“块”就是8个扇区的总和,“块”就是用来存储数据用的。

这里我画一张图,以便能更好地理解这两个单位:

我们提到的“inode”就是用来存储这些数据的信息的,这些数据的信息包括文件的字节数、文件拥有者的信息(ID、文件的读写执行权限、文件的时间戳(ctime值指的是inode上一次驱动的时间;mtime指的是文件内容上一次变动的时间;atime指的是文件上一次打开的时间)、链接数、文件数据Block的位置。

inode中包括关于某个文件的索引信息,所以inode种必然会存储部分数据,在计算机中会占据一定的空间,我们格式化硬盘的时候系统就会将硬盘划分为两个区域,一个是数据区,一个就是inode区,inode区存放inode所包含的信息。

每个inode节点的大小一般是128B或者256B。iinode节点的总数,在格式化硬盘的时候就会被给定,一般是每1KB或2KB就设置一个inode,每1KB设置一个inode,所以inode table的大小就会达到128MB,占整块硬盘空间的%12.8.​​​​​​​

ls + 路径:

ls + 路径命令用于查看指定路径下的文件;

例如我在这里要查看/home路径下parallels文件,我就在终端中输入:ls /home/parallels,如图:

cd命令: 

cd命令在英文中的全称为(change directory)用于切换Linux系统中的路径。

cd + 路径:

cd + 路径命令用于切换到指定路径

例如,我现在刚刚打开CentOS系统中的终端,我需要通过cd命令跳转到根目录下,此时我就在终端中输入命令:cd /

与cd / 命令相同的格式,在上文中说到过,Linux系统中 / 代表的是处于根目录的位置,这时如果我们需要跳转到普通用户的家目录,则只需要输入命令 cd ~,如图:

cd ..  :

cd..命令用于返回到上一级目录,例如我现在处于的路径就是普通用户的家目录,我的上一级目录是/parallels,/parallels文件的上一级目录是/home,/home文件的上一级目录是根目录,这时我输入三次cd ..命令,就返回到了根目录,如图:

         

图中我用绿色标注的符号“/”代表我们已经返回到了根目录的位置。

cd . 命令用于切换到当前路径:

例如我现在要进入根目录下的/dev文件,我在终端中输入命令cd ./dev

如图,已经成功的切换到了/dev路径,值得注意的是,这时的cd ./dev 命令是等价于 cd dev的。

clear命令:

clear命令用于终端中的清屏,当我们的终端显示的信息太多以至于影响到我们的视觉,我们就可以使用clear命令来清屏,例如我在展示完/dev文件夹中的文件时屏幕的东西太多了,这时我就可以使用clear命令,如图:

 输入完成之后回车:

pwd命令:

pwd命令在英文中的全称为(print working directory)一般用于查看当前路径,例如我们我们当前的路径为/dev,使用pwd命令查看,如图:

​​​​​​​

mkdir命令:

mkdir命令在英文中的全称为(make directory)一般用于在Linux环境下创建文件夹,例如我输入命令 mkdir dir在家目录路径下创建一个名叫dir的文件夹:

rm命令:

rm命令在英文中的全称为(remove)一般用于在Linux环境下删除普通文件,例如我要删除dir文件夹中的a.c普通文件,输入命令rm a.c,系统会提示是否删除,输入y(yes)代表确定删除,输入n(no)代表不删除;

rm -r命令:

rm -r命令一般用于删除目录文件,也就是文件夹。例如我现在位于/home/parallels路径下,我要删除dir目录,如果我使用rm命令的话,系统就会提示dir不是一个文件而是一个目录,意思就是我们需要使用删除目录的命令,输入命令rm -r dir,系统会提示让你确认是否真的删除:

rm *+... 命令:

rm *+命令一般用于文件的模糊匹配,例如我在dir目录创建了a.c b.c c.c 三个普通文件,你也注意到了这三个文件都是以.c为末尾的,我们如果通过普通的方式对这三个文件进行删除,则需要使用三次rm命令,如果我们在终端中定义删除.c后缀的文件,则可以批量删除,例如我要删除上面创建的三个.c文件,我在终端中输入命令:rm *.c,则可以进行批量删除:

mv命令:

mv命令的英文全称为(move),一般用于将指定文件迁移至指定路径,mv命令亦可作为更改文件名的命令。如图我在test文件夹中创建了dir1和dir2两个文件夹,并在dir1文件夹中创建了一个a.c文件:

我们可以通过mv命令来将a.c文件改名为b.c,如图:

 

我们也可以通过mv命令来将当前位于dir1目录的b.c文件迁移至dir2目录中,如图:

  

touch命令:

touch命令的英文全称为(touch),一般用于在文件夹中创建普通文件,touch命令可以对普通文件单独创建也可以批量创建,例如我在dir目录下先单独创建a.c文件,然后再批量创建b.c , c.c文件,分别输入命令:touch a.c , touch b.c c.c : 

Linux系统中的文件类型(File type): 

一般地,Linux系统中友谊下几种文件类型的分类:

- 代表普通文件

d 代表目录文件

p 代表管道文件

s 代表套接字文件

b 代表块设备文件

c 代表自负设备文件

l 代表链接文件

例如我们在这里使用ls -l命令查看一下根目录“ / ”中的文件类型: 

注:查看文件类型,就是使用ls -l命令之后,查看第一个字母。 

对应上文中对Linux文件类型的说明,我们可以清楚的看到根目录下这些文件的类型:

例如:/bin文件属于链接文件,/boot文件属于目录文件;

总结:

这是Linux的第一节课,旨在了解Linux系统和成功安装CentOS版本的Linux系统,了解Linux的文件系统,简单学习和使用一些基本的命令,需要清楚的是,Linux的学习是至关重要的,Linux具有相对较高的安全性,也是企业级开发不可缺少的一环。今天这篇文章对课上所讲解的知识作了一个总结并对老师简单提过的一些知识作了知识上和形式上的扩充,后续我会持续跟进。

参考资料:

耿朝阳 肖锋——《Linux系统应用及编程》 清华大学出版社

鸟哥 ——《鸟哥的LINUX私房菜(基础学习篇)》 人民邮电出版社

猜你喜欢

转载自blog.csdn.net/weixin_45571585/article/details/127222281