Linux 基础

一.Linux 系统组成

Linux 系统是一个多层次的结构,包含了:内核、系统库、Shell 以及应用程序等

1.内核

内核:是 Linux 系统的核心,也是 Linux 系统的基础,负责管理系统的硬件和提供最基本的系统服务。包含了:设备驱动程序、进程管理、内存管理、文件系统、网络协议栈等关键的底层功能和组件。

2.系统库

系统库:是一组用于支持应用程序开发的软件库,提供了一些常用的函数和接口,方便我们基于这些接口来开发一些应用程序,如:C语言标准库(libc)、数学库(libm)、动态链接库(libdl)、线程库(libpthread)、第三方库(...)。

3.Shell

Shell:是一个命令行解释器,翻译过来就是壳或外壳的意思。相对于内核来说,它就像是套在内核外面的一个壳,是用户使用 Linux 系统的接口,它接受用户输入的各种命令,然后把它们传递给操作系统来执行。

4.应用程序

应用程序:平时使用的各种软件,如:浏览器、编辑器、办公软件等。但是一般在服务器上,通常都是一些专业的服务软件,如:专门用来提供页面访问服务的 Nginx 和专门用来提供数据库服务的 MySQL 等。

二.Linux 发行版

Linux 发行版是 Linux 内核、应用软件、系统工具、库文件、图形界面、Shell、包管理器等组成的一个完整的操作系统。它提供了一个预先配置好的 Linux 环境,使我们能够方便的安装、配置和使用 Linux 系统。每个发行版都有自己的包管理器、桌面环境和一些特定的工具。

三.Linux 系统的安装和配置

安装方式:虚拟机软件、容器安装、云服务器

1.常见的虚拟机软件

2.使用容器安装 Linux

使用 Docker 安装

3.使用云服务器安装 Linux

阿里云、腾讯云、华为云

四.vi/vim 编辑器

vi 和 vim 的区别:vi 编辑器是 Unix 系统下的一款文本编辑器,而 vim 是 vi improved 的缩写,是 vi 编辑器的增强版,它们的使用方法是一样的,只是 vim 在 vi 的基础上增加了一些新的功能和改进,使用起来更加的方便。通常我们在 Linux 系统上都会安装 vim,在命令行中输入 vi 通常也会直接启动 vim。

(1)启动 vim

在命令行中输入 vi/vim 可以直接启动 vim

root@iZuf63rva8dpt13rs0hwmkZ:~# vi

在命令行中输入 vi + 文件名,可以直接打开这个文件,如果文件不存在的话就会创建一个新的文件

root@iZuf63rva8dpt13rs0hwmkZ:~# vi hello.txt

(2)vi 中三种常用模式🌟

vi 中有三种常用的模式:命令模式插入模式尾行模式。还有一些其他的模式,如替换模式可视模式等,但是这些模式相对来说使用的比较少。进入到 vim 后默认的是命令模式。

在 vi 中有一个非常重要的文件,就是 .vimrc 文件,这个文件是用来保存一些 vi 的配置信息的。比如可以设置一些快捷键设置颜色或者插件等。还有设置行号或者忽略大小写的设置等,都是可以写到这个配置文件中的,这样每次打开 vi 的时候就会自动加载这些配置,也就不用每次都手动去设置了,可以把自己习惯的一些设置都写入到这个文件中,这样在以后的使用中就会更加方便和高效。

1.命令模式

命令模式:可以使用快捷键来执行一些常用的操作,如:浏览文件的内容、复制、粘贴、查找或者删除文本等。

在命令模式下,可以使用键盘上的 h j k l 这几个键来控制光标的移动,分别代表左下上右。也可以使用方向键的上下左右来控制光标的移动。

在命令模式下,还有两个比较常用的快捷键是 ^$,它们分别代表行首和行尾。比如按下 ^ 就会跳转到这一行的行首,按下 $ 就会跳转到这一行的行尾。当一行内容非常长的时候,使用这两个快捷键非常方便。另外在其他的场景中也经常会用到这两个快捷键,比如正则表达式或者查找替换的时候都是使用这两个符号来表示开头和结尾的。

在命令模式下,也可以使用快捷键来执行复制、粘贴、删除等常用的操作。比如可以连续按下两个 y 键来复制一行内容,再按下 p 键就可以将复制的内容粘贴到光标的下一行,如果把 yy 换成 dd 的话,就会删除一行内容,然后同样也可以使用 p 键把刚刚删除掉的内容粘贴到光标所在位置的下一行。这几个快捷键可以类比为 Win 系统的 Ctrl + C、Ctrl + V、Ctrl + X。还有一个小技巧,在这几个快捷键前面加上一个数字,就可以表示复制或者粘贴的次数,比如输入 2yy 就会复制两行内容,然后再输入一个 3p 就会把刚刚复制的两行内容在下面粘贴3次。

在命令模式下,使用 Ctrl + FCtrl + B 可以快速地向前翻页或者向后翻页,这里的 F 和 B 分别表示 forward 和 backward,即向前和向后的意思。类似的,可以使用 Ctrl + UCtrl + D 快速地向上翻半页或者向下翻半页,这里的 U 和 D 分别表示 up 和 down,即向上和向下的意思。

在命令模式下,可以使用大写的 G 来快速地跳转到文件的最后一行。使用两个小写的 g,即 gg 来跳转到文件的第一行。输入行号之后再按下大写字母 G 可以跳转到文件中指定的某一行,如输入 100G 就会跳转到文件的第100行。另外输入 :50 也可以跳转到文件的第50行。

在命令模式下,可以使用 / 或者 ? 来进行查找。 / 后输入需要查找的内容,如 /Hello 就可以从光标所在的位置开始向下查找,当找到目标后按小写的 n 键就可以查找下一个目标(大写的 N 键则是相反方向查找下一个)。 ? 后输入需要查找的内容,如 ?Hello 就可以从光标所在的位置向下查找,当找到目标后按小写的 n 键就可以查找下一个目标(大写的 N 键则是相反方向查找下一个)。注意:查找是区分大小写的,如果想要忽略大小写,可以在查找的时候在 / 或者 ? 后面加上一个 \c 。如 /Hello\c 会匹配到全部的 hello。还有一种方式是在尾行模式下,输入命令 :set ic (ignore case),来修改全局的忽略大小写设置,这样在查找任何内容时都不会区分大小写了。

在尾行模式下,替换操作的格式为 :n1,n2s/old/new/g 。首先是一个冒号;然后是用逗号分隔开的两个数字 n1n2,表示要替换的范围,即从第几行到第几行,如果只是想替换当前行的话可以省略掉这两个数字,如果替换范围是整个文件的话,范围可以写成 1,$ ,其中 $ 表示文件的最后一行;然后是一个小写 s 表示替换的意思;后面是用 / 分隔开的查找和替换的内容;最后是一个可选的 g ,表示全局的意思,如果不加 g 的话只会替换每一行的第一个匹配到的内容,而加上 g 之后就会替换每一行的所有匹配到的内容。例如 :40,50s/Hello/World/g。

在命令模式下,还有一个非常常用的快捷键就是 u ,表示 undo 即撤销的意思,相对于 Win 中的 Ctrl + Z 键。当不小心做了一些修改之后,想要撤销的话就可以按下 u 键来撤销。

2.插入模式

插入模式:用来编辑文件的,当我们想要往文件里面插入一些内容的时候就可以进入到插入模式。通过键盘上的 i/I 键、 a/A 键或者 o/O 键可以进入到插入模式。这几个字母分别代表 insert、append 和 open。快捷键的大小写有区别,进入插入模式后光标的位置不同!

3.尾行模式

尾行模式:输入 :wq 保存文件并退出 vim;输入 :set number/:set nu 可以给文件内容显示行号;输入 :set nonumber/set nonu 可以取消显示行号;输入 :50 可以跳转到文件的第50行。

五.Linux系统常用的命令

Linux 中的命令一般都是由命令名和它后面的一些参数组成的,基本上所有的命令都可以接受一个或者多个参数,参数的作用是用来指定命令的具体操作。

1.ls(list)显示目录内容

输入 ls 后回车就可以查看当前目录下的所有文件和目录

ls 命令可以接受一些参数来改变它的行为:

-l 参数可以显示更详细的信息,包括文件的权限所有者大小修改时间等。

-a 参数可以显示包括隐藏文件在内的所有文件和目录。在 Linux 系统中以半角英文的点 . 开头的文件和目录都是隐藏的。比如之前的用来保存 vi 配置信息的 .vimrc 文件,用来保存 SSH 密钥的 .ssh 目录等,这些文件和目录默认都是不显示的。

-h 参数可以以人类可读的方式显示文件的大小。

-t 参数可以按照修改时间排序。

-r 参数可以逆序显示。

这些参数可以组合起来写,如 ls -l -t -r,也可以缩写成 ls -ltr。

左边第一列是文件的类型和权限,第一个字符表示的是文件的类型,中杠(-)表示普通文件d 表示目录,l 表示这是一个链接文件。(链接文件是 Linux 系统中的一种特殊文件,分为硬链接软链接两种,软链接也叫符号链接,它类似 Win 系统中的快捷方式。创建链接文件的命令是 ln (link),后面加上源文件的名称以及链接文件的名称。可以在 ln 后面加上一个 -s 来表示创建的是软链接文件,如果不加 -s 的话则默认创建的是硬链接文件。)

左边第一列除开第一个字符,后面的9个字符表示的是文件的权限,可以把它们按照三个字符一组来看,第一组表示的是文件的所有者的权限,第二组表示的是文件所属组别的权限,第三组表示的是其他用户的权限。每一组中的三个字符分别表示的是执行权限,其中 r 表示可读w 表示可写x 表示可执行,而相应的位置上如果没有相应的权限,就会显示成一个中杠 - 。可以使用 chmod (change mode) 命令来修改文件的权限

如,想要给文件 hello1.txt 添加一个可执行权限的话,可以输入 chmod 后面加上一个 +x 表示添加可执行权限,然后再加上文件名 hello1.txt ,再回车,可看到文件名变成了绿色,表示这个文件是一个可执行文件。同样的,如果想添加或者权限的话,就可以把 +x 换成 +r 或者 +w 就可以了。加号 + 表示添加权限,相应的减号 - 表示删除权限。除了可以使用加号或者减号给所有用户添加权限之外,还可以再加号或者减号的前面加上 ug 或者 o ,来单独给文件的所有者同组用户或者其他用户来添加或者删除权限。ugo 还可以组合在一起使用,如 chmod ug+x hello1.txt

这种方式有的时候会比较麻烦,还有一种更加简单的修改权限的方式。就是使用数字来表示权限

左边第二列的数字表示文件的硬链接数。

注意:软链接文件本身其实并不存储文件的内容,他只是一个指向目标文件的快捷方式,所以软链接文件的大小非常小;ln 后不加 -s 的话创建的是一个硬链接文件,硬链接本质上是一个指向文件系统中另一个文件的指针,它与原始文件共享相同的 i 节点,i 节点是文件系统中重要的概念,在 Linux 系统中每个文件或者目录都有一个唯一的 i 节点,它存储了文件的元数据信息,包括文件的权限、所有者、大小、修改时间等,系统也是通过这个 i 节点来识别文件的。硬链接文件和原始文件共享相同的 i 节点,也就意味着它们共享相同的文件内容。源文件和硬链接实际上是文件系统中同一个文件的两个不同的名字

ls -i 可以查看文件的 i 节点。以下例子中,可以看出硬链接文件和原始文件共享相同的 i 节点。

硬链接中,删除其中一个文件的时候,另一个文件还是可以正常访问的。而把软链接的目标文件删除的时候,软链接文件就会失效。如,使用 rm 命令删除 hello.txt 时,链接文件的颜色变成了红色,表示这个链接现在正指向一个并不存在的文件。

软链接硬链接的另外一个区别:软链接可以指向文件或者目录,但是硬链接只能指向文件不能指向目录。

2.cat:查看文件的内容

3.rm(remove):删除文件/目录

注意:rm 命令是非常危险的,因为 Linux 系统中的删除操作是不可逆的,也没有像 Windows 系统中的回收站一样的机制可以让你在删除之后还有机会可以恢复,所以在使用 rm(remove)命令的时候一定要非常地小心,尤其是在使用 -r 参数的时候。

删除文件的命令是 rm 后面直接加上文件名即可。

  • 比如删除文件 file4

删除目录时,直接输入 rm 的话是无法直接删除目录的,需要在 rm 后面加上 -r 参数表示递归删除才可以。-r 将目录及其以下的目录和文件逐一删除或者使用 rmdir(remove directory) 命令来删除目录,用法见13。

  • 直接删除目录报错

  • 删除目录时,需要加上 -r 参数

4.touch:更新文件的修改时间(文件存在)/创建文件(文件不存在时)

在 Linux 中,创建文件的方式有很多种方式。可以使用 vi 编辑器,也可以使用一些命令来创建文件。如,touch 命令,这个命令本来的作用是用来更新文件的修改时间的,但是如果文件不存在的话,它会自动创建一个新的空文件。touch后面的文件名如果是一个已经存在的文件的话,那么它就会更新这个文件的修改时间。

  • touch 命令,这个命令本来的作用是用来更新文件的修改时间的,但是如果文件不存在的话,它会自动创建一个新的空文件。

  • touch后面的文件名如果是一个已经存在的文件的话,那么它就会更新这个文件的修改时间

5.echo:输出文本或将输出的文本重定向到文件里(文件存在)/创建文件(文件不存在时)

echo 是一个用来输出文本的命令,比如输入 echo "Hello" 之后回车,就可以在命令行中回显出我们输入的内容,如果我们想要把这个内容保存到一个文件中的话,就可以使用重定向符号 > ,也就是一个右箭头后面加上文件名,这样就可以把原本要输出到屏幕上的内容重定向到这个文件里面,当文件不存的时候,它会自动创建一个新的文件。

6.pwd(print working directory):显示当前所在目录的位置

在 Windows 系统中,文件和目录是以盘符开始的,比如 C 盘、D 盘等;而在 Linux系统中,文件系统是一个树状结构,所有的文件和目录都是从根目录开始的,根目录的符号是一个斜线(/),cd / 表示切换到根目录。

Linux 中的路径有两种类型,一种是绝对路径,一种是相对路径绝对路径是从根目录开始的完整路径,比如现在所在的 /root 就是一个完整的绝对路径;而相对路径就是指相对于当前目录的路径,相对路径可以使用一个点来表示当前目录,使用两个点来表示上一层目录,所以如果想切换到上一层目录,也就是根目录的话,也可以使用相对路径,就是输入 cd .. 之后回车。

还有一些特殊的目录,比如波浪线(~)表示当前用户的家目录中杠(-)表示上一次所在的目录等。

根目录下的一些常见目录以及其作用:bin 目录存放的是系统的基本命令以及一些二进制的可执行文件,bin 也就是 binary 的缩写,刚刚执行的各种命令基本上都在这个目录下,比如:ls、cat 等。etc 目录存放的是系统和一些软件的配置文件,当你安装完一些软件,比如 Nginx、MySQL等,它们的配置文件一般都是在这个目录下的。home 下一般是用户的家目录,也就是当我们进入系统之后默认的目录。

  • bin 目录

  • etc 目录

  • home 目录

  • 其它目录

7.cd(change directoty):切换目录

cd / 表示切换到根目录。

  • 切换到根目录

  • 切换回 root 目录

8.cp(copy):复制文件/目录

复制文件的命令是 cp ,它的用法是 cp 后面加上要复制的源文件,再加上复制后的文件名

  • 比如可以把 file2 这个文件复制一份,并命名为 file3。

复制目录时,直接输入 cp 的话是无法直接复制目录的,需要在 cp 后面加上 -r 参数表示递归复制才可以。

  • 直接输入 cp 复制时提示出错,无论该目录是否是多级目录。

  • 输入 cp -r folder1 folder_copy 之后回车,这样就可以把 folder1目录包括它下面所有的文件和目录都复制一份了。

9.mv(move):移动文件/目录

cp 命令中的 cp 换成 mv 的话就表示移动文件或者重命名文件

  • 比如把 file3 重命名为 file4 的话,就可以输入 mv file3.txt file4.txt 之后回车就可以了。

10.mkdir(make directory):创建目录

可以使用 mkdir 命令,后面加上想要创建的目录名就可以创建目录了。

  • 比如如果想要创建一个叫做 folder 的目录,就可以输入 mkdir 后面加上 folder 之后回车。

这里有个小技巧,就是可以使用 -p 参数来创建多级目录

  • 比如输入 mkdir -p 之后,后面加上 folder1,然后在它下面再加上 folder2 和 folder3,之后回车。

11.du(disk usage):查看文件大小

想要查看目录包含的内容时,可以一层一层 cd 到里面,但是这样比较麻烦,有几个命令可以方便快捷地查看目录的结构,比如可以使用 du 命令,这个命令本来的作用是查看文件和目录的大小的,顺便也可以查看目录的结构。可以加上一个 -h 参数,表示用更加人性化的方式来显示。

  • 输入 du 之后回车,就会把当前目录下的所有文件和目录的大小都列出来,这样就可以很方便的看到目录的结构。左边的数字表示的是文件或者目录的大小。

  • 加上 -h 参数,更人性化的方式显示文件大小。

12.tree:显示目录结构(不是 Linux 系统自带的命令)

tree 命令是专门用来显示目录结构的命令。可以以树状图的形式显示目录的结构。不过它并不是 Linux 系统自带的命令,需要使用包管理器来安装一下。安装命令 sudo apt install tree

  • 安装 tree 命令

  • tree 命令显示目录结构

13.rmdir(remove directory):删除目录

删除目录的命令是 rmdir(remove directory)。如果目录是空的话就可以直接在 rmdir 后面加上目录名,就可以直接删除掉了;但是如果目录下面有文件的话,删除的时候就会因为目录非空而报错,这个时候更好的方式是使用 rm(remove)命令,后面加上 -r 参数来表示递归地删除一个目录,以及它下面所有的文件,详细可见3。

  • 比如删除空目录 folder

  • 如果目录下面有文件的话,删除的时候就会因为目录非空而报错

  • 比如要删除非空目录 folder_copy 的话,就可以输入 rm -r folder_copy 之后回车

注意:rm 命令是非常危险的,因为 Linux 系统中的删除操作是不可逆的,也没有像 Windows 系统中的回收站一样的机制可以让你在删除之后还有机会可以恢复,所以在使用 rm(remove)命令的时候一定要非常地小心,尤其是在使用 -r 参数的时候。

posted @   KenWan  阅读(113)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示