| 上一篇 | 下一篇 |
|---|---|
| shell 操作 → 1)说明 + 2)符号说明 |
目 录
- 3)基础命令
-
-
- cd(目录切换)
- ls(查看目录信息)
- pwd(显示当前目录的绝对路径)
- uname(查看系统信息)
- clear(清屏)
- sudo(临时切换用户执行一条命令)
- [su(切换用户,可被 sudo su 替代)](#su(切换用户,可被 sudo su 替代))
- touch(创建文件)
- cat(查看文件内容,也可创建/清空文件、追加内容等)
- cp(文件拷贝)
- find(查找文件)
- grep(查找内容)
- file(查看文件真实类型)
- rm(删除,删除文件或整个目录)
- mkdir(创建文件夹)
- mv(移动/重命名,文件或目录)
- ifconfig(显示/配置网络,已被弃用)
- [ip(显示/配置网络,代替 ifconfig)](#ip(显示/配置网络,代替 ifconfig))
- man(系统帮助命令)
- reboot(系统重启命令)
- poweroff(关机命令)
- sync(数据同步写入磁盘)
- du(查看文件或目录所占磁盘空间)
- [gedit( Linux 下的文本编辑器)](#gedit( Linux 下的文本编辑器))
- ps(查看当前时刻的系统进程)
- top(查看实时系统进程)
- echo(在终端或脚本中输出一行文本或变量内容)
-
3)基础命令
注意大小写!!
cd(目录切换)
根目录:整个 Ubuntu 系统的根目录,就和 winodws 的 "此电脑" 一样
主目录:当前用户的目录,是根目录下的二级子目录(
/home/username)
| 命令 | 作用说明 |
|---|---|
cd |
不论当前处于什么目录,直接切换到当前用户的主目录(如 /home/username 或 /root,进入后显示 ~$ ) |
cd ~ |
同上(~ 代表当前用户主目录) |
cd / |
不论当前处于什么目录,直接切换到根目录( / 代表根目录,进入后显示 /$ ) |
cd .. |
切换到上级目录(父目录) |
cd ../.. |
切换到上两级目录(祖父目录) |
cd - |
快速返回上一个工作目录(非常实用!) |
cd . |
保持在当前目录(无实际作用,但语法合法) |
cd ./subdir |
进入当前目录下的子目录 subdir |
cd /absolute/path |
使用绝对路径进入当前目录下的指定子目录 |
cd relative/path |
使用相对路径进入当前目录下的指定子目录 |
ls(查看目录信息)
相关的命令有很多,这里只列出常用的。注意空格......
口诀:
a看隐藏,l看详情,t按时间,R递归查,..上一级,subdir下一级,组合灵活用,路径随心达。
说明:
- 无论你在哪个子目录中,都可以通过
ls命令来查看上级甚至更高层级、下级甚至更下级目录的内容; - 若目录名含空格,需用引号或转义,例如:
ls "my folder"或ls my\ folder。
当前目录操作命令(表格中的前 7 个比较重要):
| 命令 | 作用 |
|---|---|
ls |
列出当前目录下的 非隐藏文件和文件夹(仅文件名) |
ls -a |
列出 所有文件和文件夹 ,包括以 . 开头的隐藏文件(如 .bashrc, .profile) |
ls -l |
以 长格式 列出 非隐藏文件和文件夹,显示权限、链接数、所有者、组、大小、修改时间、文件名等详细信息 |
ls -t |
按 修改时间从新到旧 列出非隐藏文件和文件夹(最新在前) |
ls -r |
反向排序 (常与 -t 组合为 ls -tr,按时间从旧到新) |
ls -A |
类似 -a,但是不列出 "."(当前目录)和 "..."(父目录) |
ls -R |
递归列出 当前目录及其所有子目录中的 非隐藏文件和文件夹 |
ls -h |
与 -l 配合使用(如 ls -lh),以 人类可读 方式显示文件大小(如 1K, 2M, 3G),但几乎和 ls 本身没什么差别 |
ls -S |
按 文件大小 从大到小排序列出 非隐藏文件和文件夹 |
ls -d |
仅列出目录本身,而不是其内容(常用于配合通配符或查看目录属性) |
可组合(组合时,只需键入一个 - ,后面连写选项,选项相对位置无所谓),例如:
ls -al或ls -la:列出所有文件(含隐藏),并以长格式显示ls -ltr:按时间从旧到新显示详细信息(常用于查看日志)ls -lah:列出所有文件,详细信息 + 可读大小ls -lR:递归显示所有子目录的详细信息
上级目录操作命令(任意层级,a/l等任意选项):
| 命令 | 作用 |
|---|---|
ls .. |
列出父目录下的 非隐藏文件和文件夹 |
ls -l .. |
查看父目录的详细信息 |
ls ../.. |
查看祖父目录的内容,可以任意层级 |
ls -a .. |
查看父目录中的所有文件(含隐藏) |
| ...... | ...... |
下级目录操作命令(任意层级,a/l等任意选项):
"下级目录"即当前目录中的子目录,通常表现为当前目录下的某个指定文件夹。
| 命令 | 作用 |
|---|---|
ls 指定文件夹 |
列出当前目录下 的 指定文件夹 中的 非隐藏内容 |
ls 指定文件夹1/指定文件夹2 |
列出当前目录下 的 指定文件夹1 中的 指定文件夹2 中的 非隐藏内容(可任意层级) |
ls ./指定文件夹 |
显式使用 ./ 表示当前目录下的子目录(效果同上) |
ls 指定文件夹1 指定文件夹2 |
同时列出多个子目录的内容(分别显示每个目录的标题) |
ls */ |
使用通配符 */ 列出当前目录下所有子目录的名称(不进入内容) |
ls -l 指定路径 |
查看当前目录下 的 指定路径 中的 详细信息 |
ls -a 指定路径 |
查看当前目录下的 指定路径 中的 所有文件(含隐藏) ,等同于 ls 指定路径 -a |
ls -R 指定路径 |
递归列出 指定路径下 及其所有嵌套子目录的内容 |
ls 指定文件夹/file.txt |
查看特定文件是否存在(若存在则显示文件名,否则报错) |
| ...... | ...... |
pwd(显示当前目录的绝对路径)
pwd 命令用来显示当前工作目录的绝对路径(从根目录开始 ,例如 /home/username/... ),不需要任何的参数。
uname(查看系统信息)
命令全称:Unix Name
不论当前处于什么目录,都可以直接使用此命令。
| 选项 | 输出内容 | 示例输出(Linux) |
|---|---|---|
uname |
仅内核名称 | Linux |
uname -s |
仅内核名称(同上) | Linux |
uname -n |
主机名(网络节点名) | myhost |
uname -r |
内核发布版本号 | 5.15.0-91-generic |
uname -v |
内核编译版本信息 | #93~20.04.1-Ubuntu SMP Thu Feb 1 16:38:42 UTC 2024 |
uname -m |
机器硬件架构(CPU 类型) | x86_64 |
uname -o |
操作系统类型 | GNU/Linux |
uname -a |
全部信息(按顺序输出 -s -n -r -v -m -p -i -o) |
clear(清屏)
clear 命令用于清除终端上的所有内容,只留下一行提示符。但实际上并不是清除,而是向上隐藏,往上翻翻就还能翻到此前的命令。
不论当前处于什么目录,都可以直接使用此命令。
sudo(临时切换用户执行一条命令)
不指定用户名,一般都是默认切换到 root 用户
切换到 root 用户之后,要注意使用,避免将系统清空
Ubuntu(Linux)是一个允许多用户的操作系统,其中权限最大的就是超级用户 root,有时候我们执行一些操作的时候是需要用 root 用户身份才能执行,比如安装软件。通过 sudo 命令可以使我们暂时将身份切换到 root 用户,但仅在执行一条命令后,就会自动变回原来的用户 ,执行 sudo 命令需要输入密码。
基本语法:
shell
sudo [选项] 命令
常用用法:
| 命令 | 说明 |
|---|---|
sudo 命令 |
以 root 身份执行 命令 ,✅ 只要是需要 root 权限的命令都可以在前面加 sudo |
sudo -u username 命令 |
以指定用户 username 身份执行命令 |
sudo -i |
模拟 root 登录(加载 root 的环境变量,如 .bashrc) |
sudo -s |
启动 root shell(但保留当前环境变量) |
sudo !! |
重新执行上一条命令并加上 sudo(Bash 快捷方式) |
想只输入 当前用户的密码 就能长期切换到 root 用户(无需键入 root 密码,root 密码一般都是未启用),使用如下命令:
shell
sudo su
切换回来的命令(这个也是只输入 当前用户的密码 就能长期切换到某个目标用户的命令):
shell
sudo su username
示例:
shell
mr-l-xiao@mrlxiao-virtual-machine:~$ sudoSU
[sudo]mr-1-xiao 的密码
root@mrlxiao-virtual-machine:/home/mr-1-xiao# sudo su mr-l-xiao
mr-l-xiao@mrlxiao-virtual-machine:~$
su(切换用户,可被 sudo su 替代)
不指定用户名,一般都是默认切换到 root 用户,但是不常用了
切换到 root 用户之后,要注意使用,避免将系统清空
基本语法:
shell
su [选项] [用户名]
常用用法:
| 命令 | 说明 |
|---|---|
su 或 su -m |
切换用户(默认切换到 root ,需输入 root 密码),但是不加载目标用户的环境,即根目录还是原用户的根目录 |
su - 或 su -l 或 su -login |
完整登录式切换用户,加载目标用户的环境(推荐) |
su username |
切换到指定用户(需该用户密码) |
su -c 命令 username |
以某用户身份执行单条命令(较少用) |
切换用户时需要输入密码。
touch(创建文件)
创建空文件(如果文件不存在);更新文件的时间戳(如果文件已存在)------包括访问时间(atime)、修改时间(mtime)等。
基本语法:
shell
touch [选项] 文件名1 文件名2 ...
常用用法:
| 命令 | 作用 | 示例 |
|---|---|---|
touch 文件名 |
若文件不存在,则创建一个空文件; 若存在,则更新其时间戳 | touch notes.txt |
touch file1 file2 ... |
同时创建或触碰多个文件 | touch a.log b.conf c.txt |
touch {x..y}.ext |
批量生成序列化文件名 | touch {1..5}.txt → 创建 1.txt 到 5.txt |
其他的一些选项基本用不到。
cat(查看文件内容,也可创建/清空文件、追加内容等)
不要用
cat查看大文件!cat会一次性输出全部内容,导致终端卡死
不论当前处于什么目录,都可以使用此命令,但要注意给出路径。
| 命令 | 作用 | 示例(当前目录下) |
|---|---|---|
cat 文件路径 |
显示 文件内容(包括所有空行) | |
cat -s 文件路径 |
显示 文件内容(但会压缩连续空行为单个空行) | cat -s log.txt |
cat -n 文件路径 |
显示 有行号的文件内容(对所有行进行编号,包括空行) | cat -n file.txt |
cat -b 文件路径 |
显示 有行号的文件内容(仅对非空行编号) | cat -b script.sh |
cat -E 文件路径 |
在每行末尾显示 $(便于查看换行符) |
cat -E data.csv |
cat -T 文件路径 |
将 Tab 显示为 ^I |
cat -T Makefile |
cat -v 文件路径 |
显示非打印字符(如控制字符) | (较少单独使用) |
cat -A 文件路径 |
等价于 -vET:显示所有不可见字符(包括 $、^I、特殊控制符) |
cat -A hidden.txt |
文件路径(cat 支持绝对路径、相对路径、甚至符号链接指向的文件,不限于当前目录,但要有读写权限):
- 在当前目录下,文件路径可以只给出文件名;
- 相对路径: 以当前目录为起点,用
.或..表示层级,例如cat ../test.txt; - 绝对路径: 从根目录
/开始的完整路径,例如cat /home/username/test.txt; - 带
~的路径: Shell 会自动将~展开为当前用户的主目录; - 符号链接:
cat会自动跟随符号链接读取目标文件。
文件叫什么名字要写全,有扩展名就要写上扩展名,比如 test.txt
进阶用法:
| 功能 | 命令(举例) | 说明 |
|---|---|---|
| 显示多个文件(依次拼接) | cat 文件路径1 文件路径2 |
文件之间没有空行隔开 |
| 创建新文件(交互式输入) | cat > newfile.txt |
输入内容(按 Enter 换行) 结束输入:按 Ctrl+D(EOF) ⚠️ 若文件已存在,会被覆盖! |
| 追加内容到文件 | cat >> existing.txt |
输入内容(按 Enter 换行) 结束输入:按 Ctrl+D,内容将追加 到 existing.txt 末尾 |
| 合并多个文件为一个新文件 | cat part1.txt part2.txt part3.txt > combined.txt |
将三个文件内容按顺序合并到 combined.txt |
| 清空文件内容 | cat /dev/null > 文件路径 |
等同于 cat > 文件路径 |
cp(文件拷贝)
若目标文件不存在时,拷贝文件;若目标文件存在时,会被覆盖。
常用用法:
| 命令 | 作用 | 示例 |
|---|---|---|
cp 源文件 目标文件 |
复制单个文件到新文件,若目标存在则覆盖 | cp A.txt B.txt |
cp 源文件 目录/ |
将文件复制到指定目录 | cp A.txt ~/Documents/ |
cp file1 file2 dir/ |
同时复制多个文件到目录 | cp a.log b.conf /tmp/ |
cp -r 源目录 目标目录 |
递归复制整个目录1到目录2(含子目录和文件) | cp -r project/ backup/ |
cp -i ... |
覆盖前交互式提示确认 | cp -i file.txt existing.txt |
cp -v ... |
显示复制过程("做了什么") | cp -rv docs/ archive/ |
cp -f ... |
强制覆盖(即使目标只读) | cp -f config.bak config |
cp --backup ... |
覆盖前自动备份原文件 | cp --backup=numbered file.txt file.txt |
find(查找文件)
find 用于查找文件在哪个位置,默认递归整个目录,即会搜索所有子目录。
常用用法:
| 命令 | 说明 | 示例( . 表示当前目录,~ 表示用户目录) |
|---|---|---|
find 路径 -name 文件名 |
按文件名查找(区分大小写) | find /home -name "*.txt" |
find 路径 -iname 文件名 |
按文件名查找(不区分大小写) | find . -iname "README.md" |
find 路径 -type [f] find 路径 -type [d] find 路径 -type [l] |
按类型查找: f=普通文件, d=目录, l=符号链接 |
find /tmp -type d find . -type f |
find 路径 -mtime -n find 路径 -mtime +n |
按修改时间查找: -n 代表 n 天内修改过, +n 代表 n 天前修改过 |
find . -mtime -7(最近7天) |
find 路径 -atime ±n |
按访问时间查找: 类似 -mtime,但基于最后访问时间 |
find ~ -atime +100 |
find 路径 -size ±n[单位] |
按文件大小查找: 单位:c 为字节, k为KB,M为MB,G为GB |
find / -size +1G(大于1GB) |
find 路径 ... -a ... find 路径 ... -o ... |
按组合条件查找: 默认是 -a(AND);用 -o 表示 OR |
find . -name "*.log" -o -name "*.tmp" |
find 路径 -not -path 文件名 |
排除匹配的路径 | find /var -not -path "/var/cache/*" |
find ... -exec 命令 {} \; |
对每个结果执行命令({} 代表文件名) |
find . -name "*.bak" -exec rm {} \; find . -type f -exec chmod 644 {} \; |
find ... -delete |
直接删除匹配项(慎用!) | find /tmp -name "*.tmp" -delete |
find 路径 -maxdepth N |
限制搜索深度,最多深入 N 层目录 | find . -maxdepth 1 -name "*.sh"(仅当前目录) |
grep(查找内容)
最常用的是
grep -nr或grep -ir
grep 用于查找某个内容在哪些文件中。
常用用法:
| 命令语法 | 说明 | 典型示例 |
|---|---|---|
grep "关键词" 文件名 |
在文件中查找包含关键词的行(区分大小写) | grep "error" /var/log/syslog |
grep -i "关键词" 文件名 |
在文件中查找包含关键词的行(不区分大小写) | grep -i "warning" app.log |
grep -n "关键词" 文件名 |
在文件中查找包含关键词的行,并输出匹配的行号 | grep -n "TODO" script.sh |
grep -v "关键词" 文件名 |
反向匹配,显示不包含关键词的行 | grep -v "^#" config.conf(过滤注释) |
grep -r "关键词" 目录/ |
递归搜索目录下所有文件 | grep -r "password" ~/project/ |
grep -l "关键词" 文件名... |
只输出包含关键词的文件名 | grep -l "main" *.c |
grep -c "关键词" 文件名 |
输出匹配的总行数 | grep -c "404" access.log |
grep -w "关键词" 文件名 |
仅匹配完整单词(避免 cat 匹配到 category) |
grep -w "root" /etc/passwd |
grep -A N -B M "关键词" 文件 grep -C N "关键词" 文件 |
-A N:显示匹配行后 N 行 -B M:显示匹配行前 M 行 -C N:前后各 N 行 |
grep -A 2 -B 1 "ERROR" log.txt grep -C 3 "panic" kernel.log |
grep -f 关键词文件 文件 |
从文件中读取多个搜索关键词 | grep -f keywords.txt data.txt |
grep --color=auto "关键词" 文件 |
终端中高亮显示匹配部分(多数系统默认开启) | grep --color=always "success" output.log |
file(查看文件真实类型)
不依赖文件扩展名,而是通过读取文件 头部 magic number(魔数) 判断类型,比扩展名更可靠。
常用用法:
| 命令 | 作用 | 示例 | 输出示例 |
|---|---|---|---|
file 文件名 |
检测单个文件的真实类型 | file document.pdf |
document.pdf: PDF document, version 1.5 |
file 文件1 文件2 ... |
同时检测多个文件 | file script.sh image.jpg |
script.sh: Bourne-Again shell script... image.jpg: JPEG image data... |
file * |
检测当前目录下所有文件 | file /etc/* |
(列出每个文件的类型) |
file -b 文件名 |
简洁输出(仅显示类型,不显示文件名) | file -b photo.png |
PNG image data, 1920 x 1080, ... |
file -f 文件列表 |
从文本文件中读取文件路径并批量检测 | file -f filelist.txt |
(filelist.txt 每行一个路径) |
file -L 文件 |
跟随符号链接,检测目标文件类型 | file -L mylink |
显示链接指向的真实文件类型 |
file -z 文件 |
尝试检测压缩文件内部内容类型 | file -z archive.tar.gz |
archive.tar.gz: POSIX tar archive (gzip compressed data) |
当有些文件没标扩展名的时候,就可以用此命令查看:
shell
file README
rm(删除,删除文件或整个目录)
rm 删除不可恢复!删除需谨慎!删除前先用 ls 确认要删的内容。
| 命令 | 作用 | 示例 |
|---|---|---|
rm 文件名 |
删除一个或多个文件 | rm file.txt |
rm -r 目录 或 rm -R 目录 |
递归删除目录及其内容,删除目录必须加 -r |
rm -r old_project/ |
rm -f |
强制删除 ,不提示确认 | rm -f A.txt rm -rf temp/ |
rm -rf 目录 |
强制删除目录及其内容 | rm -rf old_project/ |
rm -i |
每次删除前提示确认,防止误删 | rm -i *.tmp |
rm -v |
显示删除过程("删了什么") | rm -rv cache/ |
rm -- |
明确结束选项解析(处理以 - 开头的文件名) |
rm -- -badfilename |
rmdir(补充) |
递归删除目录及其内容(等效于 rm -r) |
rmdir old_project/ |
mkdir(创建文件夹)
(文件夹就属于目录)
| 命令 | 作用 | 示例 |
|---|---|---|
mkdir 目录名 |
创建一个新目录 | mkdir docs |
mkdir dir1 dir2 ... |
同时创建多个同级目录 | mkdir src bin logs |
mkdir -p dir1/dir2 |
递归创建目录(自动创建路径中缺失的父目录),✅ 最常用 | mkdir -p project/src/utils |
mkdir -v |
显示创建过程("创建了哪些目录") | mkdir -pv backup/2024/Q1 |
mv(移动/重命名,文件或目录)
常用用法:
| 命令 | 作用 | 示例 |
|---|---|---|
mv 源文件 目标文件 |
重命名文件(同目录下),若目标存在,默认覆盖 | mv old.txt new.txt |
mv 文件 目录/ |
将文件移动到指定目录 | mv report.pdf ~/Documents/ |
mv dir1 dir2 |
若 dir2 不存在 → 重命名目录 若 dir2 存在 → 将 dir1 移入 dir2 |
mv project_v1 project_final |
mv -i |
覆盖前交互式提示确认 | mv -i file.txt existing.txt |
mv -v |
显示移动/重命名过程 | mv -v *.log archive/ |
mv -f |
强制覆盖(不提示) | mv -f temp.bak config |
mv -n |
不覆盖已存在的文件 | mv -n draft.txt final.txt |
mv -ni |
安全移动 |
ifconfig(显示/配置网络,已被弃用)
初次使用此命令时,可能会提示找不到此命令,说明未安装相关软件包,在终端运行
sudo apt install net-tools安装即可虽然已被弃用,但可用于兼容低版本 Linux
(网络接口就是网卡)
常用用法:
| 命令 | 作用 | 示例 |
|---|---|---|
ifconfig |
显示 所有 活动网络接口的配置信息,仅显示"UP"状态的接口 | ifconfig |
ifconfig -a |
显示所有网络接口(包括未激活的网卡) | ifconfig -a |
ifconfig 接口名 |
显示指定接口的详细信息 | ifconfig eth0 ifconfig lo |
sudo ifconfig 接口 up |
启用指定网络接口,需要 root 权限 | sudo ifconfig eth0 up |
sudo ifconfig 接口 down |
禁用指定网络接口,需要 root 权限 | sudo ifconfig wlan0 down |
sudo ifconfig 接口 reload |
重启指定网络接口,需要 root 权限 | sudo ifconfig wlan0 reload |
sudo ifconfig 接口 IP地址 |
临时设置 IPv4 地址,重启后失效 | sudo ifconfig eth0 192.168.1.100 |
sudo ifconfig 接口 netmask 子网掩码 |
设置 IP + 子网掩码,手动配置网络时使用 | sudo ifconfig eth0 192.168.1.100 netmask 255.255.0.0 |
ip(显示/配置网络,代替 ifconfig)
ip是现代 Linux 网络配置的标准工具,属于iproute2套件,功能强大且持续维护,替代老旧的ifconfig、route等。
选项等效简写及其含义:
ip addr→ip a:显示/管理 IP 地址ip link→ip l:管理网络接口状态ip route→ip r:查看/管理路由表ip neigh→ip n:查看 ARP / NDP 表
常用用法:
| 完整命令 | 作用 | 示例 |
|---|---|---|
ip addr show |
显示 所有 网络接口的 IP 地址(IPv4/IPv6) | |
ip addr show dev 接口名 |
仅显示指定接口的 IP 配置 | ip addr show dev wlan0 |
sudo ip addr add 192.168.1.100/24 dev 接口名 |
为指定接口添加一个 IPv4 地址(临时生效),需要 root 权限 | sudo ip addr add 10.0.0.5/16 dev ens33 |
sudo ip addr del 192.168.1.100/24 dev 接口名 |
删除接口上的指定 IP 地址,需要 root 权限 | sudo ip addr del 2001:db8::1/64 dev eth0 |
ip link show |
列出 所有 网络接口及其状态(UP/DOWN) | |
ip link show 接口名 |
仅显示指定接口的状态信息 | ip link show lo |
sudo ip link set 接口名 up |
启用(激活)指定网络接口,需要 root 权限 | sudo ip link set wlan0 up |
sudo ip link set 接口名 down |
禁用(关闭)指定网络接口,需要 root 权限 | sudo ip link set eth1 down |
ip route show |
显示当前系统的完整路由表 | |
ip route show default |
仅显示默认网关 | |
sudo ip route add 10.0.0.0/8 via 192.168.1.1 |
添加一条静态路由,需要 root 权限 | sudo ip route add 172.16.0.0/12 via 192.168.10.1 dev eth0 |
sudo ip route del 10.0.0.0/8 |
删除指定的路由条目,需要 root 权限 | sudo ip route del default |
ip neigh show |
显示 ARP(IPv4)或 NDP(IPv6)邻居缓存表 | ip neigh show |
ip neigh show dev eth0 |
仅显示某接口的邻居表 | ip neigh show dev wlan0 |
ip -br addr show |
以简洁格式(brief)显示接口和 IP | ip -br a |
ip -br link show |
以简洁格式显示接口状态 | ip -br l |
常用组合:
| 需求 | 推荐命令 |
|---|---|
| 查看本机所有 IP 地址 | ip a 或 ip addr show |
| 查看简洁 IP 列表 | ip -br a(-br = brief) |
| 启用网卡 | sudo ip link set eth0 up |
| 临时设置静态 IP | sudo ip addr add 192.168.1.10/24 dev eth0 |
| 删除 IP 地址 | sudo ip addr del 192.168.1.10/24 dev eth0 |
| 查看默认网关 | ip route show default |
| 查看完整路由表 | ip route show |
| 查看 ARP 缓存 | ip neigh show |
man(系统帮助命令)
Ubuntu 系统中有很多命令,这些命令都有不同的格式,不同的格式对应不同的功能,通过 man 命令可以查看其它命令的语法格式、主要功能、主要参数说明。
输入:
shell
man 命令
然后回车,就会打开这个命令的详细说明,按 q 键退出到终端。
reboot(系统重启命令)
在终端中输入命令 reboot 然后点击回车键即可重启 Ubuntu 系统,当然也有右上角图形化界面的按钮。
poweroff(关机命令)
在终端中输入命令 poweroff 然后按下回车键即可关闭 Ubuntu 系统,当然也有右上角图形化界面的按钮。
sync(数据同步写入磁盘)
强制将内存中缓存的文件系统数据立即写入磁盘,确保数据持久化。
Linux 等操作系统为提升性能,延长磁盘寿命,会将写操作 暂存于内存缓存(page cache) ,然后异步写入磁盘。若突然断电、拔设备或崩溃,未写入的数据会丢失 。sync 强制刷盘,确保:文件内容真正保存到存储设备,元数据(如文件大小、时间戳)一致。但也不要滥用 ,频繁调用 sync 会严重降低 I/O 性能(破坏缓存优势)。
常用用法:
| 命令 | 作用说明 | 典型场景 |
|---|---|---|
sync |
同步所有待写入磁盘的数据 | 在关机/拔 USB 前执行,防止数据丢失 |
sync /path/to/file |
(部分系统支持)仅同步指定文件所在文件系统 | 较少使用;多数发行版忽略参数,仍同步全部 |
典型使用场景:
| 场景 | 操作 |
|---|---|
| 安全移除 USB 设备前 | sync && sudo umount /dev/sdb1 |
| 关键日志写入后立即持久化 | echo "Critical event" >> log.txt && sync |
| 系统关机/重启前(手动) | sync && sudo shutdown -h now |
| 调试文件系统行为 | 在测试脚本中插入 sync 确保写入完成 |
du(查看文件或目录所占磁盘空间)
全称:disk usage
常用用法:
| 命令 | 作用 | 示例 | 注意事项 |
|---|---|---|---|
du |
显示当前目录下每个子目录/文件的磁盘使用量(默认单位:KB) | du |
递归列出所有子目录,输出较冗长 |
du -h |
以人类可读格式显示(K/M/G) | du -h |
✅ 最常用选项 |
du -s |
仅显示总计大小(summary),不列子项 | du -s /var/log |
常与 -h 联用 |
du -sh |
显示目录总大小(易读格式) | du -sh ~/Documents |
✅ 日常查看目录大小首选 |
du -a |
显示所有文件和目录(包括普通文件) | du -ah /tmp |
默认只显示目录 |
du -c |
在最后显示总和(total) | du -ch *.log |
-c = --total |
du -t SIZE |
仅显示大于指定大小的条目 | du -h -t 100M /var |
用于找大文件/目录(GNU coreutils ≥ 8.24) |
du --exclude="模式" |
排除匹配的文件或目录 | du -sh --exclude="*.cache" ~ |
支持通配符(如 *.tmp, node_modules) |
du -L |
跟随符号链接(默认不跟随) | du -Lsh mylink |
谨慎使用,可能重复计算 |
gedit( Linux 下的文本编辑器)
全称:GNOME Editor
gedit 是 Linux 桌面系统下的图形化文本编辑器,可以在文件夹中找到文件,右键选择用 gedit 打开(用文本编辑器打开),也可以在终端使用命令打开文件。
常用用法:
| 命令 | 作用 | 示例 |
|---|---|---|
gedit 文件名 |
打开或创建指定文件(图形界面) | gedit notes.txt |
gedit file1 file2 |
同时打开多个文件(每个文件在独立标签页) | gedit config.conf /etc/hosts |
gedit --new-window 文件 |
在新窗口中打开文件(而非新标签) | gedit --new-window log.txt |
ps(查看当前时刻的系统进程)
常用用法:
| 命令 | 作用 | 示例 | 备注 |
|---|---|---|---|
ps |
显示当前终端会话中的进程(非常有限) | ps |
通常只显示 shell 和当前命令 |
ps aux |
BSD 风格:显示所有用户的所有进程 | `ps aux | grep nginx` |
ps -ef |
POSIX / Unix 风格:显示所有进程(类似 ps aux) |
`ps -ef | grep sshd` |
ps -u 用户名 |
显示指定用户的所有进程 | ps -u alice |
可用于审计或资源排查 |
ps -p PID (或 ps -q PID) |
显示指定 PID 的进程信息 | ps -p 1234 |
快速查看某进程状态 |
ps --forest |
以树状结构显示进程父子关系 | ps auxf 或 ps -ef --forest |
直观查看进程派生关系 |
ps -o 自定义字段 |
自定义输出列(如 pid, comm, %cpu, %mem, start, cmd 等) | ps -eo pid,ppid,cmd,%mem --sort=-%mem |
适合脚本或重点监控 |
ps --sort 字段 |
按指定字段排序(- 表示降序) |
ps aux --sort=-%cpu |
找出 CPU/内存占用高的进程 |
top(查看实时系统进程)
作用相当于 windows 下的任务管理器,默认大约 3 秒钟更新一次进程情况
常用用法:
| 类别 | 操作 / 快捷键 | 作用说明 | 备注 |
|---|---|---|---|
| 启动命令 | top |
启动实时进程监控(默认每 3 秒刷新) | 普通用户即可运行 |
| 退出 | 按 q |
退出 top |
--- |
| 刷新间隔 | 按 d → 输入秒数 |
修改刷新间隔(如 1 表示 1 秒) |
支持小数:0.5 |
| 按 CPU 排序 | 按 P(大写) |
默认排序方式:按 CPU 使用率降序 | --- |
| 按内存排序 | 按 M(大写) |
按 RES(物理内存) 降序排列 | 快速找内存大户 |
| 按 PID 排序 | 按 N(大写) |
按进程 ID 升序排列 | --- |
| 按运行时间排序 | 按 T(大写) |
按 TIME+(累计 CPU 时间)降序 | 找长期运行进程 |
| 显示/隐藏空闲进程 | 按 i |
切换是否显示 CPU 使用率为 0 的进程 | 减少干扰信息 |
| 杀死进程 | 按 k → 输入 PID → 回车 |
发送 SIGTERM(可被拦截) 可指定信号(默认 15) | 安全终止;若无效再用 kill -9 |
| 改变进程优先级(nice) | 按 r → 输入 PID → 输入 nice 值 |
调整进程调度优先级(-20 ~ 19) | 需权限;值越小优先级越高 |
| 显示完整命令行 | 按 c |
切换显示 COMMAND(含路径和参数) | 默认只显示进程名 |
| 显示/隐藏线程 | 按 H |
切换是否显示线程(LWP) | 用于多线程程序分析 |
| 选择特定用户进程 | 按 u → 输入用户名 |
只显示该用户的进程 | 如 u www-data |
| 保存配置 | 按 W(大写) |
将当前视图设置(排序、列等)保存到 ~/.toprc |
下次启动自动生效 |
echo(在终端或脚本中输出一行文本或变量内容)
核心作用:
- 显示字符串
- 输出变量值
- 向文件写入内容(配合重定向)
- 调试脚本(打印中间状态)
基本语法:
bash
echo [选项] [字符串或变量]
常见用法:
| 用法 | 示例 | 说明 |
|---|---|---|
| 输出普通文本 | echo "Hello, World!" |
输出:Hello, World! |
| 输出变量值 | name="Alice"; echo $name |
输出:Alice |
| 输出带换行的内容 | echo -e "Line1\nLine2" |
-e 启用转义字符(如 \n 换行、\t 制表符) |
| 禁止末尾换行 | echo -n "No newline" |
默认 echo 会在末尾加换行,-n 取消 |
| 向文件写入 | echo "log entry" >> app.log |
追加内容到文件(> 覆盖,>> 追加) |
| 生成空文件 | echo > empty.txt |
创建或清空文件 |
注意事项:
-
引号影响变量和通配符展开
bashecho *.txt # Shell 展开为所有 .txt 文件名 echo "*.txt" # 原样输出字符串 "*.txt" -
echo本身不处理通配符或变量------是 Shell 处理的
echo只负责"打印它收到的参数"。 -
echo就是 Shell 的"打印"命令------简单、直接、无处不在。 它是理解 Shell 工作机制(如变量展开、重定向、引号作用)的入门钥匙。