当前位置: 首页 > news >正文

Linux基础命令大全

1、文件目录

(1)ls

ls -l

以详细列表形式显示文件 / 目录信息,包含:权限、链接数、所有者、所属组、文件大小、修改时间、文件名

ls -a

显示目录下所有文件 / 目录,包括以 . 开头的隐藏文件(如 .bashrc)及 .(当前目录)、..(上级目录)

ls -la

结合 -l 和 -a 的功能,以长格式显示所有文件(含隐藏文件),是日常查看目录详情的高频命令

ls -h

以友好单位(如 1K、2M、3G)显示文件大小,需搭配 -l 使用才更实用

ls -lh

长格式显示文件信息,并以 K/M/G 单位标注大小,快速直观判断文件占用空间

ls -r

反向排序(默认按字母升序,-r 改为降序),常搭配 -l(ls -lr)或 -t(ls -tr)使用

ls -t

按文件修改时间排序(最新修改的文件在前),搭配 -l(ls -lt)可查看最近更新的文件

ls -F

在文件名后添加符号标识文件类型:/ 表示目录、* 表示可执行文件、@ 表示软链接,快速区分文件属性

ls -ltr

按文件修改时间倒序(最早修改的文件在前)长格式显示,适合追溯历史文件

ls --color

以彩色区分文件类型(如目录蓝色、可执行文件绿色、普通文件黑色),常用 ls --color=auto 自动适配终端

ls -d */

仅显示当前目录下的子目录(不包含普通文件),*/ 是通配符,限定只匹配目录

ls -i

显示文件的 inode 编号(inode 是文件系统中唯一标识文件的元数据索引),用于硬链接管理等高级操作

ls -s

显示文件大小(默认以 “块” 为单位),搭配 -h(ls -sh)可转为 K/M/G 友好单位

ls -R

递归列出当前目录下所有层级子目录的内容,遍历整个目录树,适合查看完整目录结构

(2)cd

cd 目录路径

切换到指定的目录(绝对路径或相对路径),例如 cd /home/user 或 cd Documents

cd ~

切换到当前用户的家目录(如 /home/用户名 或 /root),是最常用的快捷方式之一

cd ..

切换到当前目录的上级目录,例如在 /home/user/docs 中执行后会进入 /home/user

cd -

切换到上一次所在的目录(相当于 “返回” 操作),常用于两个目录间快速切换

cd .

切换到当前目录(实际无效果,主要用于脚本中规范路径格式或占位)

cd

不指定任何参数时,默认切换到当前用户的家目录,等价于 cd ~

cd ../../

切换到上两级目录,可根据需求叠加(如 cd ../../../ 切换到上三级目录)

cd ~用户名

切换到指定用户的家目录(需有访问权限),例如 cd ~root 切换到 root 用户的家目录

(3)mkdir

mkdir 目录名

创建单个目录,例如 mkdir docs 会在当前目录下创建名为 docs 的目录

mkdir -p 路径

递归创建多级目录(若父目录不存在则自动创建),例如 mkdir -p a/b/c 会依次创建 a、a/b、a/b/c 三级目录

mkdir -m 权限 目录名

创建目录时直接指定权限(无需后续用 chmod 修改),例如 mkdir -m 755 public 创建权限为 rwxr-xr-x 的 public 目录

mkdir -v 目录名

创建目录时显示详细信息(告知目录已创建),例如 mkdir -v logs 会输出 mkdir: 已创建目录 'logs'

mkdir -p -v 多级路径

递归创建多级目录并显示每个目录的创建信息,例如 mkdir -p -v x/y/z 会逐行输出每个目录的创建过程

mkdir 目录1 目录2 目录3

一次性创建多个同级目录,例如 mkdir doc img video 同时创建 doc、img、video 三个目录

2、文件操作

(1)rm

rm 文件

删除指定文件,删除前会提示确认(y 确认,n 取消),例如 rm note.txt 删除 note.txt 文件

rm -f 文件

强制删除文件,不提示确认(即使文件为只读),例如 rm -f temp.log 直接删除 temp.log 且无提示

rm -r 目录

递归删除目录及其包含的所有文件和子目录,例如 rm -r docs 删除 docs 目录及其中所有内容(删除前会提示)

rm -rf 目录

强制删除目录及其内容,不提示确认(最危险也最常用的目录删除方式),例如 rm -rf old_data 直接删除 old_data 目录及所有内容

rm -i 文件

删除前强制提示确认(比默认提示更严格,即使在非交互模式下也会提示),例如 rm -i important.txt 会明确询问是否删除

rm -v 文件/目录

显示删除过程的详细信息,例如 rm -v file1.txt 会输出 已删除 'file1.txt'

rm -rf *

删除当前目录下所有文件和子目录(不包括隐藏文件),* 匹配所有非隐藏项

rm -rf .[!.]* ..?* *

删除当前目录下所有文件(包括隐藏文件),避免因 * 不匹配隐藏文件导致的遗漏

(2)cp

cp 源文件 目标路径

复制单个文件到指定路径,若目标是目录则保留原文件名名;若目标是新文件名则复制并改名,例如 cp file.txt docs/ 或 cp file.txt newfile.txt

cp -r 源目录 目标路径

递归复制目录及其所有内容(包括子目录和文件),例如 cp -r docs/ backups/ 将 docs 目录复制到 backups 目录下

cp -i 源文件 目标

复制时若目标文件已存在,会提示确认是否覆盖,例如 cp -i file.txt docs/ 若 docs/file.txt 存在则询问是否覆盖

cp -v 源 目标

显示复制过程的详细信息,例如 cp -v img.jpg pics/ 会输出 'img.jpg' -> 'pics/img.jpg'

cp -f 源文件 目标

强制复制,若目标文件已存在且无写入权限,会强制覆盖(忽略权限检查),例如 cp -f readme.txt /opt/

cp -p 源文件 目标

复制时保留文件的原始属性(权限、所有者、修改时间等),例如 cp -p data.log backups/ 保持 data.log 的属性不变

cp -a 源目录 目标

等价于 -dR --preserve=all,递归复制目录并保留所有属性(包括符号链接),适合完整备份目录,例如 cp -a config/ config_bak/

cp -u 源 目标

仅当源文件比目标文件新,或目标文件不存在时才复制,例如 cp -u *.txt docs/ 只更新较新的文本文件

cp -r 源目录1 源目录2 目标目录

一次性复制多个目录到目标目录下,例如 cp -r docs/ pics/ backups/ 将 docs 和 pics 都复制到 backups 中

cp -l 源文件 目标

不复制文件内容,而是创建硬链接(节省空间,修改任一文件会影响所有链接),例如 cp -l file.txt file_link

cp -s 源文件 目标

创建软链接(符号链接)而非复制文件,例如 cp -s /usr/bin/python3 python 生成指向 python3 的软链接 python

(3)mv

mv 源文件/目录 目标路径

移动文件或目录到指定路径,若目标是目录则保持原名;若目标是新名称则移动并改名,例如 mv file.txt docs/ 或 mv old.txt new.txt

mv -i 源 目标

移动时若目标已存在,会提示确认是否覆盖,例如 mv -i file.txt docs/ 若目标存在则询问确认

mv -f 源 目标

强制移动,若目标已存在则直接覆盖且不提示,例如 mv -f temp.log logs/ 强制覆盖已有文件

mv -v 源 目标

显示移动过程的详细信息,例如 mv -v pics/ images/ 会输出 'pics/' -> 'images/'

mv 文件1 文件2 目标目录

一次性移动多个文件到目标目录,例如 mv a.txt b.jpg docs/ 将两个文件都移到 docs 目录

mv -n 源 目标

若目标文件已存在,则不移动也不提示,避免意外覆盖,例如 mv -n important.txt backups/ 安全移动

mv --backup=numbered 源 目标

移动时若目标存在,会创建带编号的备份文件(如 file.txt.~1~),例如 mv --backup=numbered file.txt docs/

(4)touch

touch 文件名

创建一个空文件(若文件不存在);若文件已存在,则更新其访问时间和修改时间为当前时间,例如 touch note.txt

touch 文件1 文件2 文件3

一次性创建多个空文件,例如 touch a.txt b.md c.csv 同时创建三个不同类型的空文件

touch -d "时间字符串" 文件名

创建文件时指定时间戳(而非当前时间),或修改已有文件的时间戳,例如 touch -d "2023-01-01 12:00" log.txt

touch -t 时间格式 文件名

以 [[CC]YY]MMDDhhmm[.ss] 格式指定时间戳,例如 touch -t 202301011200.30 data.log 设置时间为 2023 年 1 月 1 日 12:00:30

touch -a 文件名

仅更新文件的访问时间(不改变修改时间),例如 touch -a readme.txt 记录 “查看” 时间

touch -m 文件名

仅更新文件的修改时间(不改变访问时间),例如 touch -m script.sh 模拟文件 “被修改”

touch -c 文件名

仅更新已有文件的时间戳,若文件不存在则不创建,例如 touch -c oldfile.txt 避免误创建新文件

touch -r 参考文件 目标文件

让目标文件的时间戳与参考文件保持一致,例如 touch -r template.txt newfile.txt 同步时间戳

3、文件读取

(1)cat

cat 文件名

读取并显示文件的全部内容,例如 cat README.txt 输出该文件的文本内容

cat 文件1 文件2

依次显示多个文件的内容,例如 cat part1.txt part2.txt 连续输出两个文件的内容

cat -n 文件名

显示文件内容并为每一行添加行号(包括空行),例如 cat -n script.sh 方便查看代码行数

cat -b 文件名

仅为非空行添加行号(空行不编号),例如 cat -b notes.txt 适合处理有较多空行的文本

cat > 文件名

创建新文件并写入内容(按 Ctrl+D 结束输入),例如 cat > newfile.txt 可快速创建文本文件

cat >> 文件名

向已有文件末尾追加内容(不会覆盖原有内容),例如 cat >> log.txt 向日志文件添加新内容

cat -s 文件名

将连续的多个空行压缩为一个空行,例如 cat -s messy.txt 使输出更整洁

cat -T 文件名

将文件中的制表符(Tab)显示为 ^I,例如 cat -T data.csv 方便区分空格和制表符

cat 文件1 文件2 > 合并文件

将多个文件的内容合并到一个新文件中,例如 cat chapter1.txt chapter2.txt > book.txt

cat -v 文件名

显示文件中的非打印字符(除换行符和制表符外),用于查看特殊字符

(2)more

more 文件名

分页显示文件内容(默认从第一行开始),支持按 Space 键翻页、Enter 键逐行滚动,按 q 退出

cat 文件名 | more

将其他命令的输出通过 more 分页显示,解决输出内容过长的问题,例如 ls -lR / | more 分页查看目录递归列表

more +数字 文件名

从文件的指定行号开始显示内容,例如 more +50 log.txt 直接从第 50 行开始查看日志

more -d 文件名

显示操作提示(如 “按空格键继续,'q' 退出,'h' 帮助”),避免新手因不知操作方式而卡住

more +/关键词 文件名

从文件中第一个匹配 “关键词” 的位置开始显示,例如 more +/error app.log 直接定位到首个错误信息

more -n 文件名

指定每页显示的行数(默认适应终端高度),例如 more -20 longfile.txt 每页固定显示 20 行

more -s 文件名

将连续的多个空行压缩为一个空行,使输出更紧凑,例如 more -s messy.txt 处理格式松散的文本

more -p 文件名

显示每页内容前先清屏,避免不同页内容混杂,适合终端窗口较小的场景

(3)less

less 文件名

分页查看文件内容(支持上下滚动、搜索),按 q 退出,↑↓ 键逐行滚动,PageUp/PageDown 翻页

命令 | less

将其他命令的输出通过 less 分页显示,例如 ls -lR / | less 分页查看大量目录内容

less -N 文件名

显示文件内容时在每行前添加行号,方便定位特定行,例如 less -N script.py 查看代码行号

less +/关键词 文件名

打开文件后直接跳转到第一个匹配 “关键词” 的位置,按 n 查看下一个匹配,N 查看上一个

less -i 文件名

搜索时忽略大小写(如搜索 “error” 会匹配 “Error”“ERROR”),例如 less -i log.txt

less -S 文件名

长行内容不自动折行,按左右方向键横向滚动查看,适合查看表格或代码文件

less -m 文件名

在底部状态栏显示当前阅读进度(百分比),例如 less -m large_file.txt 了解阅读位置

less -g 文件名

仅高亮显示当前匹配的搜索结果,而非所有匹配项,减少视觉干扰

less -t 标签 文件名

跳转到文件中定义的指定标签位置(适用于带标签的文档,如 man 手册)

less -r 文件名

正确显示文件中的颜色控制字符(如 ls --color | less -r 保留彩色输出)

less --help

显示 less 的所有快捷键和参数说明,快速查询使用方法

(4)head

head 文件名

显示文件的前 10 行内容(默认行为),例如 head log.txt 输出日志文件的前 10 行

head -n 数字 文件名

显示文件的前 N 行内容,-n 可省略直接写数字,例如 head -n 5 note.txt 或 head 5 note.txt 均显示前 5 行

head -c 字节数 文件名

显示文件的前 N 个字节内容,例如 head -c 100 data.bin 输出文件的前 100 字节(适合查看二进制文件头部)

命令 | head

显示其他命令输出的前 10 行,例如 ls -l | head 查看目录列表的前 10 项

head -n -数字 文件名

显示文件内容,排除最后 N 行,例如 head -n -3 report.txt 输出除最后 3 行外的所有内容

head 文件1 文件2

显示多个文件的前 10 行,每个文件内容前会添加文件名作为分隔,例如 head a.txt b.txt

head -v 文件名

显示内容前先输出文件名(即使只有一个文件),例如 head -v config.ini 明确标识内容来源

(5)tail

tail 文件名

显示文件的最后 10 行内容(默认行为),例如 tail log.txt 查看日志文件的最新 10 行

tail -f 文件名

实时监控文件尾部新增内容(文件更新时自动显示),按 Ctrl+C 退出,常用于跟踪日志,例如 tail -f app.log

tail -n 数字 文件名

显示文件的最后 N 行内容,-n 可省略直接写数字,例如 tail -n 5 note.txt 或 tail 5 note.txt 均显示最后 5 行

tail -c 字节数 文件名

显示文件的最后 N 个字节内容,例如 tail -c 200 data.bin 输出二进制文件的最后 200 字节

命令 | tail

显示其他命令输出的最后 10 行,例如 ls -l | tail 查看目录列表的最后 10 项

tail -n +数字 文件名

从文件的第 N 行开始显示到末尾,例如 tail -n +100 report.txt 显示从第 100 行到文件结尾的内容

tail -F 文件名

类似 -f,但文件被删除后会持续重试打开(适合日志文件轮转场景),例如 tail -F access.log

tail 文件1 文件2

显示多个文件的最后 10 行,每个文件内容前会添加文件名作为分隔,例如 tail a.log b.log

tail -v 文件名

显示内容前先输出文件名(即使只有一个文件),例如 tail -v config.ini 明确标识内容来源

tail -f 文件名 | grep 关键词

实时监控文件并过滤出包含关键词的内容,例如 tail -f error.log | grep "ERROR" 只跟踪错误信息

(6)find

find 路径 -name "文件名"

在指定路径下按文件名查找(区分大小写),支持通配符 *(任意字符)、?(单个字符),例如 find /home -name "*.txt" 查找 /home 下所有 txt 文件

find 路径 -iname "文件名"

与 -name 功能相同,但忽略大小写,例如 find /etc -iname "hosts" 同时匹配 HOSTS、Hosts 等

find 路径 -type 类型

按文件类型筛选,f 表示普通文件,d 表示目录,l 表示软链接等,例如 find /usr -type d -name "bin" 查找名为 bin 的目录

find 路径 -size 大小

按文件大小查找,+N 表示大于 N,-N 表示小于 N,单位:c(字节)、k(KB)、M(MB)、G(GB),例如 find / -size +100M 查找大于 100MB 的文件

find 路径 -mtime 天数

按文件修改时间查找,+N 表示超过 N 天未修改,-N 表示 N 天内修改过,例如 find ./ -mtime -7 查找 7 天内修改过的文件

find 路径 -user 用户名

查找指定用户拥有的文件 / 目录,例如 find /home -user john 查找 john 用户的文件

find 路径 -perm 权限

按文件权限查找,例如 find /bin -perm 755 查找权限为 755 的可执行文件

find 路径 -exec 命令 {} \;

对查找到的文件执行指定命令,{} 代表匹配的文件,\; 是命令结束符,例如 find ./ -name "*.tmp" -exec rm {} \; 删除所有 tmp 文件

find 路径 -maxdepth 深度

限制查找的目录深度,例如 find / -maxdepth 2 -name "passwd" 只在根目录下两级内查找

find 路径 -mindepth 深度

限制查找的最小目录深度(跳过浅层目录),例如 find ./ -mindepth 3 -type f 只查找至少 3 级子目录下的文件

find 路径 -not 条件

查找不满足指定条件的文件,例如 find ./ -type f -not -name "*.txt" 查找非 txt 格式的文件

find 路径 -o 条件

多个条件满足其一即可,例如 find ./ -name "*.jpg" -o -name "*.png" 查找 jpg 或 png 图片

(7)ln

4、文本处理

(1)grep

grep "关键词" 文件名

在指定文件中搜索包含 “关键词” 的行并输出,区分大小写,例如 grep "error" log.txt 查找日志中的错误信息

grep -i "关键词" 文件名

搜索时忽略大小写(匹配关键词的任意大小写形式),例如 grep -i "Error" log.txt 同时匹配 ERROR、error 等

grep -r "关键词" 目录

递归搜索指定目录下所有文件中包含 “关键词” 的行,例如 grep -r "config" /etc/ 查找 /etc 目录下含 config 的配置

命令 | grep "关键词"

过滤其他命令的输出,只显示包含 “关键词” 的行,例如 ps aux | grep "nginx" 查看 nginx 相关进程

grep -n "关键词" 文件名

搜索时显示匹配行在文件中的行号,例如 grep -n "function" script.py 定位代码中的函数位置

grep -v "关键词" 文件名

输出不包含 “关键词” 的所有行,例如 grep -v "^#" config.ini 过滤配置文件中的注释行(以 #开头)

grep -w "关键词" 文件名

只匹配完整单词(避免关键词作为其他词的一部分被匹配),例如 grep -w "cat" text.txt 只匹配 “cat” 不匹配 “category”

`grep -E" 模式 1

-E(extended regexp,扩展正则)

grep -c "关键词" 文件名

统计包含 “关键词” 的行数,例如 grep -c "failed" audit.log 统计失败操作的次数

grep -l "关键词" 目录/*

只显示包含 “关键词” 的文件名(不显示具体内容),例如 grep -l "import" *.py 找出包含 import 的 Python 文件

grep -A 数字 "关键词" 文件名

显示匹配行及之后的 N 行内容,例如 grep -A 3 "error" log.txt 显示错误行及后续 3 行

grep -B 数字 "关键词" 文件名

显示匹配行及之前的 N 行内容,例如 grep -B 2 "failed" test.log 显示失败行及前面 2 行

grep -C 数字 "关键词" 文件名

显示匹配行及前后各 N 行内容,例如 grep -C 1 "warning" app.log 显示警告行及前后各 1 行

(2)echo

echo "文本内容"

输出指定的文本内容(默认末尾自动添加换行符),例如 echo "Hello World" 输出 Hello World 并换行

echo $变量名

打印环境变量或自定义变量的值,例如 echo $PATH 输出系统路径变量,echo $USER 输出当前用户名

echo "文本" > 文件名

将文本内容写入文件(覆盖原有内容),例如 echo "test content" > file.txt 创建或覆盖文件

echo "文本" >> 文件名

将文本内容追加到文件末尾(不覆盖原有内容),例如 echo "new line" >> log.txt 向日志添加内容

echo -n "文本"

输出文本后不自动添加换行符,例如 echo -n "Hello " && echo "World" 输出 Hello World(合并为一行)

echo -e "文本\n转义字符"

解析字符串中的转义字符(如 \n 换行、\t 制表符),例如 echo -e "Name\tAge\nAlice\t25" 输出格式化表格

echo *

输出当前目录下的所有非隐藏文件和目录(等价于 ls 的简化输出),例如 echo * 快速列出目录内容

echo "::set-output name=key::value"

在 CI/CD 管道中设置输出变量(如 GitHub Actions),例如 echo "::set-output name=version::1.0.0"

echo -e "\033[31m红色文本\033[0m"

输出带颜色的文本(通过 ANSI 转义码),例如上述命令输出红色文本,\033[0m 重置颜色

(3)sed

sed 's/原字符串/新字符串/' 文件名替换文件中每行第一个匹配的 “原字符串” 为 “新字符串”,例如 sed 's/error/ERROR/' log.txt 替换每行首个 error 为 ERROR
sed 's/原字符串/新字符串/g' 文件名替换文件中所有匹配的 “原字符串” 为 “新字符串”(每行所有匹配项),例如 sed 's/old/new/g' file.txt 全局替换 old 为 new
sed -i 's/原/新/g' 文件名直接修改文件内容(不输出到终端),例如 sed -i 's/foo/bar/g' data.txt 原地替换文件中的 foo 为 bar
sed -n '/关键词/p' 文件名只打印包含 “关键词” 的行(-n 抑制默认输出,p 打印匹配行),例如 sed -n '/warning/p' log.txt 提取所有警告行
sed '行号d' 文件名删除指定行号的内容,例如 sed '3d' file.txt 删除第 3 行,sed '1,5d' file.txt 删除 1-5 行
sed '/关键词/d' 文件名删除包含 “关键词” 的行,例如 sed '/#/d' config.ini 删除所有注释行(以 #开头)
sed 's/原/新/2' 文件名只替换每行中第 N 个匹配的字符串,例如 sed 's/ab/cd/2' text.txt 替换每行中第 2 个 ab 为 cd
sed -e '命令1' -e '命令2' 文件名执行多个 sed 命令,例如 sed -e 's/old/new/' -e '/test/d' file.txt 先替换再删除含 test 的行
sed 's/原/新/i' 文件名替换时忽略大小写,例如 sed 's/error/ERROR/i' log.txt 替换所有大小写形式的 error
sed '行号a 新增内容' 文件名在指定行后追加内容,例如 sed '5a new line' file.txt 在第 5 行后添加 new line
sed '行号i 新增内容' 文件名在指定行前插入内容,例如 sed '3i header' data.txt 在第 3 行前插入 header
cat 文件名 | sed 命令处理其他命令的输出,例如 ls -l | sed 's/^/file: /' 给 ls 输出每行前加 file: 前缀

(4)awk

awk '{print $列数}' 文件名

按列分割文件内容并打印指定列(默认以空格 / 制表符分割,$0 表示整行,$1 第一列,以此类推),例如 awk '{print $1, $3}' data.txt 打印第 1 列和第 3 列

awk -F '分隔符' '{print $n}' 文件名

自定义列分隔符(如逗号、冒号),例如 awk -F ',' '{print $2}' csvfile.csv 以逗号分割并打印第 2 列

awk '/关键词/ {print $0}' 文件名

打印包含 “关键词” 的行,例如 awk '/error/ {print $0}' log.txt 提取所有含 error 的行

awk '条件 {动作}' 文件名

满足条件时执行动作,例如 awk '$3 > 100 {print $1}' data.txt 打印第 3 列值大于 100 的行的第 1 列

命令 | awk 命令

处理其他命令的输出,例如 ls -l | awk '{print $9, $5}' 提取文件名(第 9 列)和大小(第 5 列)

awk -v 变量=值 '命令' 文件名

在 awk 中定义自定义变量,例如 awk -v threshold=50 '$2 > threshold {print $0}' scores.txt 用变量作为阈值

awk 'BEGIN{动作} {处理行} END{动作}' 文件名

BEGIN 在处理文件前执行(如初始化),END 在处理完所有行后执行(如统计结果),例如 awk 'BEGIN{sum=0} {sum+=$2} END{print sum}' nums.txt 计算第 2 列总和

awk '{print NR, $0}' 文件名

打印每行内容并在前面添加行号(NR 表示当前行号),例如 awk '{print NR ": " $0}' script.sh 给代码行加编号

awk 'NF > 0 {print $0}' 文件名

过滤空行(NF 表示当前行的列数,NF > 0 表示非空行),例如 awk 'NF > 0 {print}' messy.txt 去除空行

awk '!a[$1]++' 文件名

去除指定列的重复行(保留第一次出现的行),例如 awk '!a[$2]++' users.txt 按第 2 列去重

awk -f 脚本文件 文件名

从外部文件读取 awk 命令(适合复杂逻辑),例如 awk -f process.awk data.txt 执行 process.awk 中的处理逻辑

(5)sort

sort 文件名

按字典序(字符 ASCII 码) 对文件内容逐行排序,默认升序,例如 sort logs.txt 对日志文件按行首字符排序

sort -n 文件名

按数值大小排序(而非字典序),解决 “10 排在 2 前面” 的问题,例如 sort -n numbers.txt 对数值列表正确升序排列

sort -r 文件名

按指定规则反向排序(默认升序→降序),可与 -n/-k 等参数组合,例如 sort -nr scores.txt 对分数按数值降序排列

sort -k 列数 文件名

按文件中的第 N 列排序(默认以空格 / 制表符分隔列),例如 sort -k 3 data.txt 按第 3 列字典序排序,sort -n -k 2 stats.txt 按第 2 列数值升序排序

sort -u 文件名

排序后去除重复行(仅保留第一次出现的行),等价于 `sort 文件名

sort -t '分隔符' -k 列数 文件名

自定义列的分隔符(如逗号、冒号),配合 -k 按指定列排序,例如 sort -t ',' -k 2 csvfile.csv 以逗号为分隔符,按第 2 列字典序排序

sort -o 输出文件 输入文件

将排序结果写入指定文件(而非默认输出到终端),避免覆盖原文件,例如 sort -n numbers.txt -o sorted_numbers.txt 将数值排序结果保存到新文件

sort -f 文件名

排序时忽略字符大小写(默认区分大小写,如 A 在 a 前面),例如 sort -f words.txt 让 Apple 和 apple 按相同字母序排序

sort -b 文件名

排序时忽略每行开头的空格 / 制表符(默认行首空格会参与排序),例如 sort -b messy_data.txt 避免行首空格导致的排序偏差

sort -c 文件名

仅检查文件是否按当前规则排序,不输出排序结果:若已排序则无输出,若未排序则提示第一个未排序的行,例如 sort -nc numbers.txt 检查数值列表是否已升序排列

sort -M 文件名

按英文月份缩写排序(如 Jan→Feb→Mar),例如 sort -M dates.txt 对包含 “Jan 2024”“Mar 2024” 的行按月份顺序排序

` 命令

管道 | 组合

(6)uniq

sort 文件名 | uniq

去除连续重复的行(需先排序使重复行相邻),例如 sort logs.txt | uniq 得到去重后的日志行

uniq -u 文件名

只输出不重复的行(仅出现一次的行),例如 sort data.txt | uniq -u 提取仅出现一次的数据

uniq -d 文件名

只输出重复出现的行(至少出现两次),例如 sort names.txt | uniq -d 找出重复的姓名

uniq -c 文件名

显示每行内容并在前面添加出现次数,例如 sort access.log | uniq -c 统计每个访问记录的出现次数

uniq -i 文件名

比较时忽略大小写(视 A 和 a 为相同内容),例如 sort words.txt | uniq -i 合并大小写重复的单词

uniq -f N 文件名

比较时忽略前 N 列内容(按后续内容判断重复),例如 sort logs.txt | uniq -f 2 跳过前 2 列后去重

uniq -s N 文件名

比较时忽略每行前 N 个字符,例如 sort codes.txt | uniq -s 3 跳过前 3 个字符后去重

uniq -w N 文件名

判断重复时只比较每行前 N 个字符,例如 sort ids.txt | uniq -w 5 按前 5 个字符去重

5、进程管理

(1)ps

ps aux

显示系统中所有进程的详细信息:a 显示所有用户进程,u 显示用户及进程详细信息,x 包含无终端的进程,例如 ps aux 常用于查看系统整体进程状态

ps -ef

显示所有进程的完整格式信息:-e 等价于 -A(显示所有进程),-f 显示完整格式(包括 UID、PPID、CMD 等),例如 `ps -ef grep nginx` 查找 nginx 相关进程

ps -l

显示当前终端相关进程的详细信息(长格式),包含进程状态、优先级等,例如 ps -l 查看当前用户在当前终端的进程详情

ps -ef | grep 进程名

过滤并查看指定进程的信息,例如 `ps -ef grep python` 查找所有 python 进程

ps -T -p 进程ID

查看指定进程(-p 指定 PID)的所有线程(-T 显示线程),例如 ps -T -p 1234 查看 PID 为 1234 的进程包含的线程

ps aux --sort=-%cpu

按 CPU 使用率降序排列进程(-%cpu 表示降序,%cpu 升序),例如 ps aux --sort=-%cpu 快速定位高 CPU 占用进程

ps aux --sort=-%mem

按内存使用率降序排列进程,例如 ps aux --sort=-%mem 识别高内存占用进程

ps -o 字段1,字段2 进程ID

只显示指定字段的信息(如 PID、% cpu、cmd 等),例如 ps -o pid,%mem,cmd -p 1234 查看进程 1234 的 PID、内存占比和命令

ps -a

显示所有终端相关的进程(不包括无终端进程),例如 ps -a 查看与终端关联的所有用户进程

ps -x

显示无终端(daemon 进程)的进程,例如 ps -x 查看后台运行的守护进程

ps -u 用户名

只显示指定用户的进程,例如 ps -u www-data 查看 www-data 用户运行的进程

ps -L 进程ID

显示指定进程的线程 ID(LWP)和线程状态,例如 ps -L -p 1234 查看进程 1234 的线程 ID 列表

(2)top

top

实时动态显示系统进程状态(默认每 3 秒刷新一次),按 CPU 使用率降序排列,顶部显示系统整体资源(CPU、内存、负载等)

top -p 进程ID

只监控指定 PID 的进程,例如 top -p 1234 专注查看 PID 为 1234 的进程资源占用

top -u 用户名

只显示指定用户的进程,例如 top -u www-data 监控 www-data 用户运行的进程

top -d 秒数

自定义刷新时间间隔(单位:秒),例如 top -d 5 每 5 秒刷新一次进程信息

top -H -p 进程ID

查看指定进程的所有线程(-H 显示线程级信息),例如 top -H -p 1234 分析进程 1234 的线程资源占用

top -b

以非交互式批处理模式运行,适合输出到文件或管道处理,例如 top -b -n 1 > top_snapshot.txt 保存当前进程快照

top -n 次数

限定刷新次数后自动退出,例如 top -n 3 刷新 3 次后退出,常与 -b 配合用于脚本

top -c

显示进程的完整命令路径及参数(默认只显示简化命令名),例如 top -c 查看进程的详细启动命令

top -i

不显示闲置(Zombie 状态)的进程,使列表更简洁,例如 top -i 只关注活跃进程

top -o 字段

按指定字段排序(如 % CPU、% MEM 等),例如 top -o %MEM 按内存使用率降序排列进程

(3)kill

kill 进程ID

向指定进程发送 TERM(15)信号,请求进程正常终止(允许进程清理资源),例如 kill 1234 终止 PID 为 1234 的进程

kill -9 进程ID

发送 KILL(9)信号,强制终止进程(不允许进程清理,可能导致数据丢失),例如 kill -9 5678 强制杀死无响应的进程

kill -15 进程ID

等同于默认行为,发送 TERM 信号,请求进程优雅退出,例如 kill -15 9012 让进程安全终止

kill -1 进程ID

发送 HUP(1)信号,通常用于让进程重新加载配置文件(不终止进程),例如 kill -1 1234 让 Nginx 重读配置

kill -u 用户名

终止指定用户的所有进程,例如 kill -u testuser 结束 testuser 用户的所有进程

killall 进程名

通过进程名终止所有匹配进程(需安装 psmisc 工具包),例如 killall nginx 终止所有 nginx 进程

pkill 进程名

按进程名模式匹配并终止进程(支持通配符),例如 pkill -f "python script.py" 终止运行特定脚本的 python 进程

kill -l

显示系统支持的所有信号编号及名称,例如 kill -l 可查看HUP(1)、TERM(15)等信号对照表

kill -2 进程ID

发送 INT(2)信号,等同于按下 Ctrl+C,请求进程中断,例如 kill -2 3456 模拟终端中断操作

kill -18 进程ID

发送 CONT(18)信号,恢复被暂停的进程(与 -19 配合使用),例如 kill -18 7890 继续运行暂停的进程

kill -19 进程ID

发送 STOP(19)信号,暂停进程运行(不终止,可通过 -18 恢复),例如 kill -19 7890 暂停进程执行

(4)pkill

kill 和 pkill 都是 Linux 中用于终止进程的命令,但核心区别在于指定进程的方式:kill 需要通过进程 ID(PID)来精确指定要终止的进程,使用时需先通过 ps 等命令获取目标 PID(如 kill 1234);而 pkill 则可以直接通过进程名、用户名等特征匹配进程(如 pkill nginx),无需手动查找 PID,更适合批量终止符合条件的进程,但其匹配可能存在模糊性,需注意避免误杀。

pkill 进程名

根据进程名(或命令名)终止匹配的进程,例如 pkill nginx 终止所有名称包含 “nginx” 的进程

pkill -f "进程参数"

匹配包含指定参数的完整命令行(而非仅进程名),例如 pkill -f "python app.py" 终止运行app.py的 Python 进程

pkill -u 用户名

终止指定用户的所有进程,例如 pkill -u testuser 结束 testuser 用户的所有进程

pkill -9 进程名

向匹配进程发送KILL(9)信号,强制终止进程,例如 pkill -9 java 强制杀死所有 Java 进程

pkill -i 进程名

匹配进程名时忽略大小写,例如 pkill -i Nginx 同时匹配 “nginx”“NGINX” 等大小写形式的进程

pkill -t 终端

终止指定终端(如tty1、pts/0)上的所有进程,例如 pkill -t pts/1 结束终端 pts/1 上的进程

pkill -l 进程名

仅显示匹配的进程名(不终止进程),用于预览匹配结果,例如 pkill -l sshd 查看将被匹配的 sshd 进程名

pkill -n 进程名

只终止最新启动的匹配进程,例如 pkill -n python 终止最近启动的 Python 进程

pkill -o 进程名

只终止最早启动的匹配进程,例如 pkill -o mysql 终止最早启动的 MySQL 进程

pkill -SIGTERM 进程名

向匹配进程发送指定信号(如SIGTERM正常终止、SIGHUP重载配置),例如 pkill -SIGHUP nginx 让 Nginx 重读配置

(5)bg/fg

bg

将最近暂停(按 Ctrl+Z)的前台进程切换到后台运行(后台进程仍会占用终端输出),例如:先按 Ctrl+Z 暂停 vim test.txt,再执行 bg 让 vim 在后台继续运行

fg

将最近后台运行的进程(或暂停的后台进程)切换到前台,重新占据终端输入输出,例如:执行 bg 后若需恢复到前台,直接输入 fg 即可重新操作进程

bg %任务编号

切换指定编号的后台任务到后台运行,任务编号可通过 jobs 命令查看(编号前带 []),例如:bg %2 将编号为 2 的暂停任务切换到后台

fg %任务编号

切换指定编号的后台任务到前台,例如:通过 jobs 看到 [1]+ Stopped python script.py,执行 fg %1 可将该 Python 进程恢复到前台

bg %任务名

按任务名称(进程名)切换到后台,例如:bg %vim 将名称包含 “vim” 的暂停任务切换到后台(需确保任务名唯一,避免歧义)

fg %任务名

按任务名称切换到前台,例如:fg %python 将名称包含 “python” 的后台任务恢复到前台(适合任务编号较多时快速定位)

jobs ; bg

先通过 jobs 查看所有后台 / 暂停任务的编号和状态,再用 bg 切换目标任务,例如:执行 jobs 确认任务编号后,再 bg %1 操作,避免误切换

(6)jobs

jobs

显示当前终端中所有后台任务(包括运行中、暂停状态)的编号、状态和命令,例如 jobs 输出形如 [1]+ Running python script.py &

jobs -l

除任务编号和状态外,额外显示每个任务的进程 ID(PID),例如 jobs -l 可同时查看任务编号和对应的 PID,方便结合 kill 命令操作

jobs -p

只输出所有后台任务的进程 ID(PID),不显示其他信息,适合脚本中批量处理,例如 `jobs -p xargs kill` 终止所有后台任务

jobs -n

只显示自上次查询后状态发生变化的任务,例如 jobs -n 快速定位状态改变的任务(如从运行变为暂停)

jobs -r

只列出处于运行状态的后台任务,过滤暂停状态的任务,例如 jobs -r 查看当前活跃的后台进程

jobs -s

只列出处于暂停状态(被 Ctrl+Z 暂停)的任务,例如 jobs -s 查看需要通过 bg 或 fg 恢复的任务

jobs %任务编号

显示指定编号的任务详情,例如 jobs %2 只查看编号为 2 的任务状态

jobs %任务名

显示名称包含指定字符串的任务,例如 jobs %python 查看名称含 “python” 的任务(需名称唯一)

6、系统管理

(1)uname

uname -a

显示系统所有相关信息,包括内核名称、主机名、内核版本、硬件架构等,例如 uname -a 输出完整的系统标识信息

uname -r

仅显示内核版本号,例如 uname -r 输出 5.4.0-150-generic(不同系统版本不同)

uname -m

显示机器硬件架构,例如 uname -m 在 64 位系统输出 x86_64,32 位系统输出 i686

uname -s

显示内核名称,例如 Linux 系统输出 Linux,Unix 系统可能输出 SunOS 等

uname -n

显示网络节点上的主机名,例如 uname -n 输出当前系统的主机名(如 server01)

uname -v

显示内核版本的详细信息(包括编译时间等),例如 uname -v 输出内核编译相关的时间戳和版本细节

uname -p

显示处理器类型,例如 uname -p 可能输出 x86_64 或 unknown(部分系统不支持)

uname -o

显示操作系统名称,例如 Linux 系统通常输出 GNU/Linux

(2)df

df -h

以易读的单位(GB、MB 等)显示磁盘空间使用情况,例如 df -h 输出 /dev/sda1 50G 15G 35G 30% /

df

显示所有已挂载文件系统的磁盘使用情况,默认单位为块(通常 1 块 = 512 字节),例如 df 输出原始块数值

df -a

显示包括虚拟文件系统(如tmpfs、sysfs)在内的所有文件系统,例如 df -a 会列出/proc等特殊文件系统

df -T

额外显示每个文件系统的类型(如ext4、xfs、tmpfs),例如 df -T 输出包含Type列

df -H

以 1000 为基数的人类可读格式(1GB=1000MB),与-h(1GB=1024MB)略有差异,例如 df -H 适合需要 SI 标准单位的场景

df -i

显示 inode 的使用情况(而非磁盘空间),包括总 inode 数、已使用、可用及使用率,例如 df -i 可排查 inode 耗尽问题

df -k

以 KB 为单位显示磁盘使用情况(等价于默认块大小转换),例如 df -k 输出以 KB 为单位的数值

df /目录

只显示指定目录所在文件系统的使用情况,例如 df /home 仅查看/home分区的磁盘使用

df -l

只显示本地挂载的文件系统(排除网络文件系统如 NFS),例如 df -l 过滤掉远程挂载的磁盘

df -P

以 POSIX 标准格式输出(固定列宽,适合脚本解析),例如 df -P 输出格式更便于脚本处理

(3)du

du -h

以易读单位(GB、MB、KB)显示文件 / 目录的磁盘占用大小,例如 du -h document.pdf 显示文件大小为 2.5M

du -sh 目录名

仅显示指定目录的总大小(不列出子目录详情),例如 du -sh /home 输出 /home 目录的总占用空间

du -h --max-depth=N 目录名

显示目录下 N 级子目录的大小,例如 du -h --max-depth=1 /var 只显示/var下一级子目录的大小

du -a

同时显示目录和其中所有文件的大小(默认只显示目录),例如 du -a ~/Downloads 列出下载目录下所有文件和子目录大小

du -h *

显示当前目录下所有文件和子目录的大小,例如 du -h * 快速对比当前目录下各项目的占用空间

du -c 目录/*

显示各目录 / 文件大小并在最后增加总大小,例如 du -hc /tmp/* 列出/tmp下内容大小并显示总和

du -k 文件名

以 KB 为单位显示大小(精确到 KB),例如 du -k log.txt 输出 128 log.txt(表示 128KB)

du -m 目录名

以 MB 为单位显示大小(精确到 MB),例如 du -m /var/log 以 MB 为单位展示日志目录大小

du -t 大小 目录名

只显示大于指定大小的文件 / 目录,例如 du -h -t 1G /data 找出/data下大于 1GB 的目录

du -d N 目录名

等同于--max-depth=N,指定显示的目录深度,例如 du -hd 2 /etc 显示/etc下两级目录的大小

du -x 目录名

忽略其他文件系统的内容(如挂载的外部磁盘),例如 du -xh / 只统计根分区内的文件大小

(4)free

free -h

以易读单位(GB、MB)显示内存使用情况,自动转换最适合的单位,例如 free -h 输出 Mem: 15.5G 8.2G 3.1G 4.2G 52%

free

以 KB 为单位显示内存、交换分区的总容量、已使用、空闲等信息,例如 free 输出原始 KB 数值

free -m

以 MB 为单位显示内存使用情况,例如 free -m 输出 Mem: 15872 8345 3167 4360 52%

free -g

以 GB 为单位显示内存使用情况(四舍五入),例如 free -g 输出 Mem: 15 8 3 4 52%

free -s 秒数

每隔指定秒数刷新一次内存信息,例如 free -s 5 每 5 秒更新一次内存使用状态(按Ctrl+C退出)

free -t

在输出末尾增加一行 “总计”,汇总内存和交换分区的总容量,例如 free -ht 显示各列的总和

free -w

额外区分 “缓冲区(buffers)” 和 “缓存(cache)” 的详细使用情况,例如 free -hw 拆分显示更细致的内存占用

free -b

以字节(B)为单位显示内存使用情况,适合需要精确数值的场景,例如 free -b 输出原始字节数

free -k

明确以 KB 为单位显示(与默认无参数行为一致),例如 free -k 等价于 free

(5)top

top -p 进程ID

仅监控指定 PID 的进程,例如 top -p 1234 专注查看特定进程的资源占用

top -u 用户名

仅显示指定用户的进程,例如 top -u www-data 监控 Web 服务相关进程

top -d 秒数

自定义刷新时间间隔(单位:秒),例如 top -d 3 每 3 秒刷新一次

top -H -p 进程ID

显示指定进程的所有线程,例如 top -H -p 1234 分析进程的线程级 CPU 占用

top -b -n 次数

以非交互式模式运行并输出指定次数后退出,例如 top -b -n 1 > top.log 保存进程快照

top -c

显示进程的完整命令路径及参数,例如 top -c 查看进程的详细启动命令

(6)htop

htop 是 top 的增强版,更直观地展示系统资源。

htop

交互式进程监控工具(需单独安装),提供彩色界面、鼠标操作支持,默认展示更多系统指标和进程详情

htop -p 进程ID

过滤并高亮显示指定 PID 的进程,例如 htop -p 5678 快速定位目标进程

htop -u 用户名

过滤显示指定用户的进程,支持模糊匹配,例如 htop -u john 查看 john 的所有进程

htop -d 毫秒数

自定义刷新间隔(单位:毫秒),例如 htop -d 2000 每 2 秒刷新一次

htop -t

以树形结构展示进程与线程的关系,例如 htop -t 直观查看进程的线程层级

htop --sort-key 字段

按指定字段(如PERCENT_CPU、RESIDENT_MEM)排序,例如 htop --sort-key PERCENT_MEM 按内存使用率排序

htop -s 字段

等价于 --sort-key,按指定字段排序,例如 htop -s CPU 按 CPU 使用率降序排列

(7)man

man 命令名

查看指定命令的手册页(默认显示第 1 章节),例如 man ls 查看ls命令的帮助文档

man -k 关键词

搜索包含关键词的所有手册页摘要(等价于apropos命令),例如 man -k "file system" 搜索与文件系统相关的命令

man 章节号 命令名

查看命令在特定章节的手册页(手册分 8 个章节,1 为用户命令,2 为系统调用等),例如 man 2 open 查看open系统调用的手册

man -f 命令名

显示命令所属的手册章节及简要描述(等价于whatis命令),例如 man -f passwd 显示passwd在第 1 和第 5 章节的手册信息

man -p 格式 命令名

指定手册页的预处理程序(如groff、tbl),用于特殊格式的手册页处理,例如 man -p t ls 使用tbl处理表格

man -a 命令名

依次显示命令在所有相关章节的手册页,例如 man -a passwd 先显示第 1 章,按q后显示第 5 章

man -t 命令名

将手册页转换为 PostScript 格式(需配合打印机或转换工具),例如 man -t ls > ls.ps 生成 PDF 打印文件

man -w 命令名

仅显示手册页文件的路径,不打开手册,例如 man -w ls 输出/usr/share/man/man1/ls.1.gz

man -C 配置文件 命令名

使用自定义配置文件替代默认的man.config,例如 man -C my_man.conf grep 用自定义配置查看grep手册

(8)date

date

显示当前系统日期和时间,默认格式如 Sun Sep 14 15:30:22 CST 2025

date +"%Y-%m-%d"

按指定格式显示日期(年 - 月 - 日),例如 date +"%Y-%m-%d" 输出 2025-09-14

date +"%H:%M:%S"

按指定格式显示时间(时:分: 秒),例如 date +"%H:%M:%S" 输出 15:32:45

date +"%Y-%m-%d %H:%M:%S"

同时显示日期和时间,格式如 2025-09-14 15:33:10,常用于日志记录

date -s "2025-09-14 15:35:00"

手动设置系统日期和时间,需 root 权限,例如 date -s "2025-09-14 15:35:00" 同步系统时间

date -d "2 days ago"

显示相对当前时间的日期 / 时间,例如 date -d "2 days ago" 输出 2 天前的日期

date +%s

显示当前时间的 Unix 时间戳(从 1970-01-01 00:00:00 UTC 起的秒数),例如 date +%s 输出 1752682500

date -d @1752682500

将 Unix 时间戳转换为可读日期时间,例如 date -d @1752682500 输出对应时间

date +"%A, %B %d, %Y"

显示完整星期、月份名称,例如 date +"%A, %B %d, %Y" 输出 Sunday, September 14, 2025

date -u

显示 UTC(世界协调时间),而非本地时间,例如 date -u 输出 UTC 时区的当前时间

date +"%z"

显示当前时区相对于 UTC 的偏移量,例如 date +"%z" 输出 +0800(表示东八区)

(9)hostname

hostname

显示当前系统的主机名,例如 hostname 输出 server01

hostname 新主机名

临时修改主机名(重启后失效),需 root 权限,例如 hostname web-server 将主机名临时改为 web-server

hostname -i

显示主机名对应的 IP 地址(优先 IPv4),例如 hostname -i 输出 192.168.1.100

hostname -I

显示系统所有网络接口的 IP 地址(空格分隔),例如 hostname -I 输出 192.168.1.100 10.0.0.5

hostname -f

显示主机的完全限定域名(FQDN),例如 hostname -f 输出 server01.example.com

hostname -s

显示主机名的短格式(去除域名部分),例如 hostname -s 从server01.example.com中输出server01

hostname -d

显示主机名中的域名部分(若配置),例如 hostname -d 从server01.example.com中输出example.com

hostname -A

显示所有已配置的完全限定域名(空格分隔),例如 hostname -A 输出多个关联的 FQDN

hostname -y

显示系统的 NIS(Network Information Service)域名(较少使用),例如 hostname -y 输出 NIS 域名称

7、网络操作

(1)netstat

netstat -tuln

显示所有监听状态的 TCP(-t)和 UDP(-u)端口,以数字形式(-n)显示地址和端口(不解析域名),例如 netstat -tuln 快速查看系统开放的端口

netstat -tulnp

在 -tuln 基础上,显示占用端口的进程 ID(PID)和进程名(-p),需 root 权限,例如 netstat -tulnp 查看哪个进程占用了 80 端口

netstat -an

显示所有 TCP/UDP 连接(包括监听和非监听状态,-a),以数字形式显示(-n),例如 netstat -an 查看所有网络连接的详细信息

netstat -ntlp

仅显示监听状态的 TCP 端口(-t),数字形式(-n)及对应进程(-p),例如 netstat -ntlp 专注查看 TCP 服务端口及进程

netstat -nr

显示内核路由表(-r),以数字形式显示 IP(-n,不解析主机名),例如 netstat -nr 查看系统路由配置,类似 route -n

netstat -s

显示网络协议(TCP、UDP、ICMP 等)的统计数据,例如 netstat -s 查看 TCP 重传次数、UDP 错误数等

netstat -i

显示所有网络接口的信息(如 MTU、接收 / 发送数据包数),例如 netstat -i 查看网卡流量统计

`netstat -ap

管道 + grep 过滤,查找指定端口的连接或进程,例如 `netstat -ap grep 8080` 查看 8080 端口的占用情况

netstat -tapen

显示所有 TCP 连接(-t)、关联的进程(-p)、扩展信息(-a)、网卡信息(-e),数字形式(-n),适合详细排查网络问题

netstat -c

持续刷新显示网络状态(每秒一次),例如 netstat -c -tuln 实时监控端口连接变化

(2)ifconfig

ifconfig

显示所有活动网络接口的配置信息(IP 地址、MAC 地址、子网掩码等),例如 ifconfig 输出 eth0、lo 等接口的状态

ifconfig 接口名

仅显示指定网络接口的详细信息,例如 ifconfig eth0 查看以太网接口 eth0 的配置

ifconfig 接口名 up

激活指定网络接口(相当于启动网卡),例如 ifconfig eth0 up 启用 eth0 接口

ifconfig 接口名 down

禁用指定网络接口(相当于关闭网卡),例如 ifconfig eth0 down 关闭 eth0 接口

ifconfig 接口名 IP地址

为指定接口配置 IP 地址(临时生效),例如 ifconfig eth0 192.168.1.100 给 eth0 分配 IP

ifconfig 接口名 IP地址 netmask 子网掩码

配置 IP 地址的同时指定子网掩码,例如 ifconfig eth0 192.168.1.100 netmask 255.255.255.0

ifconfig 接口名 hw ether MAC地址

临时修改网络接口的 MAC 地址(需先禁用接口),例如 ifconfig eth0 down; ifconfig eth0 hw ether 00:11:22:33:44:55; ifconfig eth0 up

ifconfig 接口名 mtu 数值

调整网络接口的最大传输单元(MTU),例如 ifconfig eth0 mtu 1500 设置 MTU 为 1500 字节

ifconfig 接口名:编号 IP地址

为接口创建虚拟子接口(多 IP 配置),例如 ifconfig eth0:1 192.168.1.101 给 eth0 添加第二个 IP

ifconfig -a

显示包括未激活接口在内的所有网络接口,例如 ifconfig -a 查看系统中所有网卡(无论是否启用)

(3)ip

ip addr

显示所有网络接口的 IP 地址、MAC 地址等配置信息,等价于 ip address show,例如 ip addr 查看所有网卡的 IP 配置

ip addr show 接口名

显示指定网络接口的详细地址信息,例如 ip addr show eth0 查看 eth0 的 IP 和状态

ip link set 接口名 up

激活指定网络接口(启用网卡),例如 ip link set eth0 up 启动 eth0 接口

ip link set 接口名 down

禁用指定网络接口(关闭网卡),例如 ip link set eth0 down 关闭 eth0 接口

ip addr add IP地址 dev 接口名

为指定接口添加 IP 地址(临时生效),例如 ip addr add 192.168.1.100/24 dev eth0

ip addr del IP地址 dev 接口名

从指定接口删除 IP 地址,例如 ip addr del 192.168.1.100/24 dev eth0

ip route

显示系统路由表,等价于 ip route show,例如 ip route 查看默认网关和子网路由

ip route add 目标网段 via 网关 dev 接口名

添加静态路由,例如 ip route add 10.0.0.0/24 via 192.168.1.1 dev eth0

ip route del 目标网段

删除指定静态路由,例如 ip route del 10.0.0.0/24

ip link show

显示所有网络接口的链路层信息(MAC 地址、状态等),例如 ip link show 查看所有网卡的 MAC 和状态

ip link set 接口名 mac 新MAC地址

临时修改网络接口的 MAC 地址(需先禁用接口),例如 ip link set eth0 down; ip link set eth0 mac 00:11:22:33:44:55; ip link set eth0 up

ip neigh

显示 ARP 缓存(IP 与 MAC 地址映射),等价于 arp -a,例如 ip neigh 查看局域网内设备的 ARP 记录

ip neigh add IP地址 lladdr MAC地址 dev 接口名

手动添加静态 ARP 记录,例如 ip neigh add 192.168.1.2 lladdr 00:aa:bb:cc:dd:ee dev eth0

ip -s link

显示网络接口的流量统计(接收 / 发送数据包数、错误数等),例如 ip -s link show eth0 查看 eth0 的流量详情

(4)ping

ping 目标IP/域名

向目标发送 ICMP 回声请求包,默认持续发送(按Ctrl+C停止),用于测试网络连通性,例如 ping www.baidu.com 测试与百度服务器的连接

ping -c 次数 目标

发送指定次数的 ICMP 包后自动停止,例如 ping -c 4 192.168.1.1 只发送 4 个包并统计结果

ping -i 间隔秒数 目标

指定发送数据包的时间间隔(默认 1 秒),例如 ping -i 2 8.8.8.8 每 2 秒发送一个包

ping -s 数据包大小 目标

指定 ICMP 数据包的大小(单位:字节,默认 56 字节),例如 ping -s 1024 example.com 发送 1024 字节的测试包

ping -W 超时秒数 目标

指定等待响应的超时时间(单位:秒),例如 ping -W 3 10.0.0.1 3 秒内无响应则视为超时

ping -t TTL值 目标

指定 IP 数据包的 TTL(生存时间)值,测试数据包经过的路由跳数,例如 ping -t 10 google.com 设置 TTL 为 10

ping -q 目标

仅显示最终统计结果,不输出每个包的响应信息,例如 ping -q -c 5 192.168.1.1 只显示汇总数据

ping -f 目标

以最快速度发送数据包(仅 root 可用),用于压力测试,例如 ping -f 192.168.1.1 快速发送大量包(谨慎使用)

ping -6 目标

使用 IPv6 协议发送测试包,例如 ping -6 2400:da00::6666 测试 IPv6 地址的连通性

ping -I 接口名/IP 目标

从指定网络接口或源 IP 发送数据包,例如 ping -I eth0 192.168.1.1 从 eth0 接口发送测试包

ping -r 目标

直接发送数据包到本地网络目标,不经过网关,例如 ping -r 192.168.1.2 测试同一局域网内的设备

(5)curl

curl URL

向指定 URL 发送 HTTP GET 请求,输出响应内容到终端,例如 curl https://example.com 获取网页内容

curl -O URL

下载 URL 指向的文件,保存为远程文件名(URL 路径中的文件名),例如 curl -O https://example.com/file.zip 保存为 file.zip

curl -o 文件名 URL

下载文件并指定本地保存的文件名,例如 curl -o localfile.txt https://example.com/data.txt 自定义保存名称

curl -L URL

自动跟随 HTTP 重定向(3xx 状态码),例如 curl -L https://short.url 会跳转至最终目标 URL

curl -X POST -d "数据" URL

发送 HTTP POST 请求并携带数据,例如 curl -X POST -d "name=test" https://api.example.com/submit 提交表单数据

curl -H "头信息" URL

向请求添加自定义 HTTP 头,例如 curl -H "Content-Type: application/json" -H "Authorization: Bearer token" URL 设置 JSON 类型和认证头

curl -u 用户名:密码 URL

使用 HTTP 基础认证(Basic Auth)访问需要登录的资源,例如 curl -u admin:pass123 https://example.com/admin 提交用户名密码

curl -s URL

不显示进度条和错误信息,仅输出响应内容,适合脚本中使用,例如 curl -s https://example.com/status 安静获取状态

curl -S URL

与-s配合使用,静默模式下仍显示错误信息,例如 curl -sS https://invalid.url 仅在失败时显示错误

curl -k URL

跳过 SSL 证书验证(不建议生产环境),用于测试 HTTPS 服务,例如 curl -k https://self-signed.example.com 访问自签名证书站点

curl -I URL

发送 HEAD 请求,仅获取 HTTP 响应头信息,例如 curl -I https://example.com 查看状态码、服务器类型等

curl -C - -O URL

继续之前中断的下载(需配合-O),例如 curl -C - -O https://example.com/largefile.iso 恢复中断的大文件下载

curl -x 代理:端口 URL

通过指定代理服务器发送请求,例如 curl -x http://proxy:8080 https://example.com 走代理访问目标

curl --data-raw '@文件路径' URL

读取本地文件内容作为 POST 数据发送,例如 curl -X POST --data-raw '@data.json' https://api.example.com/upload 提交 JSON 文件

curl -v URL

显示请求和响应的详细过程(包括 TCP 握手、HTTP 头),用于调试,例如 curl -v https://example.com 查看完整通信细节

(6)wget

wget 网址

下载指定 URL 的文件到当前目录,例如 wget https://example.com/file.zip

wget -O 文件名 网址

指定下载文件的保存名称,例如 wget -O document.pdf https://example.com/report.pdf

wget -c 网址

断点续传,继续未完成的下载,例如 wget -c https://example.com/large_file.iso

wget -r -np 网址

递归下载网站内容,不追溯至父目录,例如 wget -r -np https://example.com/docs/

wget -b 网址

后台下载,输出信息保存到 wget-log,例如 wget -b https://example.com/bigfile.tar.gz

wget -q 网址

安静模式下载,不显示输出信息,例如 wget -q https://example.com/update.tar

wget -i 文件名

从文件中读取多个 URL 进行批量下载,例如 wget -i download_list.txt

wget --limit-rate = 速度 网址

限制下载速度(单位:k 或 m),例如 wget --limit-rate=500k https://example.com/file

wget -U 浏览器标识 网址

模拟指定浏览器的 User-Agent,例如 wget -U "Mozilla/5.0" https://example.com

wget --no-check-certificate 网址

忽略 SSL 证书验证(不推荐),例如 wget --no-check-certificate https://example.com

wget -P 目录 网址

指定文件下载后的保存目录,例如 wget -P ~/downloads https://example.com/image.jpg

wget -t 次数 网址

设置最大尝试下载次数(0 为无限),例如 wget -t 3 https://example.com/unstablefile

(7)ssh

ssh 用户名 @主机地址以指定用户身份登录远程主机,例如 ssh root@192.168.1.1
ssh 主机地址以当前用户名登录远程主机,例如 ssh example.com
ssh -p 端口号 用户名 @主机地址指定端口号登录远程主机,例如 ssh -p 2222 admin@10.0.0.5
ssh -i 密钥文件 用户名 @主机地址使用指定密钥文件登录,例如 ssh -i ~/.ssh/id_rsa user@server.com
ssh -X 用户名 @主机地址启用 X11 转发(图形界面转发),例如 ssh -X user@remotehost
ssh -v 用户名 @主机地址显示详细连接过程(调试用),例如 ssh -v root@192.168.1.100
ssh 用户名 @主机地址 命令在远程主机执行单条命令后退出,例如 ssh user@host "ls -l /home"
ssh -N -f -L 本地端口:目标主机:目标端口 用户名 @跳板机建立本地端口转发(隧道),例如 ssh -N -f -L 8080:google.com:80 user@jump server
ssh -N -f -R 远程端口:目标主机:目标端口 用户名 @远程主机建立远程端口转发,例如 ssh -N -f -R 8080:localhost:80 user@public.server
ssh -o ServerAliveInterval=60 用户名 @主机地址保持 SSH 连接不中断(每 60 秒发送一次心跳),例如 ssh -o ServerAliveInterval=60 user@host
ssh-copy-id 用户名 @主机地址将本地公钥复制到远程主机(实现免密登录),例如 ssh-copy-id user@192.168.1.2
ssh -t 用户名 @主机地址 另一 ssh 命令通过跳板机登录目标主机,例如 ssh -t user@jump ssh user@target

(8)scp

scp 本地文件 用户名 @主机地址:远程路径将本地文件复制到远程主机,例如 scp /home/file.txt user@192.168.1.1:/tmp/
scp 用户名 @主机地址:远程文件 本地路径将远程文件复制到本地,例如 scp root@server.com:/var/logs.log ~/downloads/
scp -r 本地目录 用户名 @主机地址:远程路径递归复制本地目录到远程主机,例如 scp -r /home/docs user@10.0.0.5:/var/www/
scp -r 用户名 @主机地址:远程目录 本地路径递归复制远程目录到本地,例如 scp -r admin@example.com:/data ~/backup/
scp -P 端口号 本地文件 用户名 @主机地址:远程路径指定端口复制文件,例如 scp -P 2222 ./image.jpg user@host:/tmp/
scp 本地文件 1 本地文件 2 用户名 @主机地址:远程路径同时复制多个本地文件到远程,例如 scp file1.txt file2.pdf user@server:/docs/
scp 用户名 @主机 1: 文件 用户名 @主机 2: 路径在两个远程主机之间复制文件,例如 scp user1@host1:/data.txt user2@host2:/backup/
scp -i 密钥文件 本地文件 用户名 @主机地址:路径使用指定密钥文件进行复制,例如 scp -i ~/.ssh/id_rsa doc.txt user@host:/home/
scp -v 本地文件 用户名 @主机地址:路径显示详细传输过程(调试用),例如 scp -v largefile.iso user@server:/data/
scp -C 本地文件 用户名 @主机地址:路径启用压缩传输,例如 scp -C archive.tar.gz user@host:/tmp/

8、权限管理

(1)chmod

chmod 数字权限 文件名

通过 3 位或 4 位八进制数字设置文件 / 目录权限(用户、组、其他用户的读 / 写 / 执行权限),例如 chmod 755 script.sh 表示用户有读 / 写 / 执行权限,组和其他用户有读 / 执行权限

chmod u+rwx 文件名

为文件所有者(user)增加指定权限(r 读、w 写、x 执行),例如 chmod u+x file 给所有者增加执行权限

chmod g-rwx 文件名

从用户组(group)中移除指定权限,例如 chmod g-w doc.txt 取消组对文件的写权限

chmod o=r 文件名

为其他用户(others)直接设置指定权限(覆盖原有权限),例如 chmod o=r log.txt 仅允许其他用户读取文件

chmod a+x 文件名

为所有用户(all)增加指定权限,例如 chmod a+x app 让所有用户都能执行该应用

chmod -R 755 目录名

递归修改目录及目录下所有文件 / 子目录的权限,例如 chmod -R 755 /var/www 批量设置网站目录权限

chmod u+s 文件名

为可执行文件设置 SUID 权限(执行时临时获得文件所有者权限),例如 chmod u+s /usr/bin/passwd 允许普通用户修改密码(临时获得 root 权限)

chmod g+s 目录名

为目录设置 SGID 权限(子文件 / 目录继承父目录的组属性),例如 chmod g+s /data/share 确保共享目录下新建文件继承组权限

chmod +t 目录名

为公共目录设置粘滞位(仅文件所有者可删除自己的文件),例如 chmod +t /tmp 保护 /tmp 目录下的文件不被其他用户删除

chmod --reference=参考文件 目标文件

让目标文件的权限与参考文件完全一致,例如 chmod --reference=file1.txt file2.txt 使 file2 权限和 file1 相同

chmod -v 755 文件名

修改权限时显示详细信息,例如 chmod -v 644 config.ini 输出修改后的权限状态

(2)chown

chown 用户名 文件名

更改文件 / 目录的所有者为指定用户,例如 chown john file.txt 将 file.txt 的所有者改为 john

chown 用户名:组名 文件名

同时更改文件 / 目录的所有者和所属组,例如 chown john:devs script.sh 将所有者改为 john,所属组改为 devs

chown :组名 文件名

只更改文件 / 目录的所属组(保持所有者不变),例如 chown :admin data/ 将 data 目录的所属组改为 admin

chown -R 用户名 目录名

递归更改目录及目录下所有文件 / 子目录的所有者,例如 chown -R www-data /var/www 批量设置网站目录的所有者

chown -R 用户名:组名 目录名

递归更改目录及内容的所有者和所属组,例如 chown -R john:team project/ 批量修改项目目录的权限归属

chown --reference=参考文件 目标文件

让目标文件的所有者和所属组与参考文件一致,例如 chown --reference=template.txt newfile.txt 使 newfile 的归属和 template 相同

chown -v 用户名 文件名

修改归属时显示详细信息,例如 chown -v alice doc.pdf 输出修改后的所有者信息

chown -h 用户名 链接名

仅修改符号链接文件的所有者(不跟随链接指向的目标文件),例如 chown -h bob link_to_data 修改链接的所有者而非目标数据

http://www.dtcms.com/a/393036.html

相关文章:

  • 9.21 快速选择
  • 【常见集合】HashMap
  • Docker安装小白教程(阿里yum)
  • MySQL表结构变更详解:ALTER TABLE ADD COLUMN语法、最佳实践与避坑指南
  • 【LeetCode - 每日1题】设计电子表格
  • Spring 中 REQUIRED 事务的回滚机制详解
  • C++框架中基类修改导致兼容性问题的深度分析与总结
  • 学习笔记-SpringBoot项目配置
  • Java数据结构——时间和空间复杂度
  • 如何在接手新项目时快速上手?
  • Zynq开发实践(SDK之自定义IP2)
  • 数据库相关锻炼
  • PostgreSQL 入门与实践
  • pytorch基本运算-PyTorch.Tensor张量数据类型
  • 数据结构与算法 第三章 栈
  • Spring Boot 整合 MyBatis:从入门到企业级实践
  • FHook Java 层全函数 HOOK 框架
  • TDengine 聚合函数 STDDEV_POP 用户手册
  • 【 嵌入式Linux应用开发项目 | Rockit + FFmpeg+ Nginx】基于泰山派的IPC网络摄像头
  • 机器学习中的高准确、低召回
  • Go基础:Go基本数据类型详解
  • 项目管理(一)
  • 【STM8L101 执行函数FLASH_ProgramBlock出现问题】
  • ​​[硬件电路-278]:双向双电源电平转换收发器74AXP2T45DCH功能概述、管脚定义
  • 音视频同步的原理和实现方式
  • BUG调试案例十八:TPS5430输出震荡问题案例
  • Python读取Excel文件里面指定列中的指定范围行
  • C语言入门教程 | 阶段二:控制结构详解(条件语句与 switch 语句)
  • Linux 4.x hook系统调用的问题
  • 了解 Highcharts 响应式功能:构建适配各种屏幕的图表界面