Linux网络环境配置
虚拟机的网络适配器的模式有两种,分别是桥接模式和NAT模式,两者具体区别如下所示:
- 桥接模式:虚拟机跟物理机各自拥有独立的IP地址
- NAT模式:虚拟机直接共享物理机的IP,虚拟机本身没有独立的IP地址

以上两种模式都可以联网,区别就是虚拟机要不要一个独立的IP。对于桥接模式需要注意,必须要仔细选择桥接的物理网卡,否则会出现无法联网的情形。

-
桥接模式
桥接是指虚拟网卡通过物理机的某一个网络接口,直接连接到路由器去获取 IP 地址。假设物理机有WiFi、以太网等多个网口,其中无线WiFi网口连接到了互联网,而有线以太网口连接到了嵌入式板卡,那么桥接时就要注意需要桥接到哪个网口。如下所示:

注意:如果网络参数经过多次配置导致无法再正确联网,可以通过点击上图中的“还原默认设置”按钮来重置虚拟机的网络。
比如电脑通过网线连接到教室的网络,也就是物理机通过有线连接到网络,如下所示:

通过查看以太网的网络配置可以知道物理机的IP地址,IP地址为xxx.xxx.xxx.xxx,如下:


此时把vmware软件的网络适配器设置为桥接模式,然后修改虚拟机桥接到有线网卡:

打开ubuntu系统,并通过图形界面来设置ubuntu的网络为静态IP即可,如下图所示:


终端输入命令ifconfig查看ubuntu的IP地址,可以看到虚拟机和物理机各自有独立IP

通过ping命令测试虚拟机是否网络正常,比如输入命令 ping www.baidu.com 如下所示:
pin
注意:如果准备设置网络时,发现没有ubuntu没有网络图标,则可以选择重置网络管理器!
gec@ubuntu:$ sudo service NetworkManager stop //停止网络服务
gec@ubuntu:$ sudo rm /var/lib/NetworkManager/NetworkManager.state //删除配置文件
gec@ubuntu:$ sudo service NetworkManager start //开启网络服务
-
NAT模式
在NAT模式下Ubuntu主机与物理网络之间的通信使用网络地址转换技术。这种模式下虚拟机共享主机的IP地址,可以访问外部网络,但外部网络无法直接访问虚拟机内部。如果主机的操作系统连上了网络,那么虚拟机里的Ubuntu也能上网。
所以如果虚拟机不需要单独的IP地址,那么可以通过 NAT 模式来连接网络。NAT 模式下的虚拟机的IP地址,由虚拟网卡自动分配提供,如下图所示

此时的虚拟网卡 VMnet8 充当了路由,地址是 192.168.171.1,并且给当前windows主机和虚拟机分别分配了 192.168.171.2 和 192.168.171.128 的两个IP地址,windows主机和Ubuntu之间可以通过这两个IP地址通信,同时Ubuntu也可以直接进行联网。
-
网络设置
政鑫
给虚拟机 VMware 选择了某一种联网模式后,一般还需要给客户机(即Ubuntu主机)配置好四个网络参数才能正常联网,分别是:网卡名称、IP地址、子网掩码、网关地址。
在ubuntu17.10之后的发行版中,网络参数配置可以统一通过 Netplan 来管理。具体的操作就是通过统一对 /etc/netplan/ 下的 yaml 文件的配置,Netplan 将读取该 yaml 描述文件来配置网络接口,然后,通过这些描述为任何给定的呈现工具生成必要的配置选项。
自动获取IP
以下的配置信息展现如何使用 netplan 来给 NetworkManager 配置自动获取IP的信息,如下:
基本格式如下:
gec@ubuntu:~$ sudo gedit /etc/netplan/01-network-manager-all.yaml

说明:
renderer:指定yaml文件针对配置的网络工具
ethernets:配置以太网
ens33:以太网口名称 注意:需要使用ifconfig来查看,不是所有电脑都是一样的
dhcp4:自动获取IPv4的网络地址
dhcp6:自动获取IPv6的网络地址
注意:
冒号后面必须有空格
缩进的空格数必须一致
图片中的IP地址等参数只是例子,大家需要根据实际情况进行修改,否则会导致无法联网。
注意:
想要设置自动获取IP,在终端中可以使用gedit编辑器打开该文件进行编写,但是必须使用sudo获取超级用户权限,否则无法修改该文件。
设置静态IP
以下的配置信息展现如何使用 netplan 来给 NetworkManager 配置自动获取IP的信息,如下:
基本格式如下:
gec@ubuntu:~$ sudo gedit /etc/netplan/01-network-manager-all.yaml

说明:
[192.168.100.100/24] 中的24代表设定的IP地址的前24比特位为子网掩码,也就是255.255.255.0
nameservers 代表 DNS 服务器
图片中的IP地址等参数只是例子,大家需要根据实际情况进行修改,否则会导致无法联网。
注意:如果用户已经配置好 yaml 文件之后,需要执行如下命令来使之生效,操作如下所示:
gec@ubuntu:$ sudo netplan apply
Linux的vi/vim编辑器
-
基本概念
vim文本编辑器,是由vi编辑器发展演变过来的文本编辑器,因其具有使用简单、功能强大、是 Linux 众多发行版的默认文本编辑器。很多人习惯将 vim 称为 vi,其实 vim 是 vi 的增强版(在 vi 的基础上增加了正则表达式的查找、多窗口的编辑等功能),使用 vim 进行程序开发会更加方便。
注意:Linux系统中是默认安装vi编辑器的,但是需要手动安装vim编辑器,指令如下所示:


-
模式说明
vim有三种工作模式,分别是命令模式、插入模式和编辑模式,具体三种方式的关系图如下:

命令模式
当使用 vi/vim 打开文件时,则默认处于命令模式。此模式下,可使用方向键(上、下、左、右键)或 k、j、h、l 移动光标的位置,还可以对文件内容进行复制、粘贴、替换、删除等操作。
输入模式
在输入模式下,Vim 可以对文本执行写操作,类似于在 Windows 系统的文档中输入内容。使Vim 切换到输入模式的方法:在命令模式状态下输入 i、I、a、A、o、O 等插入命令,当编辑文件完成后按 Esc 键即可返回命令模式。
快捷键
|
功能描述
|
i
|
在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动
|
I
|
在光标所在行的行首插入随后输入的文本,行首是该行的第一个非空白字符,相当于光标移动到行首执行 i 命令
|
o
|
在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本
|
O
|
在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本
|
a
|
在当前光标所在位置之后插入随后输入的文本
|
A
|
在光标所在行的行尾插入随后输入的文本,相当于光标移动到行尾再执行a命令
|
编辑模式
编辑模式用于对文件中的指定内容执行保存、查找或替换等操作。使 Vim 切换到编辑模式的方法:在命令模式状态下按shift+:键,此时 Vim 窗口的左下方出现一个“:”符号,就可以输入相关指令进行操作了。指令执行后 Vim 会自动返回命令模式。
如果想直接返回命令模式,按 Esc 即可。注意:如果无法确定此时为何种模式,只需按一次 Esc 键,即可返回命令模式。
-
使用流程
打开文件
利用vi/v
im进行文本编辑,涉及到文件的各种操作,前提都是需要提前“打开文件”操作:
gec@ubuntu:~$ vi test.c
刚打开文件时
默认处于命令模式
,此时文件的下方会显示文件的一些信息:文件的总行数和字符数,以及当前光标所在的位置等。
编辑文件
Vim 提供了大量的编辑快捷键,所有操作大部分在命令模式下进行,主要可分为以下几类:
查找内容
如果在文件中并没有找到所要查找的字符串,则在文件底部会出现 "Pattern not found" 提示。
在查找过程中需要注意的是,要查找的字符串是严格区分大小写的,如查找 "shenchao" 和 "ShenChao" 会得到不同的结果。如果想忽略大小写,则输入命令 ":set ic";调整回来输入":set noic"。
如果在字符串中出现特殊符号,则需要加上转义字符 "\"。常见的特殊符号有 \、*、?、$ 等。如果出现这些字符,例如,要查找字符串 "10$",则需要在命令模式中输入 "/10\$"。

替换文本
快捷键
|
功能描述
|
r
|
替换光标所在位置的字符
|
R
|
从光标所在位置开始替换字符,其输入内容会覆盖掉后面等长的文本内容,按“Esc”可以结束
|
:s/a1/a2/g
|
将当前光标所在行中的所有 a1 用 a2 替换
|
:n1,n2s/a1/a2/g
|
将文件中 n1 到 n2 行中所有 a1 都用 a2 替换
|
:s/a1/a2/g
|
将文件中所有的 a1 都用 a2 替换
|

快捷键
|
功能描述
|
/abc
|
从光标所在位置向前查找字符串 abc
|
/^abc
|
查找以 abc 为行首的行
|
/abc$
|
查找以 abc 为行尾的行
|
?abc
|
从光标所在为主向后查找字符串 abc
|
n
|
向同一方向重复上次的查找指令
|
N
|
向相反方向重复上次的查找指定
|
删除文本
需要注意的是被删除的内容并没有真正删除,都放在了剪贴板中。将光标移动到指定位置处,按下 "p" 键,就可以将刚才删除的内容又粘贴到此处。
快捷键
|
功能描述
|
x
|
删除光标所在位置的字符
|
dd
|
删除光标所在行
|
ndd
|
删除当前行(包括此行)后 n 行文本
|
dG
|
删除光标所在行一直到文件末尾的所有内容
|
D
|
删除光标位置到行尾的内容
|
:a1,a2d
|
函数从 a1 行到 a2 行的文本内容
|
复制粘贴
快捷键
|
功能描述
|
p
|
将剪贴板中的内容粘贴到光标后
|
P(大写)
|
将剪贴板中的内容粘贴到光标前
|
y
|
复制已选中的文本到剪贴板
|
yy
|
将光标所在行复制到剪贴板,此命令前可以加数字 n,可复制多行
|
yw
|
将光标位置的单词复制到剪贴板
|
保存退出
需要注意:vi/vim 的保存和退出是在编辑模式中进行的,"w!" 和 "wq!" 等类似的指令,通常用于对文件没有写权限的时候(显示 readonly),但如果你是文件的所有者或者 root 用户,就可以强制执行。
命令
|
功能描述
|
:wq
|
保存并退出 Vim 编辑器
|
:wq!
|
保存并强制退出 Vim 编辑器
|
:q
|
不保存就退出 Vim 编辑器
|
:q!
|
不保存,且强制退出 Vim 编辑器
|
:w
|
保存但是不退出 Vim 编辑器
|
:w!
|
强制保存文本
|
:w filename
|
另存到 filename 文件
|
x!
|
保存文本,并退出 Vim 编辑器,更通用的一个 vim 命令
|
ZZ
|
直接退出 Vim 编辑器
|
其他常用
某些情况下,可能需要把两行进行连接。比如说,下面的文件中有两行文本,现在需要将其合并成一行(实际上就是将两行间的换行符去掉)。可以直接在命令模式中按下 "J" 键。
如果不小心误删除了文件内容,则可以通过 "u" 键来撤销刚才执行的命令。如果要撤销刚才的多次操作,可以多按几次 "u" 键。
作业:要求在Linux系统下使用vi/vim编辑器完成程序的编辑,并完成程序的编译工作!



系统之间文件共享
想要实现两个不同的系统之间实现文件共享,最简单的一种方案就是设置VMware软件的共享文件夹,利用共享文件夹可以实现linux系统和windows系统之间的文件共享,这样就可以实现在windows系统上编辑程序,然后在linux系统下编译程序以及运行程序,尤其是当使用开发板的时候,这种方案非常好用。
点击VMware菜单栏的“虚拟机”,然后点击“设置”,点击“选项”,点击“共享文件夹”

设置主机路径(windows系统的路径,),设置名称(linux系统的文件夹的名称,英文)

然后打开Terminal终端,输入命令cd /mnt/hgfs/ 然后按下回车,输入ls命令查看

可以看到share文件夹就是设置好的共享文件夹的名称,切换到该目录即可实现共享。

