知识点1 Linux系统构建
1 Linux系统构建方式
对于Linux依赖于主机实现,须有构建Linux系统主要的方式**包含三种**:
1. 直接在物理机中构建Linux系统
优点:可以直接访问物理存储器,效率较高。
缺点:
1) 在每一个物理机中只能运行一个Linux系统;
2) 对于初学者不友好,不熟悉操作系统,使用不方便。
2. 在虚拟主机中构建Linux系统
**实质:**在现有物理机所运行的操作系统(Windows、MAC OS)中,通过虚拟化服务(软件)启动Linux操作。
优点:
1) 在一台物理机中运行多个Linux系统;
2) 多个Linux系统之间由于共享物理机的存储器,便于实现数据的交互。
缺点:
1) 通过虚拟化服务实现,不能直接访问物理存储器,效率较低;
2) 不是所有的物理机都能够支持虚拟化服务。
3. **云端**构建Linux系统
在云端搭建Linux系统,分配账号信号登录访问。
通过相关云租赁系统。
付费、远程访问。
2 搭建Linux开发环境
目前以虚拟化服务方式搭建,参考笔记:
知识点2 Linux系统介绍
1 Linux系统和Windows系统的区别
1. Linux系统是一个免费开源系统,而Windows系统是收费不开源系统。
2. Linux系统主要用于嵌入式设备;
3. Linux系统的文件的管理是以根文件系统进行管理,而Windows系统是分区进行管理
在Linux系统中,一切皆文件。为了能够方便所有文件的管理,使用文件系统进行管理。所有文件的起始路径为根路径(/)称为根目录,在根目录下按照目录中文件的作用分类管理。
在Windows系统,由多个分区管理,每一个分区由文件系统管理。
2 用户和Linux系统的交互
-
使用图形界面方式交互;
可以和Windows一样,用户直接用过图形界面方式进行交互。主要针对普通使用者使用。
-
使用终端交互
a) 终端的运行: i. 通过搜索 "terminal" 鼠标点击启动; 也可将其固定到任务栏中,直接点击启动。 ii. 快捷键启动:Ctrl + Alt + t 启动之后,终端的默认工作路径为用户家目录:/home/qf iii. 在已启动终端中 --> 鼠标右键 --> "Open Terminal" 启动后,终端的工作路径和原启动终端的当前工作路径保持一致。 b) 终端关闭 i. 鼠标点击关闭按钮关闭 ii. 直接在终端中运行“exit”命令退出。
知识点3 shell命令
在Linux系统中,为了方便用户和系统之间的交互,定义了很多的shell命令实现交互。
1 shell命令的三要素
命令包含:命令名称、命令的参数和命令的选项三要素。
命令名称:是一个可执行程序;
命令参数:在命令执行的时候,传递给命令的参数,一般表示命令的作用对象。
命令参数在命令之后,是由字符串表示,并且不以-开始。
命令选项:在命令包含多个功能项,由命令的选项选择某一个或者某一部分子功能。
命令选项在命令之后,由-开始的字符标识。
2 常用的shell命令
2.1 用户帮助命令
1. man
功能:输出接口帮助信息
格式: man page interface
page:表示需要查询的interface所在的页;
```
1 Executable programs or shell commands
2 System calls (functions provided by the kernel)
3 Library calls (functions within program libraries)
4 Special files (usually found in /dev)
5 File formats and conventions eg /etc/passwd
6 Games
7 Miscellaneous (including macro packages and conventions), e.g.
man(7), groff(7)
8 System administration commands (usually only for root)
9 Kernel routines [Non standard]
```
中文为:
```
1 可执行程序或 shell 命令
2 系统调用(内核提供的函数)
3 库调用(程序库中的函数)
4 特殊文件(通常位于 /dev)
5 文件格式和规范,如 /etc/passwd
6 游戏
7 杂项(包括宏包和规范), 如 man(7),groff(7), man-pages(7)
8 系统管理命令(通常只针对 root 用户)
9 内核例程 [非标准
```
可以设置值,表示在指定页中查询interface;可以忽略,表示从第1页开始向后顺序查询;
interface:表示需要查询的接口(在不同页中,表示不同类型的接口)
2. info
功能:输出接口文档信息
格式: info 接口
### 2.2 文件和目录管理命令
#### 2.2.1 目录管理命令
1. pwd
输出当前工作目录的绝对路径
格式:pwd
绝对路径:所谓的绝对路径,指的是以根目录(/)为起始目录的路径称为绝对路径。
相对路径:所谓的相对路径,指的是从某一个路径为起始路径。
**~/ :**用户家目录(/home/qf)
**./**:当前目录,在特点场合下./可以省略
**../** :上一级目录
2. mkdir
创建空目录
格式:mkdir [OPTION] DIRECTORY
OPTION 命令选项,选择当前的功能项
无选项:表示省略选项
在创建的时候,目录不能存在,父目录要存在才可以创建成功(mkdir a)
有选项:
-p在父目录不存在的时候,用于递归创建。
mkdir -p a/b/c/d
-v输出创建的过程;
3. rmdir
删除空目录
格式 rmdir [OPTION]... DIRECTORY...
入如果目录为空才能删除,否则目录不为空不能删除。
OPTION 命令选项,表示当前命令执行功能项
无选项:表示选项省略,只能删除空目录
有选项:
-p递归删除目录(有删除当前目录,递归删除当前目录的子目录);
-v输出删除过程。
4. cd
改变当前工作目录
格式 cd 目录 目录可以使用相对路径和绝对路径。
快捷键的使用:Tab 键
在命令行中使用Tab键:
1) 如果当前起始符,存在多个内容,其提示作用,将所有显示。
2) 如果当前起始符,只有一个内容,将内容补齐。
#### 2.2.2 文件管理命令
1. touch
修改时间戳:将文件的访问和修改时间改变为当前时间。
如果文件已存在的时候修改时间戳;文件不存在的时候创建文件
格式:touch [OPTION]... FILE...
OPTION:
-a 修改access time(访问时间)
-m修改modification time(修改时间)
-c文件不存在的时候,也不会创建文件
2. rm
删除文件或者目录
格式rm [OPTION]... [FILE]...
1) 删除文件
rm 文件名 其中文件名:可以使用绝对路径和相对路径
rm 1.txt 以相对路径删除当前目录中的1.txt
rm /home/qf/a/1.txt 以绝对路径删除文件
2) 删除目录
使用选项(-r、-d)删除
rm -r 目录路径 其中目录路径:可以使用相对路径和绝对路径
rm -r a 将a目录删除
rm -d a 只有a目录为空目录的时候才能够删除
rm -r /home/qf/a 以绝对路径删除目录
3. ls
查看文件或者目录信息
格式ls [OPTION]... [FILE]...
1) 查看文件
参数FILE 为文件名其中文件名:可以使用绝对路径和相对路径
ls [OPTION] 文件名
选项:
省略选项:指输出文件名称
-l输出文件详细属性参数
···
分为三组,从左到右依次表示的是用户访问权限(rw-)、组用户访问权限(rw-)、其它用户访问权限(r--)
每一组由3个符号组成,依次表示
读权限: r(1) = 可读;-(0) = 不可读
写权限: w(1) = 可写;-(0) = 不可写
执行权限: x(1) = 可执行;-(0) = 不可执行
110110100 在创建文件的时候,可以使用八进制数据设置文件的访问权限,0664
1: 表示文件数
qf qf 第1个qf是文件用户名;第二个qf是文件组名
0 表示文件大小(字节数)
12月 17 10:09 表示文件的最后修改时间
1.txt 表示文件名称
```
2) 查看目录
ls 目录路径 其中目录的路径可以是绝对路径和相对路径
输出目录中可显示的文件名和目录名
如果目录名称省略,则表示访问当前目录中的内容
ls -l 目录路径
输出目录中可显示的文件名和目录名的详细信息
```
total 16
-rw-rw-r-- 1 qf qf 11761 12月 17 10:32 1.txt
drwxrwxr-x 2 qf qf 4096 12月 17 10:09 b
ls -a目录路径
输出目录中所有的文件名称和目录名
ls -al 目录路径
输出目录中所有的文件名称和目录名的详细信息
ls -A 目录路径
输出目录中除了.和..的其它所有文件名和目录名。
```
4. cp
拷贝文件或者目录
格式cp [OPTION] SOURCE DEST
a) 文件的拷贝
i. 单个文件拷贝
cp 源文件名 目标文件名 # 将源文件中数据拷贝到目标文件中;如果目标文件不存在则创建文件,如果存在则修改数据内容
cp 1.txt 2.txt # 源文件拷贝1.txt 拷贝到目标文件 2.txt中
ii. 多个文件拷贝
将多个文件拷贝到一个目录中,此时文件名称不改变
cp 源文件1 源文件2 目录名
cp 1.txt 2.txt b # 将源文件1.txt和源文件2.txt拷贝到目录b中,目标文件名称依然为1.txt和2.txt,此时文件路径发生改变。
b) 目录的拷贝
对于目录文件的拷贝需要使用选项 -r 或者 -R
cp -r 源目录 目标目录
1) 如果目标目录不存在,则创建目标目录,并将源目录中的文件依次拷贝到目标目录中;
2) 如果目标目录已存在,则源目录中的数据直接拷贝到目标目录中。
5. mv
移动或者修改文件名称
格式mv [OPTION] SOURCE DEST
a) 单个文件的移动
mv 源文件名称 目标文件名称
1) 源文件和目标文件在同一个目录中,文件名成不一致的时候,就相当于是对文件重命名。
2) 源文件名和目标文件名不在同一个目录
目标文件名称可以目录,将源文件移动目录中(此时文件的路径改变,名称不变)。
目标文件名称可以文件名称(此时文件的路径发生改变,名称可以改变也可以不改变)。
b) 多个文件的移动
mv 源文件1 源文件2 ... 目标目录
mv 1.txt 2.txt a# 将源文件1.txt和2.txt移动到目标目录a中(注意:在移动文件之前目录a需要存在)。
c) 目录的移动
mv 源目录路径 目标目录路径
目标目录路径不存在,将源目录移动过程重命名路径;
目标目录路径已存在,将源目录中移动到目标目录中。
6. cat
连接文件,并将文件内容在标准输出上显示
a) 将文件数据在标准输出显示
cat 文件名称
b) 使用cat重定义数据流
cat >> 文件名称
将标准输入流重定向到文件,在输入的数据自动在写入到文件中。
7. tail
输出文件末尾数据
tail 文件名称# 默认输出文件末尾10行的数据;
tail -n 行数 文件名 # 输出文件末尾指定行数的数据;
8. head
输出文件起始数据
head 文件名称# 默认输出文件的起始10行数据
head -n 行数 文件名称# 输出文件起始指定行数的数据
9. ln
创建链接文件
所谓的链接的文件,指的是使用链接符号和存储器中的文件进行链接,使用链接符号访问所链接的文件。
链接文件分为软链接和硬链接:
a) 软链接:
链接符号文件和源文件,在存储器中文件数据是独立存储空间,数据内容是相同。随着文件数据的修改,另外文件的数据会跟着修改。如果源文件删除,则符号链接文件断开链接。此时为普通文件
ln sourcefile symbolfile
b) 硬链接:
链接符号文件和源文件,是同一个存储空间,符号链接文件所谓的文件数据,就是源文件存储空间的数据。
在源文件删除的时候,符号链接不会断开。
通过符号链接写文件,保存的时候,数据依然写入到源文件中。
ln -s sourcefile symbolfilesourcefile(源文件)symbol(符号)file(文件夹)
### 2.3 文件的打包和压缩
#### 2.3.1 文件的压缩和解压缩的工具
1. gzip和gunzip
在Linux系统中,压缩工具其中之一为 gzip,将文件压缩为后缀为.gz的文件;所对应的解压缩工具为gunzip。
gzip 文件名称
gunzip 压缩文件名称
2. bzip2 和 bunzip2
在Linux系统中,压缩工具其中之一为 bzip2,将文件压缩为后缀为.bz2的文件;所对应的解压缩工具为bunzip2。
bzip2 文件名称
bunzip2 压缩文件名称
#### 2.3.2 tar 工具实现包管理
知识点4 软件包的管理
1 网络配置
1.1 常用的网络命令
1. ifconfig
配置网络接口
1) 输出网络配置信息
ifconfig# 输出所有网卡配置信息
ifconfig 网卡名称 # 输出指定网卡配置信息
2) 开启和关闭网卡,需要使用管理权限操作
sudo ifconfig 网卡名称 up/down# 开启或者关闭指定网卡
3) 设置网卡参数
sudo ifconfig 网卡名称 IP地址信息
2. ping
发送ICMP报文,检测网络是否可以通信。
### 1.2 设置虚拟机网络配置
建议:在启动虚拟化服务软件的时候,使用管理员权限启动
1. 将Ubuntu系统的网络适配器设置为桥接模式
3. 网络的配置
a) 将网卡设置为使能模式
b) 编辑连接项
点击“Edit Connections...”
c) 添加并创建网络配置
“Add” --> 在弹出的对话框中选择“Create...”
d) 设置网络分配的参数信息
i. 自动分配
ii. 手动分配
## 2 软件包的管理
在Linux系统中,软件包的管理主要有两种方式:
### 2.1 dpkg管理
类似于Windows系统中的离线包管理,不需要依赖于网络。使用dpkg 对离线包进行安装和卸载
dpkg -i 软件包的名称 # 安装软件包
dpkg -r 软件包名称
缺点:dpkg不能自动检测软件包的依赖关系,需要有使用者检测(比较麻烦)。
### 2.2 apt-get平台管理
类似Windows系统中应用软件管理工具,依赖于网络。在软件安装和卸载的过程中,自动检测依赖关系并安装和卸载。
1. 更新软件源(可选)。默认是Ubuntu官网软件源,可以更新为国内软件源
软件源的文件路径:/etc/apt/sources.list
可以通百度找的国内源进行替换。
2. 更新软件源索引文件
sudo apt-get update
根据软件源配置更新软件源的索引。方便下载的时候直接找的最有源下载,从而提高效率。
3. 下载并安装软件
sudo apt-get 软件名称
在整个下载的过程中,具体包含:
1) 读取索引文件;
2)读取依赖关系;
3) 下载
4) 解压安装并配置。
4. 卸载软件
sudo apt-get remove 软件名称
在卸载的过程中通用会检测依赖关系并完成卸载。
知识点5 程序的编辑、编译和执行
1 Ubuntu系统中的编辑器
在Ubuntu系统中常用的编辑器有gidget和vi。
而其中的gidet类型于Windows系统中的文本编辑器。重点分析vi编辑器
1.1 vim编辑器的安装和配置
vim实质是vi的升级版本
-
vim的安装命令
sudo apt-get install vim
-
vim的配置
其中vim的配置文件:/etc/vim/vimrc
在文件末尾添加一行,内容:set number # 显示行号。
sudo vi /etc/vim/vimrc
1.2 vim的工作模式
vim的工作模式包含三种模式:
1. 命令行模式(默认模式)
通过快捷命令实现文本操作;
常用的命令:
按行进行操作
yy复制1行
numyy复制num行其中num表示行数
p粘贴
dd剪切1行
numdd剪切num行其中num表示行数
按照字符进行操作
x删除光标所在字符
r + 字符将光标所在字符替换为新的字符
按照列进行操作
连续多行插入相同的数据
Ctrl+v 上下键选择行 Shift+i 输入插入的内容 Esc
删除光标所在列
Ctrl+v 上下键 delete
自动对齐
Ctrl+v 上下键 =
2. 插入模式:
实现文本内容编辑和插入;
1. 底行模式
通过底行命令vim的操作;
### 1.3 vim实现程序的编写
1. 启动vim并打开需要编辑的文件hello.c
vi hello.c
默认进入到vi的命令行模式;
3. 将vi从命令行模式切换为插入模式
按键切换:
i:从光标所在位置处开始插入;
I:从光标所在行起始位置开始插入;
a:从光标所在位置的下一个位置处开始插入;
A:从光标所在行末尾位置开始插入;
o:从光标所在行的下一行新增行开始插入
O:从光标所在行的上一行新增行开始插入
s:删除光标所在符号并开始插入
S:删除光标所在行的内容,行不变,开始插入。
1. 进入到插入后实现程序的编辑,在编辑完成后使用“Esc”键回到命令行模式
2. 在命令模式中使用斜杠(/)或者冒号(:)进入底行模式
:w写入(将编辑器中的数据写入到默认打开的文件中)
:w 文件名称将编辑器中的数据写入到指定文件中(另存为)
:q退出vi编辑器
:wq写入并退出(将编辑器中数据写入到默认打开的文件中并退出编辑器)
:r 文件名读取指定文件中的内容到编辑器中
2 程序的编译和执行
1. 程序的编译
在Ubuntu系统中使用gcc编译器实现程序的编译,将C语言程序翻译为计算机所能识别的可执行程序。
gcc 需要编译的一个或者多个.c文件进行编译,编译成功生成可执行程序a.out
1. 程序运行
可以使用相对路径和绝对路径方式运行
./a.out# 表示执行当前目录中的可执行程序a.out;并且此时的 ./ 不能省略