1. Ubuntu下的软件安装
1.1 App store
直接在ubuntu的应用商店中对visual studio code
进行下载
1.2 apt安装
apt
是基于 Debian 的 Linux 发行版(如 Ubuntu)中常用的包管理工具,用于安装、更新、升级、删除软件包,以及管理系统的包缓存。
基本语法
apt [选项] 命令 [参数]
其中,
- 选项:调整命令行为(如
-y
自动确认操作)。 - 命令:指定执行的任务(如安装、更新)。
- 参数:指定的目标软件包或其他参数。
1.3 deb软件包安装
dpkg
是 Debian 和基于 Debian 的发行版(如 Ubuntu)中的底层包管理工具,用于安装、删除和管理 .deb
格式的软件包。dpkg
通常是更高级工具(如 apt
)的基础,但也可以独立使用。
需要下载.deb文件
命令行安装,基本语法
dpkg [选项] 命令 [参数]
其中,
- 选项:调整命令行为(如静默模式、强制安装等)。
- 命令:指定执行的操作(如安装、查询)。
- 参数:目标
.deb
文件或包名。
1.4 下载源码编译安装
通常为make install
即可安装,具体看文件内的Readme
。
2. Ubuntu下的文件系统结构
2.1 根目录(/
)
根目录是整个文件系统的起点,所有其他目录和文件都挂载在此下。根目录本身通常只包含一些关键的子目录。
2.2 根目录下的重要子目录
目录 | 作用与内容 |
---|---|
/bin | 基本命令二进制文件:存放系统启动和单用户模式下使用的基本命令(如 ls 、cp 、mv 、bash 等)。 |
/boot | 启动相关文件:包含启动加载器(如 GRUB)和 Linux 内核(如 vmlinuz 、initrd.img )。 |
/dev | 设备文件:包含系统的设备文件,如硬盘、终端和外部设备(如 /dev/sda 、/dev/null )。 |
/etc | 配置文件:存放系统和应用程序的配置文件(如网络配置文件、用户权限文件)。 |
/home | 用户主目录:存放每个用户的个人文件和配置(如 /home/user1 )。 |
/lib | 共享库文件:存放系统基本功能所需的共享库(类似 Windows 的 DLL 文件)。 |
/media | 可移动设备挂载点:系统自动挂载的外部存储设备(如 U 盘、光盘)。 |
/mnt | 临时挂载点:手动挂载文件系统的目录,供管理员使用。 |
/opt | 可选应用程序:存放第三方或手动安装的附加应用程序。 |
/proc | 内核虚拟文件系统:存放与系统和内核运行时相关的信息(如 /proc/cpuinfo )。 |
/root | 超级用户主目录:root 用户的个人目录,普通用户无访问权限。 |
/run | 运行时数据:存放系统启动后产生的运行时文件(如 PID 文件)。 |
/sbin | 系统管理命令:存放系统管理员使用的命令(如 reboot 、ifconfig )。 |
/srv | 服务数据:存放由系统服务提供的数据(如 HTTP 或 FTP 服务的文件)。 |
/sys | 系统设备信息:存放系统的硬件和设备信息。 |
/tmp | 临时文件:存放临时文件,系统重启后会清空。 |
/usr | 用户二进制文件和库:包含用户空间的程序和文件。 |
/var | 可变数据:存放经常变化的数据,如日志文件、缓存文件和队列数据。 |
2.3 关键目录详解
- /bin
- 存放普通用户和管理员都可用的基本命令,如:
ls
:列出目录内容。cp
:复制文件。mv
:移动文件。
- 存放普通用户和管理员都可用的基本命令,如:
- /boot
- 包含启动时所需的文件:
- 内核映像文件:
vmlinuz
- GRUB 配置文件:
grub.cfg
- RAM 磁盘文件:
initrd.img
- 内核映像文件:
- 包含启动时所需的文件:
- /dev
- 包含所有设备的接口文件,例如:
- 硬盘设备:
/dev/sda
- 光驱设备:
/dev/cdrom
- 虚拟设备:
/dev/null
- 硬盘设备:
- 包含所有设备的接口文件,例如:
- /etc
- 配置文件目录,例如:
- 网络配置:
/etc/network/interfaces
- 用户账户:
/etc/passwd
- 启动服务:
/etc/init.d/
- 网络配置:
- 配置文件目录,例如:
- /home
- 每个用户的主目录,例如:
/home/alice
:用户 Alice 的主目录。- 用户的文档、桌面、下载文件夹存储在此目录中。
- 每个用户的主目录,例如:
- /lib
- 系统运行所需的共享库,例如:
- 动态链接器库:
ld.so
- C 标准库:
libc.so
- 动态链接器库:
- 系统运行所需的共享库,例如:
- /proc
- 虚拟文件系统,用于内核和进程信息:
- CPU 信息:
/proc/cpuinfo
- 内存信息:
/proc/meminfo
- 当前运行的进程:
/proc/<PID>
- CPU 信息:
- 虚拟文件系统,用于内核和进程信息:
- /usr
- 用户空间的应用程序和文件:
/usr/bin
:用户安装的二进制文件。/usr/lib
:用户安装的库文件。/usr/share
:共享资源,如文档和手册。
- 用户空间的应用程序和文件:
- /var
- 包含经常变化的数据:
- 日志文件:
/var/log/syslog
- 邮件数据:
/var/mail
- 缓存:
/var/cache
- 日志文件:
- 包含经常变化的数据:
2.4 文件系统的特殊目录
/tmp
:- 临时文件目录,系统定期清理。
- 例如:浏览器的临时文件、系统升级时的缓存文件。
/run
:- 存储运行时数据,通常是进程启动后产生的临时文件。
/mnt
和/media
:- 手动挂载设备的目录
/mnt
。 - 自动挂载的可移动设备(如 USB)的目录
/media
。
- 手动挂载设备的目录
3. 绝对路径和相对路径
- 绝对路径 绝对路径是从根目录
/
开始,指向文件或目录的完整路径。 - 相对路径 相对路径是相对于当前工作目录的位置,指向文件或目录的路径。
- 简单对比
类型 | 写法 | 访问范围 | 示例 |
---|---|---|---|
绝对路径 | 从 / 开始写完整路径 | 全局适用 | /var/log/syslog |
相对路径 | 从当前目录开始写路径 | 依赖当前目录 | ../docs/readme.txt |
- 小技巧:
- 用
pwd
查看当前目录,确认路径写法是否正确。 - 绝对路径更精确,适合脚本;相对路径更灵活,适合临时操作。
- 用
4. 磁盘管理
4.1 跨平台文件系统格式
文件系统格式 | 简介 | 优势 | 使用场景 |
---|---|---|---|
FAT32 | 微软开发的旧格式 | 跨平台兼容性好 | 小型存储设备(如 U 盘) |
exFAT | FAT32 的改进版 | 支持大于 4GB 的文件,兼容性广 | 移动存储设备(如 SD 卡) |
NTFS | 微软开发的现代文件系统 | 支持大文件,权限管理支持好 | Windows 系统的共享分区 |
4.2 设备文件
Linux下,一切皆文件。相应的,磁盘设备也是文件。以下是对 Linux 常见设备文件命名规则的整理:
设备类型 | 设备文件路径格式 | 说明 |
---|---|---|
SATA/USB 硬盘 | /dev/sdX | 表示磁盘设备,X 为磁盘编号(a 表示第一块,b 表示第二块,以此类推)。 |
分区 | /dev/sdXN | N 表示分区编号,例如 /dev/sda1 表示第一块磁盘的第一个分区。 |
NVMe 硬盘 | /dev/nvmeXnY | X 表示 NVMe 磁盘编号,nY 表示逻辑设备编号(通常为 n1 )。 |
NVMe 分区 | /dev/nvmeXpY | pY 表示分区编号,例如 /dev/nvme0n1p1 表示第一个 NVMe 磁盘的第一个分区。 |
循环设备 | /dev/loopX | 表示虚拟磁盘设备,X 为编号,常用于挂载 ISO 文件。 |
RAID 设备 | /dev/mdX | 通过软件 RAID 创建的设备,X 为 RAID 设备编号。 |
LVM 设备 | /dev/mapper/卷组-逻辑卷 | 使用 LVM 创建的逻辑卷,路径包括卷组名和逻辑卷名。 |
LVM 简化路径 | /dev/卷组名/逻辑卷名 | LVM 的简化路径,例如 /dev/vg0/lv0 。 |
光驱设备 | /dev/srX | 表示光驱设备,X 为编号(sr0 通常为第一光驱)。 |
U 盘设备 | /dev/sdX | 按硬盘的方式识别,路径与 SATA/USB 磁盘一致。 |
示例说明:
- SATA 磁盘:第一块 SATA 磁盘的第二个分区路径为
/dev/sda2
。 - NVMe 磁盘:第一个 NVMe 磁盘的第三个分区路径为
/dev/nvme0n1p3
。 - ISO 文件:挂载 ISO 文件通常通过循环设备
/dev/loop0
。
4.3 df
与 du
用于查看磁盘空间使用情况。
基本语法: df
查看文件系统的磁盘使用情况:
df [选项]
du
查看文件或目录的磁盘使用情况:
du [选项] [文件或目录]
常用选项:
选项 | 作用 |
---|---|
-h | 以用户可读的格式显示(MB/GB) |
-T | 显示文件系统类型(df ) |
-s | 显示总计大小(du ) |
常用用法:
命令 | 作用 |
---|---|
df -h | 查看磁盘使用情况(人类可读格式) |
du -sh /home | 查看 /home 目录的总大小 |
4.4 磁盘的挂载、卸载与格式化
以下是 Linux 系统中磁盘挂载、卸载与格式化的详细说明,包括基本命令、常用选项和小技巧。
4.4.1 磁盘挂载
- 挂载磁盘的基本语法
sudo mount [选项] 设备文件 挂载点
常用选项
选项 | 作用 |
---|---|
-t | 指定文件系统类型(如 ext4 、vfat )。 |
-o | 指定挂载参数(如 ro 只读,rw 读写)。 |
常用用法
操作 | 命令示例 |
---|---|
挂载磁盘 /dev/sda1 到 /mnt | sudo mount /dev/sda1 /mnt |
指定文件系统类型挂载 NTFS 磁盘 | sudo mount -t ntfs /dev/sda1 /mnt |
挂载 ISO 文件到 /mnt | sudo mount -o loop 文件名.iso /mnt |
以只读模式挂载 | sudo mount -o ro /dev/sda1 /mnt |
- 自动挂载磁盘
编辑 /etc/fstab
文件,使磁盘在启动时自动挂载。
步骤:
- 查找磁盘 UUID:
blkid
- 编辑
/etc/fstab
,添加如下条目:
UUID=磁盘UUID 挂载点 文件系统类型 默认参数 0 2
示例:
UUID=1234-5678 /mnt ext4 defaults 0 2
4.4.2 磁盘卸载
- 卸载磁盘的基本语法
sudo umount [选项] 挂载点或设备文件
常用用法
操作 | 命令示例 |
---|---|
卸载挂载点 /mnt | sudo umount /mnt |
卸载设备 /dev/sda1 | sudo umount /dev/sda1 |
注意:
- 磁盘正在被使用时无法卸载,需先停止相关进程:
lsof +D 挂载点 kill PID # 停止占用的进程
4.4.3 磁盘格式化
- 查看磁盘信息
在格式化前,需确定磁盘设备路径:
lsblk
fdisk -l
- 格式化磁盘的基本语法
sudo mkfs.文件系统类型 设备文件
- 分区格式化示例
格式化为 ext4
文件系统:
sudo mkfs.ext4 /dev/sda1
格式化为 exFAT
文件系统:
sudo mkfs.exfat /dev/sda1
格式化为 FAT32
文件系统:
sudo mkfs.vfat -F 32 /dev/sda1
4.4.4 小技巧
- 修复文件系统
如果文件系统有问题,可用 fsck
修复:
sudo fsck /dev/sdX
- 清空分区表
使用 wipefs
清除设备上的文件系统签名:
sudo wipefs -a /dev/sdX
- 快速挂载最近插入的设备
使用 dmesg
查看设备插入日志:
dmesg | tail
5. 压缩和解压缩
在 Linux 系统中,压缩和解压缩文件是常见的操作,主要使用不同的压缩工具和命令完成。以下是详细内容,包括常见工具的基本用法和技巧:
5.1 压缩和解压缩工具概览
工具/格式 | 功能 | 文件后缀 | 特点 |
---|---|---|---|
gzip/gunzip | 压缩和解压缩单个文件 | .gz | 速度快,占用内存少,常用于日志压缩。 |
bzip2/bunzip2 | 压缩和解压缩单个文件 | .bz2 | 压缩率高,但速度较慢。 |
xz/unxz | 高效压缩和解压缩 | .xz | 高压缩率,适合处理大文件。 |
tar | 归档和解归档工具 | .tar | 用于打包多个文件,结合其他工具使用。 |
zip/unzip | 压缩和解压缩 | .zip | 常见跨平台压缩格式,支持多文件。 |
7z/p7zip | 高压缩率工具 | .7z | 强大的压缩工具,支持多种格式。 |
5.2 常用压缩和解压缩命令
5.2.1 gzip/gunzip
基本语法
- 压缩:
gzip [选项] 文件
- 解压缩:
gunzip [选项] 文件.gz
常用选项
选项 | 说明 |
---|---|
-k | 保留原文件 |
-v | 显示压缩/解压缩详情 |
示例
# 压缩文件
gzip example.txt # 生成 example.txt.gz
gzip -k example.txt # 保留原文件,生成 example.txt.gz
# 解压缩文件
gunzip example.txt.gz # 解压 example.txt.gz
gunzip -k example.txt.gz # 解压并保留压缩文件
5.2.2 bzip2/bunzip2
基本语法
- 压缩:
bzip2 [选项] 文件
- 解压缩:
bunzip2 [选项] 文件.bz2
示例
# 压缩文件
bzip2 example.txt # 生成 example.txt.bz2
# 解压缩文件
bunzip2 example.txt.bz2 # 解压 example.txt.bz2
5.2.3 xz/unxz
基本语法
- 压缩:
xz [选项] 文件
- 解压缩:
unxz [选项] 文件.xz
示例
# 压缩文件
xz example.txt # 生成 example.txt.xz
# 解压缩文件
unxz example.txt.xz # 解压 example.txt.xz
5.2.4 tar(归档工具)
基本语法
- 创建归档:
tar -cvf 归档文件名 文件/目录
- 解归档:
tar -xvf 归档文件名
- 与压缩结合:
tar -czvf 归档文件名.tar.gz 文件/目录
常用选项
选项 | 说明 |
---|---|
-c | 创建归档 |
-x | 解归档 |
-z | 使用 gzip 压缩 |
-j | 使用 bzip2 压缩 |
-v | 显示归档/解归档详细信息 |
-f | 指定归档文件名 |
示例
# 创建 tar.gz 压缩包
tar -czvf archive.tar.gz example/
# 解压 tar.gz 压缩包
tar -xzvf archive.tar.gz
# 创建 tar.bz2 压缩包
tar -cjvf archive.tar.bz2 example/
# 解压 tar.bz2 压缩包
tar -xjvf archive.tar.bz2
5.2.5 zip/unzip
基本语法
- 压缩:
zip [选项] 压缩文件名 文件/目录
- 解压缩:
unzip [选项] 压缩文件名.zip
常用选项
选项 | 说明 |
---|---|
-r | 递归压缩目录 |
-x | 指定排除文件 |
-d | 指定解压目录 |
示例
# 压缩文件或目录
zip archive.zip example.txt
zip -r archive.zip example/ # 压缩目录
# 解压缩文件
unzip archive.zip
unzip -d /tmp archive.zip # 解压到指定目录
5.2.6 7z
基本语法
- 压缩:
7z a 压缩文件名 文件/目录
- 解压缩:
7z x 压缩文件名
示例
# 压缩文件或目录
7z a archive.7z example/
# 解压缩文件
7z x archive.7z
6. 文件权限管理
Linux 文件权限分为 三类用户 和 三种权限:
- 三类用户
- u:文件拥有者(user)。
- g:同组用户(group)。
- o:其他用户(others)。
- 三种权限
- r:读(read),值为 4。
- w:写(write),值为 2。
- x:执行(execute),值为 1。
权限的表示形式:
- 使用字母表示:
rwxr-xr--
- 使用数字表示:
754
(文件拥有者有rwx
权限,组用户有r-x
权限,其他用户有r--
权限)。
6.1 查看文件权限
基本语法
ls -l [文件名/目录名]
示例
ls -l example.txt
输出示例:
-rw-r--r-- 1 user group 1234 Dec 19 12:00 example.txt
- 第一列:
-rw-r--r--
表示权限。 - 第一字符:文件类型(
-
表示文件,d
表示目录)。 - 后续字符:文件的权限。
6.2 修改文件权限(chmod)
基本语法
chmod [选项] 权限 文件/目录
修改权限的方法
方法 | 描述 |
---|---|
数字法 | 直接使用三位数字设置权限,如 chmod 754 。 |
符号法 | 使用 u 、g 、o 配合 + 、- 、= 调整权限。 |
常用选项
选项 | 说明 |
---|---|
-R | 递归修改目录及其所有子文件权限 |
示例
# 数字法修改权限
chmod 754 example.txt # 设置为 rwxr-xr--
# 符号法修改权限
chmod u+x example.txt # 给文件拥有者添加执行权限
chmod g-w example.txt # 移除组用户的写权限
chmod o=r example.txt # 设置其他用户为只读
# 递归修改目录权限
chmod -R 755 /example_dir
6.3 修改文件所属用户/组(chown)
基本语法
chown [选项] 用户:组 文件/目录
常用选项
选项 | 说明 |
---|---|
-R | 递归修改目录及其所有子文件用户 |
示例
# 修改文件拥有者
chown user example.txt
# 修改文件的用户和组
chown user:group example.txt
# 递归修改目录所有权
chown -R user:group /example_dir
6.4 修改文件组(chgrp)
基本语法
chgrp [选项] 组 文件/目录
示例
chgrp group example.txt # 修改文件组为 group
6.5 设置特殊权限
基本语法
chmod [选项] 权限 文件/目录
特殊权限说明
权限 | 含义 | 设置方法 |
---|---|---|
SUID | 可执行文件以文件拥有者权限运行(适用于程序文件)。 | chmod u+s |
SGID | 可执行文件以文件所属组权限运行;目录中新建文件继承组权限。 | chmod g+s |
Sticky | 防止用户删除其他用户在同一目录下的文件(常用于 /tmp )。 | chmod o+t |
示例
chmod u+s program.sh # 设置 SUID
chmod g+s /shared_dir # 设置 SGID
chmod o+t /shared_dir # 设置 Sticky 位
7. 链接文件
连接文件主要通过两种方式实现:硬链接(Hard Link)和软链接(Symbolic Link,符号链接)。以下是详细介绍及命令用法:
7.1 硬链接与软链接的区别
特性 | 硬链接 | 软链接 |
---|---|---|
指向目标 | 指向文件数据本身 | 指向文件的路径 |
是否独立 | 是,原文件删除后硬链接依然可用 | 否,原文件删除后软链接失效 |
支持的对象 | 仅限于同一文件系统内的文件 | 文件和目录均可 |
命令显示 | ls -l 中硬链接计数增加 | ls -l 中以箭头指示链接目标 |
7.2 硬链接
基本语法
ln [选项] 源文件 硬链接文件
常用选项
选项 | 说明 |
---|---|
-v | 显示详细信息 |
-f | 强制覆盖已存在的链接文件 |
示例
# 创建硬链接
ln example.txt example_hard
# 查看链接数
ls -l example.txt example_hard
# 输出类似:
# -rw-r--r-- 2 user group 1234 Dec 19 12:00 example.txt
# -rw-r--r-- 2 user group 1234 Dec 19 12:00 example_hard
注意:
- 删除原文件
example.txt
后,example_hard
文件依然可用。 - 硬链接无法跨文件系统或对目录操作。
7.3 软链接(符号链接)
基本语法
ln -s [选项] 源文件/目录 软链接文件
常用选项
选项 | 说明 |
---|---|
-v | 显示详细信息 |
-f | 强制覆盖已存在的链接文件 |
-n | 如果目标是符号链接,则不跟随 |
示例
# 创建文件的软链接
ln -s example.txt example_symlink
# 创建目录的软链接
ln -s /path/to/directory symlink_dir
# 查看软链接
ls -l
# 输出类似:
# lrwxrwxrwx 1 user group 11 Dec 19 12:00 example_symlink -> example.txt
注意:
- 删除原文件
example.txt
后,example_symlink
无法使用。 - 软链接可以跨文件系统使用。
8. Vim编辑器
VIM 是 Vi 编辑器的增强版,是一个强大的文本编辑器,支持语法高亮、代码折叠、多文件编辑等功能。(话是这么说,但是学习成本有点高了)
启动方式
vim [选项] 文件名
8.1 VIM 的模式
VIM 有以下主要工作模式,通过Esc
键可退出当前的模式
模式 | 描述 | 进入方式 |
---|---|---|
普通模式 | 默认模式,用于浏览、复制、删除等操作 | 启动后进入 |
插入模式 | 编辑文本内容 | 按 i 或 a 进入 |
命令模式 | 执行保存、退出等命令 | 按 : 进入 |
可视模式 | 高亮选择文本 | 按 v 进入 |
8.2 基本操作
8.2.1 启动与退出
操作 | 命令 | 描述 |
---|---|---|
启动 VIM | vim filename | 编辑或新建文件 |
退出 | :q | 退出(文件无修改) |
强制退出 | :q! | 不保存退出 |
保存并退出 | :wq 或 ZZ | 保存文件并退出 |
仅保存 | :w | 保存文件 |
8.2.2 插入与删除
进入插入模式
按键 | 描述 |
---|---|
i | 在光标当前位置前插入 |
a | 在光标当前位置后插入 |
o | 在当前行下方新建一行并插入 |
I | 在当前行首插入 |
A | 在当前行尾插入 |
删除文本
按键 | 描述 |
---|---|
x | 删除光标处的字符 |
dd | 删除当前行 |
dG | 删除从光标到文件末尾的所有内容 |
d$ | 删除光标到当前行末尾的内容 |
d^ | 删除光标到当前行开头的内容 |
8.2.3 复制与粘贴
按键 | 描述 |
---|---|
yy | 复制当前行 |
yG | 复制光标到文件末尾的所有内容 |
y$ | 复制光标到当前行末尾的内容 |
p | 在光标后粘贴内容 |
P | 在光标前粘贴内容 |
8.2.4 查找与替换
查找
命令 | 描述 |
---|---|
/keyword | 从光标处向下搜索 keyword |
?keyword | 从光标处向上搜索 keyword |
n | 跳转到下一个匹配项 |
N | 跳转到上一个匹配项 |
替换
命令 | 描述 |
---|---|
:s/old/new/ | 替换当前行第一个 old 为 new |
:s/old/new/g | 替换当前行所有 old 为 new |
:%s/old/new/g | 替换整个文件所有 old 为 new |
:%s/old/new/gc | 替换前提示用户确认 |