An open API service indexing awesome lists of open source software.

https://github.com/jarocheng0123/ubuntu

Ubuntu 实用操作的速查手册集合
https://github.com/jarocheng0123/ubuntu

ubuntu

Last synced: 5 months ago
JSON representation

Ubuntu 实用操作的速查手册集合

Awesome Lists containing this project

README

          

## Ubuntu 实用操作速查手册

> 普通用户在终端执行过的所有命令历史记录在 `/home/用户名/.bash_history`

> root用户在终端执行过的所有命令历史记录在 `/root/.bash_history`

### 一、系统启动与界面切换
- **进入命令行界面**:`Ctrl + Alt + F1`(F1-F6为命令行)
- **返回图形化界面**:`Ctrl + Alt + F7`(F7-F9为图形界面)
- **重启图形界面**:`sudo systemctl restart gdm3`(GNOME桌面)/ `sudo systemctl restart lightdm`(LightDM桌面)

### 二、终端常用快捷键
| 操作 | 快捷键 | 说明 |
|---------------|-----------------------|-----------------------------|
| 打开终端 | `Ctrl + Alt + T` | 全局快速启动终端 |
| 新建终端 | `Ctrl + Shift + N` | 在当前终端窗口新建独立终端 |
| 关闭终端 | `Ctrl + D`(空行)/ `Ctrl + Shift + W`(标签页) | 退出当前终端或标签页 |
| 复制 | `Ctrl + Shift + C` | 复制选中内容(需终端支持) |
| 粘贴 | `Ctrl + Shift + V` | 粘贴剪贴板内容 |
| 切换标签页 | `Ctrl + Shift + ↑/↓` | 上下切换已打开的标签页 |
| 新建标签页 | `Ctrl + Shift + T` | 在当前窗口新建标签页 |
| 放大终端 | `Ctrl + Shift + =` | 放大字体/界面 |
| 缩小终端 | `Ctrl + -` | 缩小字体/界面 |
| 清除屏幕 | `Ctrl + L` | 清空当前屏幕内容(保留历史) |
| 终止任务 | `Ctrl + C` | 强制终止当前运行的程序 |
| 光标到行首 | `Ctrl + A` | 快速跳转至命令行开头 |
| 光标到行尾 | `Ctrl + E` | 快速跳转至命令行末尾 |
| 命令补全 | `Tab` | 自动补全文件名/命令(按两次显示所有选项)|

### 三、文件管理器(Nautilus)快捷操作
#### **基础导航与显示**
- **`Ctrl + H`**:显示/隐藏隐藏文件(以 `.` 开头的文件/文件夹,如 `.config`)。
- **`Ctrl + L`**:快速定位到地址栏(输入路径后回车可跳转)。
- **`F11`**:切换窗口全屏模式。
- **`Ctrl + 滚轮` / `Ctrl + +/-`**:放大/缩小文件图标显示比例。
- **`Alt + ←`** / **退格键**:返回到历史访问目录。
- **`Alt + →`**:前进到历史访问目录。
- **`Home 键`**:直接跳转到用户主目录(`/home/用户名`)。
- **`Ctrl + 鼠标中键点击文件夹`**:在新标签页中打开(需鼠标支持中键功能)。

#### **文件/文件夹操作**
- **`F2`**:快速重命名选中的文件/文件夹(点击名称后短按 F2 更高效)。
- **`Ctrl + C`**:复制选中项;**`Ctrl + X`**:剪切选中项;**`Ctrl + V`**:粘贴。
- **`Delete`**:将文件/文件夹移到回收站;**`Shift + Delete`**:永久删除(不经过回收站,谨慎使用)。
- **`Ctrl + Z`**:撤销上一步操作(如误删、误移动)。
- **`Ctrl + A`**:全选当前目录文件;**`Ctrl + 点击`**:多选不连续文件;**`Shift + 点击`**:多选连续文件。

#### **窗口与标签页**
- **`Ctrl + N`**:新建独立文件管理器窗口;**`Ctrl + T`**:在当前窗口新建标签页。
- **`Ctrl + W`**:关闭当前标签页(仅1个标签页时关闭窗口)。
- **`F3`**:分屏查看(左右分栏,方便拖拽文件);**`F4`**:在当前目录打开终端(路径自动定位)。

#### **其他实用操作**
- **`Alt + Enter`**:查看选中文件/文件夹属性(大小、权限、修改时间等)。
- **`Ctrl + F`**:打开搜索框(搜索当前目录及子目录文件)。
- **`Win 键(Super) + E`**:全局快速打开文件管理器。
- **拖拽操作**:按住 `Ctrl` 拖拽为复制,按住 `Shift` 拖拽为移动(默认拖拽为移动)。

### 四、nano编辑器高效操作
| 操作 | 快捷键 | 说明 |
|---------------|-----------------------|-----------------------------|
| 标记文本 | `Alt + A` | 开始标记文本(配合方向键选择)|
| 删除标记文本 | `Ctrl + K` | 删除标记区域(可通过`Ctrl + U`恢复)|
| 粘贴删除内容 | `Ctrl + U` | 粘贴最近一次被删除的内容 |
| 保存文件 | `Ctrl + O` | 保存修改(需输入文件名后回车)|
| 退出编辑器 | `Ctrl + X` | 退出(提示保存未修改内容) |
| 查找文本 | `Ctrl + W` | 输入关键词搜索(`Ctrl + W`继续下一个)|
| 替换文本 | `Alt + R` | 输入“查找内容”和“替换内容”完成替换|

### 五、系统信息查询
| 信息类型 | 命令 | 说明 |
|-----------------|-----------------------------|-----------------------------|
| 内核版本 | `uname -a` | 显示内核版本、架构、编译时间等|
| 系统位数 | `getconf LONG_BIT` | 输出32或64(系统位数) |
| 系统版本 | `lsb_release -a` | 显示Ubuntu发行版、描述等信息 |
| Ubuntu版本 | `cat /etc/lsb-release` | 直接查看LSB版本信息(含CODENAME)|
| 系统版本名称 | `cat /etc/os-release` | 包含PRETTY_NAME(如"Ubuntu 22.04.3 LTS")|
| CPU信息 | `cat /proc/cpuinfo` | 查看CPU型号、核心数、线程数等|
| 内存信息 | `cat /proc/meminfo` | 显示总内存、可用内存、交换空间等|
| 磁盘空间 | `df -h` | 按可读格式显示磁盘分区使用情况(-h=Human-readable)|
| 系统启动时间 | `uptime` | 显示系统已运行时长、负载等 |

### 六、用户与权限管理
| 操作 | 命令 | 说明 |
|---------------|-----------------------------|-----------------------------|
| 完整root环境 | `sudo -i` | 切换为root用户(环境变量完全继承root)|
| 简化root环境 | `sudo su` | 切换为root用户(保留原用户环境变量)|
| 保留用户环境 | `sudo -s` | 在当前用户环境下以root权限执行命令|
| 创建用户 | `sudo useradd -m 用户名` | 创建用户并生成家目录(-m=make home)|
| 设置用户密码 | `sudo passwd 用户名` | 为用户设置登录密码 |
| 删除用户 | `sudo userdel -r 用户名` | 删除用户并删除家目录(-r=remove home)|
| 添加用户到sudo组| `sudo usermod -aG sudo 用户名`| 授予用户sudo权限(-a=追加,-G=组名)|
| 查看用户所属组 | `groups` | 显示当前用户所在的所有组 |

### 解除密码限制与密钥环配置
```bash
# 1. 切换为root用户
sudo su

# 2. 编辑密码策略配置文件
nano /etc/pam.d/common-password

# 3. 修改密码验证规则
# 在文件中找到以下行:
# password requisite pam_pwquality.so retry=3
# 替换为(添加minlen=1参数,允许1位密码):
# password requisite pam_pwquality.so retry=3 minlen=1

# 4. 保存并退出编辑器
# 按 Ctrl + O 保存文件,按 Enter 确认
# 按 Ctrl + X 退出nano编辑器

# 5. 设置用户密码(替换<用户名>和<新密码>)
# 示例:echo "ur:1" | chpasswd
echo "<用户名>:<新密码>" | chpasswd

# 6. 处理密钥环弹窗
# 启动密码管理器
seahorse
# 在图形界面中:
# 1. 左侧导航栏找到"登录"密钥环
# 2. 右键点击 → 选择"更改密码"
# 3. 不输入任何内容,直接点击"继续"并确认(设置为空密码)
```

### 七、基础文件操作
| 操作 | 命令 | 说明 |
|---------------|-----------------------------|-----------------------------|
| 重启系统 | `sudo reboot` | 立即重启系统 |
| 查看所有文件 | `ls -a` | 显示隐藏文件(以`.`开头的文件)|
| 当前路径 | `pwd` | 输出当前所在目录的绝对路径 |
| 切换目录 | `cd /目标路径` | 示例:`cd /home/user/Documents`|
| 返回上级目录 | `cd ..` | 注意空格(`cd..`为错误写法) |
| 返回主目录 | `cd ~` | 快速跳转至用户家目录(如`/home/user`)|
| 创建文件夹 | `mkdir 目录名` | 示例:`mkdir my_folder` |
| 创建多级文件夹| `mkdir -p 目录名/子目录` | `-p`自动创建缺失的父目录 |
| 删除空文件夹 | `rmdir 目录名` | 仅删除空目录 |
| 删除非空文件夹| `rm -r 目录名` | `-r`递归删除(谨慎使用!) |
| 复制文件/目录 | `cp 源文件 目标路径` | 示例:`cp file.txt ~/backup/`(复制文件)
`cp -r folder/ ~/backup/`(复制目录,-r=递归)|
| 移动/重命名文件| `mv 源文件 目标路径/新名称` | 示例:`mv old.txt new.txt`(重命名)
`mv file.txt ~/backup/`(移动文件)|

### 八、软件管理核心命令
**推荐使用 `apt` 替代 `apt-get`**
| 操作 | 命令 | 说明 |
|---------------|-----------------------------|-----------------------------|
| 系统升级 | `sudo apt dist-upgrade` | 升级系统核心组件(可能调整依赖)|
| 更新包列表 | `sudo apt update` | 同步软件源仓库的最新包信息 |
| 升级软件包 | `sudo apt upgrade` | 升级已安装的所有可更新软件包 |
| 安装软件 | `sudo apt install 软件名` | 示例:`sudo apt install nginx`|
| 升级指定软件 | `sudo apt upgrade 软件名` | 仅升级单个软件包 |
| 卸载软件 | `sudo apt remove 软件名` | 移除软件(保留配置文件) |
| 彻底卸载软件 | `sudo apt purge 软件名` | 移除软件及配置文件(谨慎使用)|
| 清理缓存 | `sudo apt clean` | 删除已下载的安装包缓存(节省磁盘)|
| 查看已安装软件| `sudo dpkg -l` | 列出所有通过dpkg安装的软件包 |
| 搜索软件包 | `apt search 关键词` | 示例:`apt search mysql`(查找含“mysql”的软件包)|

### 九、网络与远程管理
| 操作 | 命令 | 说明 |
|---------------|-----------------------------|-----------------------------|
| 查看IP地址 | `ip addr show` | 替代`ifconfig`(需安装`net-tools`)|
| 测试网络连通性| `ping 目标IP/域名` | 示例:`ping baidu.com`(默认发送4次)|
| 查看路由表 | `route -n` | 显示当前路由规则(-n=不解析域名)|
| 安装SSH服务端 | `sudo apt install openssh-server`| 启用远程SSH连接支持 |
| 远程连接 | `ssh 用户名@目标IP` | 示例:`ssh root@192.168.1.100`|
| 生成SSH密钥对 | `ssh-keygen -t rsa -b 4096` | 生成RSA类型密钥(-b=密钥长度)|
| 免密登录配置 | `ssh-copy-id 用户名@目标IP` | 将本地公钥复制到远程主机(需输入密码)|

### 十、服务与进程管理
| 操作 | 命令 | 说明 |
|---------------|-----------------------------|-----------------------------|
| 启动服务 | `sudo systemctl start 服务名` | 示例:`sudo systemctl start nginx`|
| 停止服务 | `sudo systemctl stop 服务名` | 示例:`sudo systemctl stop nginx`|
| 重启服务 | `sudo systemctl restart 服务名`| 示例:`sudo systemctl restart nginx`|
| 查看服务状态 | `sudo systemctl status 服务名` | 显示服务运行状态、日志片段等 |
| 启用开机自启 | `sudo systemctl enable 服务名` | 示例:`sudo systemctl enable nginx`|
| 禁用开机自启 | `sudo systemctl disable 服务名`| 示例:`sudo systemctl disable nginx`|
| 查看所有进程 | `ps aux` | 显示所有用户的进程(含CPU/内存占用)|
| 实时监控进程 | `htop` | 需先安装:`sudo apt install htop`(交互更友好)|
| 终止进程 | `kill -9 进程PID` | 强制终止进程(-9=强制信号) |

### 十一、文件压缩与磁盘管理
| 操作 | 命令 | 说明 |
|---------------|-----------------------------|-----------------------------|
| 压缩目录为tar.gz| `tar -czvf 压缩包名.tar.gz 目标目录` | `-c=创建,-z=gz压缩,-v=显示过程,-f=指定文件名`|
| 解压tar.gz文件| `tar -xzvf 压缩包名.tar.gz` | `-x=解压,-z=识别gz压缩` |
| 压缩为zip | `zip -r 压缩包名.zip 目标目录` | 需先安装:`sudo apt install zip`|
| 解压zip文件 | `unzip 压缩包名.zip -d 目标路径`| `-d=指定解压目录` |
| 查看目录大小 | `du -sh 目标路径` | `-s=汇总大小,-h=可读格式` |
| 挂载U盘 | `sudo mount /dev/sdb1 /mnt` | 假设U盘设备为`/dev/sdb1`(需先查看`fdisk -l`确认)|
| 查看磁盘分区 | `sudo fdisk -l` | 列出所有磁盘分区信息 |

### 十二、环境变量与脚本基础
| 操作 | 命令/示例 | 说明 |
|---------------|-----------------------------|-----------------------------|
| 临时设置环境变量| `export PATH=$PATH:/新路径` | 当前终端生效(重启后失效) |
| 永久设置环境变量| `echo 'export PATH=$PATH:/新路径' >> ~/.bashrc` | 用户级配置(需`source ~/.bashrc`生效)|
| 简单Shell脚本 | `nano hello.sh`
`#!/bin/bash`
`echo "当前时间:$(date)"`
`echo "当前用户:$(whoami)"` | 保存后执行:`chmod +x hello.sh && ./hello.sh`|

### 十三、系统常见问题处理
1. **TTF字体乱码**
临时解决:`export LANG=en_US.UTF-8`(仅当前终端生效)
永久解决:修改`~/.bashrc`添加`export LANG=zh_CN.UTF-8`,并重启终端。

2. **系统汉化(推荐方法)**
```bash
# 安装中文语言包
sudo apt install language-pack-zh-hans language-pack-gnome-zh-hans
# 配置系统语言
sudo update-locale LANG=zh_CN.UTF-8 LC_ALL=zh_CN.UTF-8
# 安装中文输入法(Fcitx拼音)
sudo apt install fcitx fcitx-pinyin fcitx-config-gtk
im-config -n fcitx # 设置默认输入法框架
# 配置环境变量(避免程序乱码)
echo 'export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx' >> ~/.profile
# 重启系统
```

3. **软件源替换**

```bash
# 备份原源文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 修改原源文件
sudo nano /etc/apt/sources.list
```

Ubuntu 每个版本有唯一代号(全小写),必须与源配置中的代号一致,否则会报错。常见版本对应:
| 系统版本 | 代号(Codename) | 发布年份 | 支持周期 |
|----------------|------------------|----------|----------------|
| Ubuntu 20.04 LTS | focal | 2020 | 长期支持至2030年 |
| Ubuntu 22.04 LTS | jammy | 2022 | 长期支持至2032年 |
| Ubuntu 24.04 LTS | noble | 2024 | 长期支持至2034年 |

```
# 清华大学 Ubuntu 22.04(jammy)源
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
```

```
# 中国科学技术大学 Ubuntu 22.04(jammy)源
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
```

```
# 阿里云 Ubuntu 24.04 (noble) 源
deb http://mirrors.aliyun.com/ubuntu/ noble main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ noble main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ noble-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ noble-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ noble-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ noble-backports main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ noble-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ noble-security main restricted universe multiverse
```

```
# 网易 Ubuntu 24.04 (noble) 源
deb http://mirrors.163.com/ubuntu/ noble main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ noble main restricted universe multiverse

deb http://mirrors.163.com/ubuntu/ noble-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ noble-updates main restricted universe multiverse

deb http://mirrors.163.com/ubuntu/ noble-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ noble-backports main restricted universe multiverse

deb http://mirrors.163.com/ubuntu/ noble-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ noble-security main restricted universe multiverse
```

```bash
# 更新源列表
sudo apt update
```

### 十四、简单的快捷方式创建

#### **核心参数(必选)**
1. **`[Desktop Entry]`**
文件开头的固定标识,声明为桌面条目。

2. **`Type=`**
条目类型,必须为以下值之一:
- `Application`(应用程序)
- `Link`(URL链接)
- `Directory`(目录)

#### **通用元数据参数**
3. **`Version=`**
规范版本号(如 `1.0`),可选但推荐。

4. **`Name=`**
应用程序显示名称(如 `Google Chrome`)。

5. **`GenericName=`**
通用名称(如 `Web Browser`),用于分类。

6. **`Comment=`**
简短描述(如 `快速启动Chrome浏览器`)。

7. **`Icon=`**
图标路径或名称(如 `/path/to/icon.png` 或 `firefox`)。

8. **`Hidden=`**
`true` 或 `false`,是否隐藏此条目(默认 `false`)。

9. **`NoDisplay=`**
`true` 或 `false`,是否不在菜单中显示(但仍可直接执行)。

#### **执行相关参数**
10. **`Exec=`**
执行命令(如 `/opt/google/chrome/chrome`),支持参数占位符:
- `%f`:单个文件路径
- `%F`:多个文件路径
- `%u`:单个URL
- `%U`:多个URL
- `%d`:文件所在目录
- `%D`:多个文件所在目录
- `%n`:文件名(不带路径)
- `%N`:多个文件名
- `%k`:快捷方式文件路径
- `%v`:终端窗口标题
- `%m`:鼠标位置

11. **`TryExec=`**
用于检查程序是否存在的命令(如 `which firefox`)。

12. **`Path=`**
执行命令前切换到的工作目录(如 `/home/user`)。

13. **`Terminal=`**
`true` 或 `false`,是否在终端中运行(默认 `false`)。

#### **分类与兼容性参数**
14. **`Categories=`**
应用分类,多个类别用分号分隔(如 `Network;WebBrowser;`)。
完整分类列表见 [Freedesktop 标准](https://specifications.freedesktop.org/menu-spec/latest/apa.html)。

15. **`MimeType=`**
关联的 MIME 类型(如 `text/plain;image/jpeg;`)。

16. **`Keywords=`**
用于搜索的关键词(如 `browser;web;internet`)。

17. **`OnlyShowIn=`**
仅在指定桌面环境显示(如 `GNOME;KDE;`)。

18. **`NotShowIn=`**
不在指定桌面环境显示。

#### **启动与显示控制参数**
19. **`StartupNotify=`**
`true` 或 `false`,是否启用启动通知(默认 `false`)。

20. **`StartupWMClass=`**
窗口管理器匹配的 WM_CLASS(用于关联启动的窗口)。

21. **`URL=`**
当 `Type=Link` 时,指定链接地址。

22. **`Actions=`**
定义额外动作(如右键菜单选项),格式为 `Action1;Action2;`。

#### 图标绝对路径
```bash
Icon=/usr/share/icons/ # 系统图标目录
Icon=/usr/share/pixmaps/ # 系统图标目录
Icon=/usr/share/pixmaps/evolution-data-server/category_gifts_16.png
```

#### 常用参数
```bash
Exec=/usr/bin/firefox # 启动Firefox
Exec=/opt/google/chrome/chrome # 启动Chrome

Exec=/usr/bin/firefox https://baidu.com # Firefox打开指定网页
Exec=/opt/google/chrome/chrome https://baidu.com # Chrome打开指定网页

Exec=firefox --private-window https://baidu.com # Firefox隐私窗口
Exec=chrome --incognito https://baidu.com # Chrome隐身模式

Exec=wget -O ~/Downloads/file.zip https://baidu.com/file.zip # 使用wget下载文件
Exec=curl -o ~/Downloads/app.deb https://baidu.com/app.deb # 使用curl下载文件

Exec=gedit /home/user/Documents/note.txt # 用文本编辑器打开文件
Exec=vlc /home/user/Videos/movie.mp4 # 用VLC播放视频

Exec=nautilus --select /home/user/Documents/report.pdf # GNOME桌面(Nautilus)打开文件管理器并选中文件

Exec=/home/user/scripts/backup.sh # 执行用户脚本
Exec=bash /home/user/install-dependencies.sh # 指定使用bash解释器

Exec=bash -c "cd /home/user/project && make && ./output" # 编译并运行程序
Exec=bash -c "mkdir ~/temp && cp file.txt ~/temp/" # 创建目录并复制文件
Exec=bash -c "python3 server.py & disown" # 后台运行Python服务器
Exec=bash -c "cd /home/user/game && ./start.sh" # 切换目录后执行

Exec=gnome-terminal -- /bin/bash -ic '【命令集合】; exec bash' # 启动 GNOME 终端并加载环境配置执行命令
```

#### 操作示例

```bash
# 进入桌面目录
cd ~/桌面
cd ~/Desktop
# 新建.desktop文件
nano 桌面快捷方式.desktop
```

```bash
[Desktop Entry]
Name=Google Chrome # 名称
Exec=/opt/google/chrome/chrome # 程序绝对路径(需确认实际路径)
Icon=/opt/google/chrome/product_logo_256.png # 图标绝对路径
Terminal=false # 是否使用终端
Type=Application # 类型
Categories=Network;WebBrowser; # 分类
```

```bash
# 保存并退出(Ctrl+O→Enter→Ctrl+X)
# 赋予执行权限
chmod +x ~/桌面/桌面快捷方式.desktop
chmod +x ~/Desktop/桌面快捷方式.desktop
```

### 十五、VMware 共享文件夹

```bash
#!/bin/bash

echo -e "\033[33m建立VMware共享文件夹快捷方式\033[0m"
echo -e "\033[36m==========================\033[0m"

sudo apt update
sudo apt install -y open-vm-tools open-vm-tools-desktop

# 创建目录
sudo mkdir -p /mnt/hgfs

# 启用并挂载
sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other

#当前用户主目录
USER_HOME="$(getent passwd "${SUDO_USER:-$(whoami)}" | awk -F: '{print $6}')"

#当前用户桌面
if [[ "$LANG" == zh_CN.UTF-8 || "$LANG" == zh_CN || "$LANG" == zh* ]]; then
USER_DESKTOP="${USER_HOME}/桌面"
else
USER_DESKTOP="${USER_HOME}/Desktop"
fi

# 桌面路径变量
SHORTCUT_FILE="$USER_DESKTOP/VMware.desktop"

# 创建 VMware.desktop 文件
cat << EOF > "$SHORTCUT_FILE"
[Desktop Entry]
Name=VMware
Exec=xdg-open /mnt/hgfs
Terminal=false
Type=Application
Icon=/usr/share/pixmaps/evolution-data-server/category_gifts_16.png
EOF

# 赋予执行权限
chmod +x "$SHORTCUT_FILE"

# 自启动VM共享文件夹
FSTAB_FILE="/etc/fstab"
if ! grep -q ".host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other,auto 0 0" "$FSTAB_FILE"; then
echo ".host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other,auto 0 0" | sudo tee -a "$FSTAB_FILE" > /dev/null
fi

echo -e "\033[36m======================\033[0m"
echo -e "\033[33mVMware共享文件执行完成!\033[0m"

```

### 十六、常用软件安装

#### [vmware-tools](https://packages-prod.broadcom.com/tools/frozen/linux/linux.iso)

```bash
tar -xzf VMwareTools-10.3.26-22085142.tar.gz
cd vmware-tools-distrib
sudo ./vmware-install.pl
```

```bash
sudo apt update # 更新软件包列表
sudo apt install -y open-vm-tools open-vm-tools-desktop # 安装 open-vm-tools 和 open-vm-tools-desktop 包
sudo apt upgrade # 升级已安装的软件包
```

#### [python](https://www.python.org/downloads/)

```bash
sudo apt update # 更新软件包列表
sudo apt install -y software-properties-common # 管理软件源的工具
sudo add-apt-repository -y ppa:deadsnakes/ppa # 20.04/22.04 添加 Python PPA
sudo apt update # 更新软件包列表
sudo apt install python3.12 -y # 安装 Python 3.12
python3.12 --version # 验证 Python 3.12 安装
sudo apt upgrade # 升级已安装的软件包
```

#### [VS Code](https://code.visualstudio.com/Download)

```bash
sudo dpkg -i code_1.105.0-1759933565_amd64.deb
```

```bash
sudo apt update # 更新软件包列表
sudo apt install -y software-properties-common apt-transport-https # 管理软件源的工具
```

```bash
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg # 下载gpg文件
sudo install -o root -g root -m 644 microsoft.gpg /usr/share/keyrings/ # VS Code GPG 签名密钥
sudo sh -c 'echo "deb [arch=amd64 signed-by=/usr/share/keyrings/microsoft.gpg] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list' # 添加 VS Code 源
```

```bash
sudo apt update # 更新软件包列表
sudo apt install code # 安装 VS Code
sudo apt upgrade # 升级已安装的软件包
```

```bash
seahorse # 处理密钥环弹窗
```

#### [PyCharm](https://www.jetbrains.com/zh-cn/pycharm/download/?section=linux)

```bash
sudo apt update # 更新软件包列表
sudo snap install pycharm-community --classic # 安装 PyCharm 社区版
sudo apt upgrade # 升级已安装的软件包
```

#### [Edge 浏览器](https://www.microsoft.com/zh-cn/edge/download?msockid=2bccb834f9b96a300c2fade5f8946b7e&form=MA13FJ)

```bash
sudo dpkg -i microsoft-edge-stable_136.0.3240.50-1_amd64.deb
sudo apt -f install -y # 修复安装
```

#### [Chrome 浏览器](https://www.google.com/chrome/)

```bash
sudo dpkg -i ./google-chrome-stable_current_amd64.deb
sudo apt -f install -y # 修复安装
```

```bash
sudo apt update # 更新软件包列表
sudo apt install wget -y # 安装下载工具wget
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb # 下载Chrome
sudo dpkg -i google-chrome-stable_current_amd64.deb # 安装Chrome
sudo apt -f install -y # 修复安装
sudo apt upgrade # 升级已安装的软件包
```

#### [Clash Verge Rev](https://github.com/clash-verge-rev/clash-verge-rev)

```bash
sudo apt install -y ./Clash.Verge_2.2.3_amd64.deb
```

### 十七、Miniconda与虚拟环境配置

#### 1. 安装Miniconda

```bash
# 1. 查看系统架构
uname -m
# 输出说明:x86_64→英特尔/AMD架构;aarch64→ARM架构(如RK3588/Jetson)

# 2. 下载对应架构的Miniconda
# x86_64架构(PC):
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

# aarch64架构(RK3588/Jetson):
# wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh

# 3. 赋予安装脚本执行权限
chmod +x Miniconda3-latest-Linux-*.sh

# 4. 运行安装脚本
./Miniconda3-latest-Linux-*.sh
```

- **安装选项指引**:
1. 按 `Enter` 阅读协议 → 输入 `yes` 同意协议;
2. 默认安装路径 ` /home/ur/miniconda3`(直接按 `Enter` 确认,不建议修改);
3. 最后输入 `yes` 初始化conda(关键!否则conda命令无法生效)。

#### 2. 激活 conda 环境并接受服务条款

```bash
# 1. 刷新环境变量(使conda命令生效,必执行)
source ~/.bashrc

# 2. 验证conda安装(需输出conda版本号,如conda 24.5.0)
conda --version

# 3. 接受conda官方频道条款(创建环境前必做,否则报错)
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r
```

#### 3. 创建并激活 Python 3.12 虚拟环境

```bash
# 1. 创建名为「py312」的虚拟环境
conda create -n py312 python=3.12 -y

# 2. 激活环境
conda activate py312
# 激活成功后,终端前缀会显示 「(py312)」
```

#### 4. 处理base环境自动激活及冲突

conda 默认自动激活`base`环境,在终端显`(base)`,配置存于 ~/.bashrc。

**潜在问题:**`base`优先占 PATH,可能导致系统 Python(如 ROS2 依赖)、工具链(如 cmake)被 conda 版本取代,引发冲突。

1.自动激活`base`:
```bash
conda config --set auto_activate_base true # 开启conda自动激活
conda config --set auto_activate_base false # 关闭conda自动激活
```

2.手动激活`base`:
- 激活`base`:`conda activate base`
- 激活环境:`conda activate py312`
- 退出`base`:`conda deactivate`