本文系统讲解了Linux命令中参数的使用规则:
- 核心规律:以"-"或"--"开头的99%是参数,分为短参数(-r)、长参数(--help)和带值参数(-name value)三种类型;
- 参数分类:开关型参数(如ls -l)和变量型参数(如find -name *.txt);
- 特殊用法:单独"-"表示标准输入或上一个目录;
- 记忆技巧:参数多取自完整单词首字母(如-r=recursive);
- 提供常见命令参数速查表,帮助快速掌握命令结构。
理解这些规律能有效提升Linux命令使用效率。
在 Linux 命令中,- 开头的东西几乎都是"参数/选项",用来告诉命令"具体怎么做"
下面帮你彻底理清这个概念,因为这对理解所有 Linux 命令都很重要。
一、核心规律
| 写法 | 含义 | 作用 |
|---|---|---|
-r |
短参数(单个字母) | 打开某个开关 |
-rf |
多个短参数合并 | 同时打开多个开关 |
--help |
长参数(单词) | 更容易读懂 |
-name |
带值的参数 | 后面跟具体值 |
一句话 :只要以 - 或 -- 开头,99% 是参数。
二、find 命令中的参数示例
你提到的 -name、-type 就是典型的带值的参数:
bash
find /home -name "*.txt" -type f
| 部分 | 含义 | 说明 |
|---|---|---|
-name |
参数:按文件名查找 | 后面跟匹配模式 |
"*.txt" |
-name 的值 |
要匹配的文件名 |
-type |
参数:按类型查找 | 后面跟类型代码 |
f |
-type 的值 |
f 表示普通文件 |
前端类比:
javascript
// find /home -name "*.txt" 相当于
find({
path: '/home',
name: '*.txt', // -name 是参数名,后面是参数值
type: 'f' // -type 是参数名,后面是参数值
})
三、参数分类对比表
3.1 无值的开关参数(开关型)
| 命令 | 参数 | 含义 | 作用 |
|---|---|---|---|
ls |
-l |
long | 显示详细信息 |
ls |
-a |
all | 显示隐藏文件 |
rm |
-r |
recursive | 递归删除 |
rm |
-f |
force | 强制删除 |
grep |
-v |
invert | 反选(显示不匹配的) |
grep |
-n |
number | 显示行号 |
bash
bash
# 可以组合使用
ls -la # 显示所有文件 + 详细信息
rm -rf # 递归 + 强制
grep -vn # 反选 + 显示行号
3.2 带值的参数(变量型)
| 命令 | 参数 | 含义 | 后面跟的值 |
|---|---|---|---|
find |
-name |
按名字找 | 文件名模式 |
find |
-type |
按类型找 | f(文件)、d(目录) |
find |
-mtime |
按修改时间 | 天数(如 +7) |
tar |
-f |
指定文件名 | 压缩包名 |
tar |
-C |
指定目录 | 目录路径 |
chmod |
-R |
递归 | 无值(但通常算开关型) |
-mtime是 modification time 的组合。
bash
bash
# 带值的参数必须跟值
find . -name "*.log" # -name 的值是 "*.log"
find . -type d # -type 的值是 d(目录)
tar -zcvf output.tar.gz file1 file2 # -f 的值是 output.tar.gz
四、短参数 vs 长参数
| 类型 | 格式 | 例子 | 优点 |
|---|---|---|---|
| 短参数 | - + 单个字母 |
-r、-f、-a |
敲得快,可以合并 -rf |
| 长参数 | -- + 单词 |
--help、--recursive |
容易读懂,脚本里更清晰 |
bash
bash
# 短参数
ls -la
rm -rf
# 长参数(部分命令支持)
ls --all --long
rm --recursive --force
五、特殊情况:不是参数的 -
5.1 单独一个 -
bash
bash
# 单独一个 - 代表"标准输入"或"上一个目录"
cat file.txt | grep "error" | cat - # - 代表前面的输出
cd - # 回到上一个目录
5.2 文件名以 - 开头
bash
bash
# 创建了一个奇怪文件叫 -rf
touch ./-rf
# 正常写法会把它当参数
rm -rf # ❌ 报错:missing operand
# 正确删除:用 -- 表示"后面不是参数"
rm -- -rf # ✅ 删文件名叫 -rf
六、记忆技巧
看到
-或--,先当成参数。
如果是
-+ 单个字母:开关型(无值)或简写如果是
-+ 单词:带值型(后面跟东西)如果是
--+ 单词:长参数(更易读)如果是单独的
-或文件名:特殊情况
前端类比:
javascript
// Linux 参数 ≈ 函数传参
command -name value -r
// 相当于
command({
name: value, // -name value
recursive: true // -r
})
七、常见命令参数速查
| 命令 | 常见参数 | 含义 | 类型 |
|---|---|---|---|
ls |
-l、-a、-h |
详细信息、全部、人类可读 | 开关型 |
rm |
-r、-f、-i |
递归、强制、交互 | 开关型 |
cp |
-r、-f、-i |
递归、强制、交互 | 开关型 |
find |
-name、-type、-mtime |
名字、类型、时间 | 带值型 |
tar |
-c、-x、-z、-v、-f |
创建、解压、gzip、详细、文件 | 混合 |
grep |
-v、-n、-r |
反选、行号、递归 | 开关型 |
chmod |
-R |
递归 | 开关型 |
常见命令参数速查(含完整单词)
| 命令 | 参数 | 完整单词 | 含义 |
|---|---|---|---|
ls |
-l |
long | 长格式显示(详细信息) |
ls |
-a |
all | 显示所有文件(含隐藏文件) |
ls |
-h |
human-readable | 人类可读(如 1K、2M、3G) |
rm |
-r |
recursive | 递归删除(删目录必用) |
rm |
-f |
force | 强制删除(不询问、不报错) |
rm |
-i |
interactive | 交互式(删除前询问) |
cp |
-r |
recursive | 递归复制(复制目录必用) |
cp |
-f |
force | 强制覆盖(不询问) |
cp |
-i |
interactive | 交互式(覆盖前询问) |
find |
-name |
name | 按文件名查找 |
find |
-type |
type | 按类型查找(f=文件,d=目录) |
find |
-mtime |
m odification time | 按修改时间查找 |
tar |
-c |
create | 创建压缩包 |
tar |
-x |
extract | 解压(提取) |
tar |
-z |
zip(gzip) | 通过 gzip 压缩/解压 |
tar |
-v |
verbose | 显示详细信息(啰嗦模式) |
tar |
-f |
file | 指定文件名 |
grep |
-v |
v invert(反转) | 反选(显示不匹配的行) |
grep |
-n |
number | 显示匹配行的行号 |
grep |
-r |
recursive | 递归搜索目录 |
chmod |
-R |
Recursive | 递归修改权限 |
记忆小贴士
| 参数 | 完整单词 | 一句话记忆 |
|---|---|---|
-r |
recursive | r = 递归(钻进去) |
-f |
force | f = 强制(别废话) |
-i |
interactive | i = 问你一下 |
-v |
verbose / invert | v = 啰嗦(tar)或 反选(grep) |
-h |
human-readable | h = 给人看的 |
-a |
all | a = 全部 |
-c |
create | c = 创建 |
-x |
extract | x = 提取 |
-z |
zip | z = 压缩 |
-f(tar) |
file | f = 指定文件 |
-n |
number | n = 行号 |
规律总结
绝大多数参数都是取完整单词的首字母:
| 完整单词 | 参数 |
|---|---|
| recursive → | -r |
| force → | -f |
| interactive → | -i |
| all → | -a |
| human-readable → | -h |
| number → | -n |
| verbose → | -v |
| create → | -c |
| extract → | -x |
例外(不取首字母):
-
-name、-type、-mtime是多字母完整单词 -
-z取自 zip(不是 z 开头的单词首字母,而是压缩格式名)
八、总结一句话
是的,
-开头的都是参数,用来告诉命令"怎么做"。-r是开关,-name是带值的参数,单独一个-是特殊情况。
这个规律适用于 99% 的 Linux 命令,掌握了它,你看任何命令都能快速理解结构!