1、sudo
-
作用 :
允许普通用户以超级用户(root)或其他用户的权限 执行命令。
在 Ubuntu 等现代 Linux 发行版中,出于安全考虑,默认禁用 root 登录,而是通过
sudo临时提权。 -
英文全称 :
sudo= "superuser do" 或更准确地说是 "substitute user and do" 。它的本意是"以另一个用户的身份执行(命令)",默认是 root 用户。
-
示例:
bashsudo apt update # 以 root 权限运行 apt update -
补充 :
第一次使用
sudo时通常需要输入当前用户的密码(不是 root 密码),验证通过后短时间内再次使用无需重复输入。
2、apt
-
作用 :
是 Advanced Package Tool 的命令行工具,用于在 Debian/Ubuntu 系统中管理软件包,包括:
- 安装(install)
- 卸载(remove / purge)
- 更新软件列表(update)
- 升级已安装软件(upgrade)
- 搜索软件包(search)等
-
英文全称 :
apt= Advanced Package Tool(注意:
apt本身是一个高层命令,底层实际调用的是dpkg、apt-get、apt-cache等工具) -
设计目的 :
提供一个更简洁、用户友好 的包管理接口(相比老式的
apt-get和apt-cache)。 -
常见命令:
bashsudo apt install firefox # 安装软件 sudo apt remove firefox # 卸载软件(保留配置) sudo apt purge firefox # 彻底卸载(含配置) sudo apt update # 更新软件源索引 sudo apt upgrade # 升级已安装的软件
3、sudo apt update
- 作用 :从配置的软件源(repositories)下载最新的软件包索引信息。
- 说明 :
- 它不会安装或升级任何软件,只是同步本地的软件包列表与远程仓库的最新状态。
- 这样系统才知道有哪些软件有新版本可用。
- 类比:就像你去书店前先查一下"最新书目清单",但还没买书。
sudo apt update→ 实际调用apt-get update,更新本地缓存(供apt-cache查询)apt-cache search nginx→ 查找 nginx 相关包sudo apt install nginx→ 内部调用apt-get install,自动下载依赖并用dpkg安装
4、sudo apt upgrade
-
作用 :升级所有已安装的软件包到最新版本(基于上一步获取的索引)。
-
它只升级当前系统中已经安装的软件包;
-
而且仅在
apt update获取到的新索引中发现这些软件有更新版本时,才会进行升级; -
不会安装新软件 ,也不会删除已有软件(除非极特殊情况,但默认
upgrade会避免删除); -
行为逻辑非常类似于手机应用商店(如 iOS App Store 或 Android Play 商店):
- 应用商店先检查服务器上有没有已安装 App 的新版本(相当于
apt update); - 如果有,就提示"可更新",点击"全部更新"就升级所有能升的 App(相当于
apt upgrade)。
- 应用商店先检查服务器上有没有已安装 App 的新版本(相当于
5、dpkg
bash
sudo dpkg -i google-chrome-stable_current_amd64.deb
为什么 Ubuntu 可以安装 .deb 文件?
因为 Ubuntu 是基于 Debian 的发行版 ,原生支持 .deb 包格式。系统内置了处理 .deb 文件的工具链:
- 底层工具:
dpkg(直接操作.deb文件) - 高层工具:
apt、apt-get(可自动下载并安装.deb及其依赖)
💡 就像 Android 原生支持
.apk,Windows 支持.exe一样,Ubuntu 原生支持.deb。
正确名称:.deb 文件
- 全称 :Debian software package
- 用途 :Debian 及其衍生发行版(如 Ubuntu、Linux Mint 等)使用的安装包格式 ,类似于 Windows 的
.exe或.msi,macOS 的.dmg。 - 结构 :本质上是一个 ar 归档文件 ,内部包含:
- 控制信息(包名、版本、依赖等)
- 安装脚本(pre-install, post-install 等)
- 实际要安装的文件(通常打包在 data.tar.xz 中)
6、gedit
bash
sudo gedit /etc/hosts
gedit 是 GNOME 桌面环境 下的默认图形化文本编辑器(类似于 Windows 的"记事本"或 macOS 的"文本编辑")。
- 全称/含义 :G NOME Editor
- 用途:一个简单、易用的 GUI(图形界面)文本编辑器,支持语法高亮、多标签页、插件扩展等。
- 适用系统 :主要在使用 GNOME 桌面的 Linux 发行版中预装,比如:
- Ubuntu(默认桌面是 GNOME)
- Fedora Workstation
- Debian GNOME 版 等
7、nohup
bash
nohup your_command &
-
场景:你让朋友帮你烧一壶水
-
情况 1:你站在厨房盯着他(不加
&)你不能离开,终端一直卡在这个位置。 -
情况2:加了& 后,你可以离开。
加 & 能让程序在后台运行,是因为 Shell 启动该进程后不会等待它结束,而是立即返回命令行;同时将其放入后台进程组,不分配终端控制权------这就是"后台运行"的技术实现。
8、source
source 的作用是:让脚本里的设置(变量、路径、函数等)在当前终端"永久生效",而不是跑完就消失。
- 场景:你写了一个开发环境配置脚本
my_env.sh
内容如下(你可以自己创建这个文件):
bash
# 文件名: my_env.sh
# 1. 设置一个自定义变量
export MY_PROJECT="Awesome Robot"
# 2. 把某个目录加入 PATH(比如你的工具脚本目录)
export PATH="$PATH:$HOME/my_tools"
# 3. 定义一个函数
say_hello() {
echo "Hello! You're working on $MY_PROJECT"
}
# 4. 设置一个别名(虽然通常放 .bashrc,但这里演示)
alias ll='ls -lh'
-
情况一:不用
source,直接运行脚本./my_env.sh
bash
echo $MY_PROJECT # 输出:(空!)
echo $PATH # 没有包含 $HOME/my_tools
say_hello # 报错:command not found
ll # 可能无效(除非之前已定义)
❌ 为什么?
因为 ./my_env.sh 在子 shell 中运行,所有修改只在那个"临时房间"里有效。脚本一结束,房间就销毁了,主终端什么都没变。
- 情况二:用
source执行脚本
bash
source my_env.sh
# 或者
. my_env.sh
bash
echo $MY_PROJECT
# 输出:Awesome Robot ✅
echo $PATH | grep my_tools
# 能看到 /home/yourname/my_tools 在 PATH 里 ✅
say_hello
# 输出:Hello! You're working on Awesome Robot ✅
ll
# 现在等价于 ls -lh ✅
🎉 全部生效了!
因为 source 是在你当前的终端环境里逐行执行脚本,就像你亲手敲了那些命令一样。
再进一步:验证"持久性"
- 如果你在
source之后打开新终端,这些设置又没了(因为每个终端是独立的 shell 会话)。 - 如果你想永久生效 ,可以把
source ~/my_env.sh加到~/.bashrc里:
bash
echo "source ~/my_env.sh" >> ~/.bashrc
这样以后每个新终端都会自动加载它。
- 实际应用场景举例
| 场景 | 脚本作用 | 为什么必须用 source |
|---|---|---|
| Python 虚拟环境 | venv/bin/activate |
修改 PATH 和提示符,让你用的是虚拟环境的 python |
| ROS 2 工作空间 | install/setup.sh |
让 ros2 run 能找到你的包 |
| AWS CLI 配置 | aws configure export-credentials(某些方式) |
临时设置 AWS_ACCESS_KEY_ID 等环境变量 |
| 自定义开发环境 | dev_setup.sh |
统一团队的环境变量、工具路径、快捷函数 |
小贴士:如何知道一个脚本是否该用 source?
看它的目的:
- 如果脚本主要是
export、alias、定义函数、改PATH→ 必须用source - 如果脚本是 执行一个任务(比如备份文件、下载数据)→ 直接运行即可