一、最常见、跨命令通用的参数

Linux 常见命令参数「简写速查总结」

高频 + 通用性整理,重点记住这些,日常/面试基本够用 ✅


一、最常见、跨命令通用的参数

⚠️ 注意:并不是所有命令都支持,但大多数 GNU/Linux 命令含义一致

参数 全称 含义
-h human-readable / help 人类可读(或帮助,需看上下文)
-a all 显示所有(含隐藏文件)
-l long 长格式显示
-r recursive / reverse 递归(或反向)
-R recursive 递归(更常见)
-f force 强制
-i interactive 交互确认
-v verbose 显示详细过程
-q quiet 安静模式
-n number / no 数量 / 禁止某功能
-d directory 操作目录本身
-c command / count 执行命令 / 计数
-t time / type 时间 / 类型

二、文件 / 目录相关(ls / cp / mv / rm)

✅ ls

参数 含义
-a 显示隐藏文件
-l 详细信息
-h 人类可读大小
-R 递归显示子目录
-t 按时间排序
-S 按大小排序
-d 显示目录本身

✅ 常用组合:

ls -lah  

✅ cp

参数 含义
-r / -R 递归复制目录
-a 归档(保留属性)⭐
-f 强制覆盖
-i 覆盖前询问
-v 显示过程
-p 保留时间/权限

✅ 推荐:

cp -av src/ dest/  

✅ rm

参数 含义
-r 递归删除目录
-f 强制删除
-i 逐个确认
-v 显示过程

⚠️ 高危命令:

rm -rf /  

三、权限 / 用户相关

✅ chmod

参数 含义
-R 递归修改权限
u 用户(user)
g 组(group)
o 其他(other)
a 所有

示例:

chmod -R u+rwx,go+rx dir/  

✅ chown

参数 含义
-R 递归修改属主
: user:group
chown -R nginx:nginx /var/www  

四、搜索 / 文本处理(grep / find)

✅ grep

参数 含义
-r 递归搜索
-i 忽略大小写
-n 显示行号
-v 反向匹配
-E 扩展正则
-w 整词匹配
-c 统计次数

✅ 示例:

grep -rin "error" /var/log  

✅ find

参数 含义
-name 按名称
-type 类型(f/d)
-size 文件大小
-mtime 修改时间
-user 属主
-exec 执行命令
find /tmp -type f -size +10M  

五、压缩 / 解压(tar)

参数 含义
-c 创建
-x 解压
-t 查看
-f 指定文件
-z gzip
-j bzip2
-J xz
-v 详细

✅ 记忆口诀:

cxvf 创建,xvf 解压,z 是 gzip

tar -czvf a.tar.gz dir/  

六、进程 / 系统(ps / top / df)

✅ ps

参数 含义
-e 所有进程
-f 完整格式
-u 指定用户
-aux BSD 风格
ps -ef | grep nginx  

✅ df / du

参数 含义
-h 人类可读
-a 所有
-s 汇总
-c 合计

七、网络相关(curl / wget / ss)

参数 含义
-I 只看头
-L 跟随跳转
-O 保存文件
-p 端口
-t TCP
-u UDP

八、速记口诀(非常好记)

  • a = all
  • r / R = recursive
  • f = force
  • i = interactive
  • v = verbose
  • h = human
  • n = number
  • t = time
  • c x t = create / extract / test

✅ 总结一句话

Linux 参数简写:本质是英文首字母,多命令含义一致,但一定要结合具体命令看 man

这是个非常好的 Linux 细节问题,很多人会用,但说不清 👍
下面我用结论 + 原因 + 各命令差异给你讲清楚。


一、先给结论(核心)

-r-R 的区别不是“技术上必须”,而是“历史 + 规范不统一”造成的

✅ 总结一句话:

  • -R = Recursive(递归)是更“正统 / 标准”的写法
  • -r = 为了兼容早期 Unix / BSD / 用户习惯
  • 具体行为完全取决于命令本身

二、历史原因(最关键)

1️⃣ 早期 Unix 没统一规范

  • 最早的 Unix 工具各自设计参数
  • 大小写被当成不同选项
  • 没有 POSIX 强约束

2️⃣ BSD vs GNU 分裂

  • BSD 系:更早使用 -r
  • GNU 工具:更倾向用 -R 表示递归
  • Linux 为了兼容两边 → 同时支持

三、POSIX 标准态度

📜 POSIX 标准明确推荐

-R 表示递归

但:

  • 不强制禁止 -r
  • 是否支持由实现决定

✅ 所以:

  • 写脚本时优先用 -R
  • 兼容性更好

四、不同命令中的真实区别(重点)

✅ 1. ls(最典型)

ls -R  

✅ 递归列出子目录 ✅

ls -r  

不是递归!

参数 含义
-R 递归
-r 反向排序(reverse)

👉 ls 是最容易误用的命令


✅ 2. cp

cp -r dir1 dir2  
cp -R dir1 dir2  

两者效果一样(递归复制目录)

👉 GNU cp 明确支持 -r-R 等价


✅ 3. rm

rm -r dir  
rm -R dir  

等价

但:

  • -r 用得更多
  • -R 更符合 POSIX

✅ 4. grep

grep -r keyword .  
grep -R keyword .  
参数 区别
-r 不跟随符号链接
-R 跟随符号链接

这是少数真正有区别的命令


五、为什么不统一成一个?

原因很现实:

  1. 不能破坏旧脚本
    • 数以亿计的脚本用 -r
  2. 大小写参数本来就不同
  3. Unix 的哲学:兼容比优雅重要

👉 这就是 Linux 世界的“历史包袱”


六、什么时候该用哪个?(实战建议)

✅ 写脚本 / 自动化(推荐)

-R  

原因:

  • 更符合 POSIX
  • 可读性强(Recursive)

✅ 日常手敲命令

-r  

原因:

  • 肌肉记忆
  • rm / cp / grep 更常见

七、面试级总结(一句话)

-R 是标准递归参数,-r 多为历史兼容;是否等价完全取决于命令,lsgrep 是典型例外


八、终极记忆法 ✅

看到 -r,一定先想一句:
“这个命令里,r 是 recursive,还是 reverse?”