目录
一、Linux相关介绍
Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
今天各种场合都有使用各种 Linux 发行版,从嵌入式设备到超级计算机,并且在服务器领域确定了地位。

1.1 Linux的由来
Linux 是一个开源的操作系统,由分布在世界各地的多个组织机构或个人共同开发完成,每个组织结构或个人负责一部分功能,最后组合在一起,就构成了今天的 Linux。
例如:
- Linux 内核最初由芬兰黑客 Linus Benedict Torvalds 开发,后来他组建了团队,Linux 内核由这个团队维护。
- GNU 组织开发了很多核心软件和基础库,例如 GCC 编译器、C语言标准库、文本编辑器 Emacs、进程管理软件、Shell 以及 GNOME 桌面环境等。
- VIM 编辑器由荷兰人 Bram Moolenaar 开发。
1.2 Linux的发行版本
Linux是一种自由和开放源代码的类UNIX操作系统,因此Linux具有非常多的发行版本(将Linux内核+应用软件做成一个包)。
目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。

1.3 Linux 和 Windows 的一些区别

1.4 Linux和嵌入式
嵌入式系统通常作为某种设备装置或设备的一部分,是一种软件硬件可裁剪、对功能、可靠性、成本、体积,工耗有着严格要求专用的计算机系统。嵌入式开发就是在这些专用计算机系统上,开发相应系统、驱动、应用程序等。
我们通常习惯在Linux系统环境下做“嵌入式开发”,所以我们学习Linux,主要就是学习如何使用Linux系统。
二、在虚拟机中安装Linux
我们使用Linux中发行版本之一的Ubuntu,使用步骤如下
- 安装VirtualBox虚拟机,以便安装Ubuntu
- 在虚拟机中新建Ubuntu系统
- 开始安装
2.1 安装Ubuntu时的操作步骤











三、Linux目录

3.1 各目录介绍
| 目录 | 含义/说明 |
|---|---|
| /bin | bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。 |
| /boot | 这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。 |
| /dev | dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。 |
| /etc | etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。 |
| /home | 用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的dalong。 |
| /lib | lib 是 Library(库) 的缩写,这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。 |
| /lost+found | 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。 |
| /media | linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。 |
| /mnt | 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。 |
| /opt | opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。 |
| /proc | proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。 |
| /root | 该目录为系统管理员,也称作超级权限者的用户主目录。 |
| /sbin | s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。 |
| /selinux | 这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。 |
| /srv | 该目录存放一些服务启动之后需要提取的数据。 |
| /sys | 这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。 sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。 该文件系统是内核设备树的一个直观反映。 当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。 |
| /tmp | tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。 |
| /usr | usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。 /usr/bin: 系统用户使用的应用程序。 /usr/sbin: 超级用户使用的比较高级的管理程序和系统守护程序。 /usr/src: 内核源代码默认的放置目录。 |
| /var | var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。 |
| /run | 是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。 |
在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。
- /etc:这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
- /bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。
- 值得提出的是 /bin、/usr/bin 是给系统用户使用的指令(除 root 外的通用用户),而/sbin, /usr/sbin 则是给 root 使用的指令。
- /var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在 /var/log 目录下,另外 mail 的预设放置也是在这里。
.或者 ./ 代表当前目录
..或者 ../ 代表上一级目录
../..或者 ../../ 代表上上一级目录
四、Linux系统命令
在计算机的早期并没有图形界面,我们只能通过一个一个地命令来控制计算机,只有专业人员才能使用。
现在我们使用的操作系统(Windows、HarmonyOS、Android、iOS 等)都是带图形界面的,简单直观,容易上手,对专业用户(程序员、网管等)和普通用户(家庭主妇、老年人等)都非常适用;计算机的普及离不开图形界面。
对于图形界面,用户点击某个图标就能启动某个程序;对于命令行,用户输入某个程序的名字(可以看做一个命令)就能启动某个程序。
图形界面和命令行要达到的目的是一样的,都是让用户控制计算机。
4.1 命令行当前状态
命令提示符,实际上就是在提示当前终端的状态。
命令提示符的格式如下:
dalong@dalong-VirtualBox:~$

4.2 命令的组成格式
Linux中命令由三个部分组成,分别是命令、选项、参数。

4.2.1 命令的注意事项
- 命令、选项、参数之间使用空格隔开
- 命令是必须存在的 选项和参数选填
- 选项以“-”开始
- 选项不需要死记硬背(使用man ls 查看ls命令的文档)
- 输入完命令后按下enter回车执行命令
4.3 常用的命令













| 命令 | 功能简述 |
|---|---|
| pwd | 显示当前工作目录的绝对路径(Print Working Directory)。 |
| cd | 切换当前工作目录(Change Directory)。 |
| ls | 列出当前目录下的文件和子目录信息(List)。 |
| mkdir | 创建一个新的空目录(Make Directory)。 |
| sudo | 以超级管理员(root)的权限执行后续命令(Superuser Do)。 |
| rmdir | 删除一个空目录(Remove Directory)。 |
| touch | 创建一个新的空文件,或更新已有文件的时间戳。 |
| gedit | 用图形界面的文本编辑器(GNOME编辑器)打开或创建文件。 |
| rm | 删除文件或目录(Remove)。注意:删除目录需配合 -r 选项。 |
| mv | 移动文件/目录到其他位置,或用于重命名(Move)。 |
| cp | 复制文件或目录(Copy)。复制目录通常需配合 -r 选项。 |
| cat | 查看文件内容(将其输出到终端),或用于合并多个文件(Concatenate)。 |
| ps | 显示当前系统中运行的进程快照(Process Status)。 |
4.4 apt命令
4.4.1 apt常用的命令
- 列出所有可更新的软件清单命令:sudo apt update
- 升级软件包:sudo apt upgrade
- 列出可更新的软件包及版本信息:apt list --upgradeable
- 升级软件包,升级前先删除需要更新软件包:sudo apt full-upgrade
- 安装指定的软件命令:sudo apt install
- 安装多个软件包:sudo apt install
- 更新指定的软件命令:sudo apt update
- 显示软件包具体信息,例如:版本号,安装大小,依赖关系等等:sudo apt show
- 删除软件包命令:sudo apt remove
- 清理不再使用的依赖和库文件: sudo apt autoremove
- 移除软件包及配置文件: sudo apt purge
- 查找软件包命令: sudo apt search
- 列出所有已安装的包:apt list --installed
- 列出所有已安装的包的版本信息:apt list --all-versions
五、什么是Vim编辑器
Windows下面有记事本编辑器,以及其他第三方的编辑器。Linux下也有编辑器。
vi 是老式的文本处理器,而Vim 是从 vi 发展出来的一个文本编辑器。
VIM 是 Linux 系统上一款文本编辑器,它是操作 Linux 的一款利器。具备文本编辑的常见用能,并且还有代码补全提示、编译及错误跳转等方便编程的功能,在程序员中被广泛使用。Vim官方认为Vim是一个程序开发工具。
但因为多数人习惯了Windows上的编辑器,所以在接触Vim时会不适应,但习惯之后就会发现Vim的优点。
5.1 编辑器常见的功能
- 新建、打开、编辑、保存文件
- 复制、删除、粘贴
- 查找、替换
- 编辑(光标)位置移动
- 代码补全提示、错误跳转
5.2 使用
Vim分成了命令模式、输入模式和底线命令模式三种模式
5.2.1 命令模式(Command Mode)
用户刚刚启动Vim时,默认就处于命令模式。
在当前状态下通过键盘输入的动作会被Vim识别成一个“命令”,而非对文件进行编辑。
- 比如想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。
命令模式只有一些最基本的命令,比较单一。因此仍要依靠底线命令模式输入更多命令。
5.2.2 输入模式(Insert Mode)
在命令模式下按下 i 就即可进入到输入模式。
在输入模式中,可以使用以下按键:
- 字符按键以及Shift组合,输入字符
- ENTER,回车键,换行
- BACK SPACE,退格键,删除光标前一个字符
- DEL,删除键,删除光标后一个字符
- 方向键,在文本中移动光标
- HOME/END,移动光标到行首/行尾
- Page Up/Page Down,上/下翻页
- Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
- ESC,退出输入模式,切换到命令模式
5.2.3 底线命令模式(Last Time Mode)
在命令模式下按下:(英文输入法下的冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
- q 退出程序
- w 保存文件
按ESC键可随时退出底线命令模式。
三种命令的切换方式如下:

5.3 Vim常用命令
一般模式可用的光标移动、复制粘贴、搜索替换等常用编辑功能
| 移动光标的方法 | |
| h 或 向左箭头键(←) | 光标向左移动一个字符 |
| j 或 向下箭头键(↓) | 光标向下移动一个字符 |
| k 或 向上箭头键(↑) | 光标向上移动一个字符 |
| l 或 向右箭头键(→) | 光标向右移动一个字符 |
| 如果你将右手放在键盘上的话,你会发现 hjkl 是排列在一起的,因此可以使用这四个按钮来移动光标。 如果想要进行多次移动的话,例如向下移动 30 行,可以使用 "30j" 或 "30↓" 的组合按键, 亦即加上想要进行的次数(数字)后,按下动作即可! | |
| [Ctrl] + [f] | 屏幕『向下』移动一页,相当于 [Page Down]按键 (常用) |
| [Ctrl] + [b] | 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用) |
| [Ctrl] + [d] | 屏幕『向下』移动半页 |
| [Ctrl] + [u] | 屏幕『向上』移动半页 |
| + | 光标移动到非空格符的下一行 |
| - | 光标移动到非空格符的上一行 |
| n | 那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20 则光标会向后面移动 20 个字符距离。 |
| 0 或功能键[Home] | 这是数字『 0 』:移动到这一行的最前面字符处 (常用) |
| $ 或功能键[End] | 移动到这一行的最后面字符处(常用) |
| H | 光标移动到这个屏幕的最上方那一行的第一个字符 |
| M | 光标移动到这个屏幕的中央那一行的第一个字符 |
| L | 光标移动到这个屏幕的最下方那一行的第一个字符 |
| G | 移动到这个档案的最后一行(常用) |
| nG | n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu) |
| gg | 移动到这个档案的第一行,相当于 1G 啊! (常用) |
| n | n 为数字。光标向下移动 n 行(常用) |
| 搜索替换 | |
| /word | 向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用) |
| ?word | 向光标之上寻找一个字符串名称为 word 的字符串。 |
| n | 这个 n 是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串! |
| N | 这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。 例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。 |
| 使用 /word 配合 n 及 N 是非常有帮助的!可以让你重复的找到一些你搜寻的关键词! | |
| :n1,n2s/word1/word2/g | n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 !举例来说,在 100 到 200 行之间搜寻 vbird 并取代为 VBIRD 则: 『:100,200s/vbird/VBIRD/g』。(常用) |
| :1,$s/word1/word2/g 或 :%s/word1/word2/g | 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !(常用) |
| :1,$s/word1/word2/gc 或 :%s/word1/word2/gc | 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !且在取代前显示提示字符给用户确认 (confirm) 是否需要取代!(常用) |
| 删除、复制与贴上 | |
| x, X | 在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用) |
| nx | n 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符, 『10x』。 |
| dd | 剪切游标所在的那一整行(常用),用 p/P 可以粘贴。 |
| ndd | n 为数字。剪切光标所在的向下 n 行,例如 20dd 则是剪切 20 行(常用),用 p/P 可以粘贴。 |
| d1G | 删除光标所在到第一行的所有数据 |
| dG | 删除光标所在到最后一行的所有数据 |
| d$ | 删除游标所在处,到该行的最后一个字符 |
| d0 | 那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符 |
| yy | 复制游标所在的那一行(常用) |
| nyy | n 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用) |
| y1G | 复制游标所在行到第一行的所有数据 |
| yG | 复制游标所在行到最后一行的所有数据 |
| y0 | 复制光标所在的那个字符到该行行首的所有数据 |
| y$ | 复制光标所在的那个字符到该行行尾的所有数据 |
| p, P | p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行! 举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么原本的第 20 行会被推到变成 30 行。 (常用) |
| J | 将光标所在行与下一行的数据结合成同一行 |
| c | 重复删除多个数据,例如向下删除 10 行,[ 10cj ] |
| u | 复原前一个动作。(常用) |
| [Ctrl]+r | 重做上一个动作。(常用) |
| 这个 u 与 [Ctrl]+r 是很常用的指令!一个是复原,另一个则是重做一次~ 利用这两个功能按键,你的编辑,嘿嘿!很快乐的啦! | |
| . | 不要怀疑!这就是小数点!意思是重复前一个动作的意思。 如果你想要重复删除、重复贴上等等动作,按下小数点『.』就好了! (常用) |
一般模式切换到编辑模式的可用的按钮说明
| 进入输入或取代的编辑模式 | |
| i, I | 进入输入模式(Insert mode): i 为『从目前光标所在处输入』, I 为『在目前所在行的第一个非空格符处开始输入』。 (常用) |
| a, A | 进入输入模式(Insert mode): a 为『从目前光标所在的下一个字符处开始输入』, A 为『从光标所在行的最后一个字符处开始输入』。(常用) |
| o, O | 进入输入模式(Insert mode): 这是英文字母 o 的大小写。o 为在目前光标所在的下一行处输入新的一行; O 为在目前光标所在的上一行处输入新的一行!(常用) |
| r, R | 进入取代模式(Replace mode): r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用) |
| 上面这些按键中,在 vi 画面的左下角处会出现『--INSERT--』或『--REPLACE--』的字样。 由名称就知道该动作了吧!!特别注意的是,我们上面也提过了,你想要在档案里面输入字符时, 一定要在左下角处看到 INSERT 或 REPLACE 才能输入喔! | |
| [Esc] | 退出编辑模式,回到一般模式中(常用) |
一般模式切换到指令行模式的可用的按钮说明
| 指令行的储存、离开等指令 | |
| :w | 将编辑的数据写入硬盘档案中(常用) |
| :w! | 若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关 |
| :q | 离开 vi (常用) |
| :q! | 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。 |
| 注意一下啊,那个惊叹号 (!) 在 vi 当中,常常具有『强制』的意思~ | |
| :wq | 储存后离开,若为 :wq! 则为强制储存后离开 (常用) |
| ZZ | 这是大写的 Z 喔!如果修改过,保存当前文件,然后退出!效果等同于(保存并退出) |
| ZQ | 不保存,强制退出。效果等同于 :q! 。 |
| :w [filename] | 将编辑的数据储存成另一个档案(类似另存新档) |
| :r [filename] | 在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面 |
| :n1,n2 w [filename] | 将 n1 到 n2 的内容储存成 filename 这个档案。 |
| :! command | 暂时离开 vi 到指令行模式下执行 command 的显示结果!例如 『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的档案信息! |
| vim 环境的变更 | |
| :set nu | 显示行号,设定之后,会在每一行的前缀显示该行的行号 |
| :set nonu | 与 set nu 相反,为取消行号! |
在 vi/vim 中,数字是很有意义的!数字通常代表重复做几次的意思! 也有可能是代表去到第几个什么的意思。
3万+

被折叠的 条评论
为什么被折叠?



