必会命令②

必会命令②
[TOC]
Linux系统核心命令
🧣history
查看历史命令
230 rm -f .1.txt.swp 231 ll -a 232 init 0 233 history[root@oldboyedu ~]# !231 # 执行231对应的历史命令'相当于执行了 ll -a'[root@oldboy ~]# cat /etc/hostnameoldboy[root@oldboy ~]# !cat # 调用最后一次执行cat的命令cat /etc/hostnameoldboy-
Ctrl+r 可以快速匹配,输入匹配的命令或关键字
-
接着用键盘左右键,或tab键选中
-
输入关键字后,不是自己想要的,可以继续按 Ctrl+r 循环匹配
-
Ctrl + g # 可以取消搜索
-
history -c # 清空当前会话的历史记录
-
43 vim /etc/profile 44 source /etc/profile 45 history[root@rocky10 ~]# history -c[root@rocky10 ~]# history 1 history# history -c 清空当前会话的历史记录✅️ 实际应用(面试高频):
'查看最常用的10条命令'[root@web01 ~]# history | awk '{print $2}' | sort | uniq -c | sort -rn | head -10 118 ll 64 vim 63 systemctl 51 curl 47 cd 35 nginx 32 cat 22 echo 16 mysql 16 mkdircp
📌 copy 复制文件 — 相当于 Windows 的文件复制 Ctrl+C
语法结构:
cp 源文件 复制到哪里
-a 等价于 -d -r -p
覆盖错误
🌰 案例1. 如果目标存在系统会提示是否覆盖
[root@Kylin ~]# cp hh.txt /home/cp:是否覆盖'/opt/a.txt'? y# y 为覆盖目标文件、n 为不覆盖
⚠️ 注意如果 y 的位置输入错误则使用 Ctrl+U 或者按住 Ctrl+删除键

cp -r /etc .
📌 复制目录 etc — 需要 -r 递归参数,复制到当前目录

omitting 忽略 — “忽略目录”,总的来说就是未指定 -r
/etc 下面东西太多了,只有递归 -r 才能全部复制过来

/etc等价于/etc/— 后面有没有这个/都一样(第一阶段)- 复制的是==整个目录==并非目录下一个个文件
/etc/*复制的是==一个个文件==

\cp(撬棍)
📌 使用 \cp 强制覆盖不提示,\ 临时取消别名
前面的不是斜线,是撬棍
# 为什么使用\就不提示是否覆盖了,因为操作系统为了安全,默认给危险的命令加上交互的选项 -i'系统给命令起了一些外号'
cp ==== cp -i # 执行的cp命令相当于执行了 cp -i选项ll ==== ls -l
# ============ 查看系统中设置了哪些别名 ============[root@Kylin ~]# aliasalias cp='cp -i'alias l.='ls -d .* --color=auto'alias ll='ls -l --color=auto'alias ls='ls --color=auto'alias mv='mv -i'alias rm='rm -i'# ================================================
很多 Linux 发行版(CentOS/RHEL 等)默认在 `~/.bashrc` 里写了 ` alias cp='cp -i' `当你输入 cp -f source dest 时,shell 实际执行的是 --> cp -i -f source dest关键点来了:-i(交互确认)和 -f(强制删除)互不冲突,它们管的是不同的事 ---> ⚠️ -i 的确认提示仍然会触发
-f(force) 的真正含义是:当目标文件因为权限等原因无法被写入/打开时,强行删除它再重新创建- force 的是 “删除障碍”,而不是 “跳过确认提示”
- 如果目标文件可以正常打开写入,
-f和不用-f没有任何区别
所以正确的理解是:
- 想去掉确认提示 → 用
\cp(解决 alias 问题) - 想处理只读/不可写文件 → 加
-f(解决权限问题) - 两个问题都有 →
\cp -f source dest(两个一起解决)
alias mv='mv -i'
💡 mv 的强制覆盖问题和 cp 完全一样:\mv 解决确认提示,-f 解决权限障碍,两者组合 \mv -f 才是真正的”无条件强制移动”
取消 cp -i 的别名:
[root@oldboy home]# cp -r /etc/ .[root@oldboy home]# ll总用量 12drwxr-xr-x 121 root root 8192 12月 4 18:36 etc# 第一次复制成功
[root@oldboy home]# cp -r /etc/ .cp:是否覆盖'./etc/skel/.bash_logout'? ycp:是否覆盖'./etc/skel/.bash_profile'? ^C# 第二次复制,提示是否覆盖,按 Ctrl+C 中断
[root@oldboy home]# \cp -r /etc/ .[root@oldboy home]# ll总用量 12drwxr-xr-x 121 root root 8192 12月 4 18:37 etc# \cp 强制覆盖,不提示cp /hh.txt /home/oldboy.txt
📌 在复制的过程中改了名

✅ 非常实用
cp a.txt b.txt /opt/
🌰 案例. 拷贝多个文件,将 a.txt 和 b.txt 同时复制到 /opt 目录下
[root@Kylin ~]# cp a.txt b.txt /opt/cp /etc/hosts ./
📌 . 或者 ./ 都是表示当前目录
# 拷贝至当前目录[root@oldboy home]# cp /etc/hosts ./[root@oldboy home]# ll总用量 16-rw-r--r-- 1 root root 158 12月 4 18:46 hosts
# 拷贝至家目录[root@oldboy home]# cp /etc/hosts ~[root@oldboy home]# ll /root/总用量 12-rw------- 1 root root 2705 12月 2 04:38 anaconda-ks.cfg-rw-r--r-- 1 root root 158 12月 4 18:47 hosts-rw-r--r-- 1 root root 3112 12月 2 05:12 initial-setup-ks.cfg. 和 ./ 都是当前目录,~ 表示家目录
.bak
🌰 案例. 为 a.txt 做一个备份 —> 修改 a.txt 内容前,提前给 a.txt 做一个备份
📌 操作前备份,操作后检查
# backup 备份 — 加 .bak[root@Kylin ~]# cp a.txt a.txt.bak[root@Kylin ~]# ll总用量 0-rw-r--r-- 1 root root 0 10月 29 09:32 a.txt-rw-r--r-- 1 root root 0 10月 29 09:36 a.txt.bak-rw-r--r-- 1 root root 0 10月 29 09:34 b.txt拷贝隐藏文件
[root@Kylin ~]# ll -a总用量 28dr-xr-x--- 5 root root 182 10月 29 10:16 .dr-xr-xr-x. 18 root root 265 10月 28 11:34 ..-rw-r--r-- 1 root root 0 10月 29 10:16 .1.txt# 以 . 开头的隐藏文件
[root@Kylin ~]# cp .1.txt /tmp/# 直接 cp 即可拷贝隐藏文件mv
移动
📌 类似 Windows 剪切 Ctrl+X
# 语法结构:mv 源文件或目录 移动到哪里(一般为目录)'它既可以移动文件,也可以移动目录'mv a.txt b.txt /opt/
🌰 案例1. 移动多个文件、a.txt 和 b.txt 到 /opt 目录
[root@Kylin ~]# touch a.txt[root@Kylin ~]# ll总用量 0-rw-r--r-- 1 root root 0 10月 29 10:22 a.txt-rw-r--r-- 1 root root 0 10月 29 10:19 b.txt
[root@Kylin ~]# mv a.txt b.txt /opt/[root@Kylin ~]# ll总用量 0# 当前目录已空
[root@Kylin ~]# ll /opt/总用量 0-rw-r--r-- 1 root root 0 10月 29 10:22 a.txt-rw-r--r-- 1 root root 0 10月 29 10:19 b.txt# 两个文件都移动到了 /opt🌰 案例2. 将 /opt 下 a.txt 移动到当前位置
[root@Kylin ~]# mv /opt/a.txt .[root@Kylin ~]# ll总用量 0-rw-r--r-- 1 root root 0 10月 29 10:19 a.txt'移动到当前位置挺常用的,也很方便'改名
语法结构:
mv 旧文件名 新文件名
- 既可以修改文件名也可以修改目录名
- 改名后,信息和权限不变

rm
📌 移除、删除文件或者目录 — ⚠️ 尽量使用 mv 来代替 rm 命令
语法结构:
rm 文件名称/目录名称🌰 案例1. 删除 a.txt
[root@Kylin ~]# touch a.txt[root@Kylin ~]# ll总用量 0-rw-r--r-- 1 root root 0 10月 29 10:27 a.txtdrwxr-xr-x 2 root root 19 10月 29 10:23 oldboy
[root@Kylin ~]# rm a.txtrm:是否删除普通空文件 'a.txt'?y\rm(撬棍)
强制删除不提示(⚠️ 危险)
# \ 临时取消别名# alias rm='rm -i'
-f
强制删除不提示 — 等价 \rm
[root@Kylin ~]# touch a.txt[root@Kylin ~]# rm -f a.txt[root@Kylin ~]# ll总用量 0# -f 强制删除,不提示
[root@Kylin ~]# touch a.txt b.txt[root@Kylin ~]# ll总用量 0-rw-r--r-- 1 root root 0 10月 29 10:37 a.txt-rw-r--r-- 1 root root 0 10月 29 10:37 b.txt
[root@Kylin ~]# rm -f a.txt b.txt# 删除多个文件,空格隔开-r
递归删除,删除目录及目录文件
[root@oldboy home]# rm -rf ./*[root@oldboy home]# ll总用量 0# 删除当前目录下所有内容
[root@oldboy home]# mkdir oldboy/[root@oldboy home]# rm -f oldboy/rm: 无法删除 'oldboy/': 是一个目录# -f 无法删除目录
[root@oldboy home]# rm -rf oldboy/# -rf 递归强制删除目录rm -f *.txt
删除以 .txt 结尾的文件
[root@Kylin ~]# touch {1..3}.txt[root@Kylin ~]# touch {1..3}.log[root@Kylin ~]# ll总用量 0-rw-r--r-- 1 root root 0 10月 29 10:40 1.log-rw-r--r-- 1 root root 0 10月 29 10:40 1.txt-rw-r--r-- 1 root root 0 10月 29 10:40 2.log-rw-r--r-- 1 root root 0 10月 29 10:40 2.txt-rw-r--r-- 1 root root 0 10月 29 10:40 3.log-rw-r--r-- 1 root root 0 10月 29 10:40 3.txt# 创建了 .txt 和 .log 两组文件
[root@Kylin ~]# rm -f *.txt[root@Kylin ~]# ll总用量 0-rw-r--r-- 1 root root 0 10月 29 10:40 1.log-rw-r--r-- 1 root root 0 10月 29 10:40 2.log-rw-r--r-- 1 root root 0 10月 29 10:40 3.log# 只剩 .log 文件了rm -rf ./*
删除当前目录 ./ 下所有文件及目录
[root@oldboy home]# touch a.txt b.txt c.txt[root@oldboy home]# ll总用量 12-rw-r--r-- 1 root root 0 12月 4 19:49 a.txt-rw-r--r-- 1 root root 0 12月 4 19:49 b.txt-rw-r--r-- 1 root root 0 12月 4 19:49 c.txtdrwxr-xr-x 121 root root 8192 12月 4 18:37 etc
[root@oldboy home]# rm -rf ./[root@oldboy home]# ll总用量 0# 当前目录全部清空vim
📌 Vim 配置文件:
- /etc/vimrc 和 ~/.vimrc 配置文件针对整个系统或特定用户
- 可以指定制表符间距、语法突出显示、颜色方案等
- 在使用 YAML 等具有严格语法要求的语言时,修改 vim 编辑器的行为特别有用
编辑文件 — #如果没有则自动创建
只会自动创建文件,但是没有办法创建目录


| 项目 | vi | vim |
|---|---|---|
| 安装方式 | 系统自带,无需额外安装 | 在最小化系统中默认未安装,==需手动安装== |
| 兼容性 | 基础 vi 命令兼容 | 完全兼容 vi 命令,绝大多数场景可直接用 vim 替代 vi |
| 模式 | 功能 | 进入方式 |
|---|---|---|
| 命令模式 | 移动光标、复制粘贴、删除、跳转等 | 启动即进入;或按 Esc 从其他模式返回 |
| 输入模式 | 自由编辑文本(打字、修改内容) | i, a, o, I, A, O 等 |
| 底线命令模式 | 保存、退出、搜索、替换等 | 输入 :(冒号) |
命令模式 -> 编辑模式
a或者i进入编辑模式o— 在当前行的下一行进入编辑模式O— 在当前行的上一行进入编辑模式
对于 oO 来说,无论是大写还是小写,都会开一个新的行
A— 在当前行的结尾进入编辑模式I— 在当前行的开头进入编辑模式ZZ— 命令行模式下快速保存并退出
命令模式快捷键
| 命令模式 | 快捷键 | 功能说明 |
|---|---|---|
| 命令模式 | k 或 ↑ | 向上移动光标 |
| 命令模式 | j 或 ↓ | 向下移动光标 |
| 命令模式 | h 或 ← | 向左移动光标 |
| 命令模式 | l 或 → | 向右移动光标 |
| 命令模式 | / | 进入搜索模式 |
| 命令模式 | n | 向下继续搜索(下一个匹配项) |
| 命令模式 | N | 向上继续搜索(上一个匹配项) |
| 命令模式 | dd | 删除光标所在行的内容 |
| 命令模式 | ndd | n 是数字,表示删除当前光标向下 n 行 |
| 命令模式 | yy | 复制当前行 |
| 命令模式 | nyy | n 是数字,复制当前行和下面的 n 行 |
| 命令模式 | p | 粘贴复制的内容(在光标后) |
| 命令模式 | u | 撤销修改 |
| 命令模式 | Ctrl + r | 反向撤销修改(重做) |
| 命令模式 | gg | 跳到首行 |
| 命令模式 | G | 跳到尾行 |
| 命令模式 | dG | 删除到文件末尾 |
| 命令模式 | dgg | 从当前行开始,向上全部删除 |
| 命令模式 | ZZ | 快速保存并退出 |
移动
💡 基本用法:跳转到匹配的括号
- 操作方式:在命令模式下,将光标移动到任何一个括号 (
(,),[,],{,}) 上,然后==按下%键== - 跳转效果:光标会立即跳转到与当前括号配对的另一个括号上
- 往返跳转:如果想跳回原来的位置,只需再次按下
%键即可
:set nu # 显示行号G # 移动光标到文件的最后一行gg # 快速到文件的首行20G # 快速移动到20行'这两条命令的功能是一样的'20gg # 快速移动到20行ZZ 命令行模式下快速保存并退出
删除
dG # 删除光标所在到文件的末尾'一个向下删,一个向上删除'dgg # 删除光标所在到文件首行:%d ---> 全部删除
D ---> 删除光标所在到行尾

把 DNS 后面的内容,直到行尾都删除掉了

Ctrl+V
📌 进入可视块模式 — 键盘的上下左右键选择矩阵内容,按 d 或 x 删除
快速删除注释:
- 比如我想快速删除前面这些注释,如何删除!!!
- 进去后 ctrl+v

- 按完后会出现这个标识,然后用上下左右键 <- | -> 选择,它是一列一列的选择
- 最后按 d 或 x 可以快速删除所选的 #(注释)
快速在每一列前面添加注释:
| 步骤 | 按键 | 说明 |
|---|---|---|
| 1. 选块 | Ctrl+ V | 进入可视块模式 |
| 2. 选行 | j / k ↑ / ↓ | 选中多行 |
| 3. 插入 | 大写 I (Shift+I) | 准备在每行开头插入 |
| 4. 输入 | 输入 # | 输入你想加的内容 |
| 5. 完成 | Esc | 自动应用到所有行 |
💡 补充技巧:在行尾添加
如果你想在行尾批量加东西:
- 选中列块后,使用大写
A(即Shift+A) - 输入内容后,按
Esc即可生效
Shift+V
📌 选择整行进行操作

和 Ctrl+V 操作方法类似,上下选择行,d 或 x 删除
dd # 快速剪切光标所在行3dd # 删除光标所在往下3行✅️ u # 撤销上一次的操作ZZ # 命令行模式下快速保存并退出复制
yy # 复制光标所在行3yy # 复制光标所在往下3行✅️ u # 撤销上一次的操作ZZ # 命令行模式下快速保存并退出粘贴
p # 粘贴复制或者剪切的内容3p # 粘贴的次数✅️ u # 撤销上一次的操作ZZ # 命令行模式下快速保存并退出搜索功能
/搜索的内容 # 搜索n # 查找下一个N # 查找上一个底行模式
:wq # 保存并退出:q # 退出:q! # 强制退出不保存:wq! # 强制保存并退出:set nu # 显示行号:set nonu # 取消显示行号:set paste# 设置粘贴模式'设置粘贴模式,用于从外部复制内容去使用的':%d # 清空内容vim故障
📌 报错信息: 发现交换文件 “.1.txt.swp” 原因是没有正常的退出
(1)vim 编辑一个文件 vim 1.txt
(2)系统自动生成一个隐藏文件 .1.txt.swp(临时文件)
(3)如果正常保存退出 系统会将 .1.txt.swp移动成1.txt
变成一个正常的文件了
(4)如果没有正常退出.swp文件会被永久保留
也就是**同时存在 **1.txt 和
.1.txt.swp两个文件
没有正常退出的原因
出现发现交换文件 “.1.txt.swp” 的原因:
(1)两个窗口同时编辑一个文件
(2)编辑文件没有保存直接关闭xshell
(3)服务器关机、断电导致
(4)多个员工同时编辑一个文件
解决此问题方法:
- 想要恢复修改后的内容
第一步: vim -r 1.txt —>直接回车
第二步: 保存并且退出
- 即使保存退出,他这个隐藏文件依旧存在,
- 而且每次编辑都会显示交换文件
.1.txt.swp
- 而且每次编辑都会显示交换文件
第三步: 删除隐藏文件
[root@oldboy home]# ls -la总用量 12drwxr-xr-x 2 root root 24 12月 6 09:50 .dr-xr-xr-x. 18 root root 238 12月 4 03:08 ..-rw------- 1 root root 12288 12月 6 09:44 .1.txt.swp# 隐藏文件.1.txt.swp依然存在
[root@oldboy home]# vim -r 1.txt# 恢复之前编辑的内容'那么我们如何恢复我们以前编辑的内容呢??? 使用 vim -r'
:冒号,保存,wq# 保存退出
[root@oldboy home]# ls -la总用量 16drwxr-xr-x 2 root root 37 12月 6 09:57 .dr-xr-xr-x. 18 root root 238 12月 4 03:08 ..-rw-r--r-- 1 root root 21 12月 6 09:57 1.txt-rw------- 1 root root 12288 12月 6 09:44 .1.txt.swp'恢复后1.txt正常出现,但.swp仍在'我们再次编辑1.txt文件试试:
❌️ 依旧报错,有提示!
[root@oldboy home]# ll -a总用量 16drwxr-xr-x 2 root root 37 12月 6 10:00 .dr-xr-xr-x. 18 root root 238 12月 4 03:08 ..-rw-r--r-- 1 root root 21 12月 6 09:57 1.txt-rw------- 1 root root 12288 12月 6 09:44 .1.txt.swp[root@oldboy home]# rm -f .1.txt.swp[root@oldboy home]# ll -a总用量 4drwxr-xr-x 2 root root 19 12月 6 10:02 .dr-xr-xr-x. 18 root root 238 12月 4 03:08 ..-rw-r--r-- 1 root root 21 12月 6 09:57 1.txt'删除.swp交换文件后恢复正常'✅️ 删除隐藏文件后即可正常编辑- 不要修改后的内容
第一步: 直接删除隐藏文件
[root@oldboy-lnb ~]# rm -f .1.txt.swp第二步: 正常编辑文件即可
想要,直接-r恢复,不想要直接删除即可
echo
将字符串输出到屏幕或者输入到文件中
单引号可以把里面的内容原封不动的输出
所以我们 echo 输出的时候,建议用单引号括起来
' '
echo 字符串
📌 输出到屏幕
水洒在地上
🌰 案例1. 输出姓名到屏幕
[root@Kylin ~]# echo 'oldboy'oldboy
[root@Kylin ~]# echo '老男孩'老男孩用单引号括起来
' '
echo 字符串 >文件
📌 输出到文件中
水通过漏斗进入到了文件
⚠️ 文件和>之间有没有空格都行
echo -e
📌 Bash shell 提供的一个启用转义字符解释的选项
✅️ 基本语法
echo -e "包含转义字符的字符串"⚠️ 必须用引号包裹字符串(单引号或双引号均可),否则 shell 会把
\n当作普通字符\+n,而不是换行符

# 🔑 常见转义序列(在 -e 模式下有效)\n # 换行\t # 制表符(Tab)\b # 退格(相当于删除)\\ # 输出一个反斜杠>
📌 可以接收屏幕上输出的任何内容 — 先清空再写入 “覆盖内容”
🌰 案例2. 将字符串输入到文件中,并清空源文件
[root@Kylin ~]# cat a.txtoldboyeduaaaabbbbcccc# 原文件有内容
[root@Kylin ~]# echo 'hehe' > a.txt# '用单引号括起来'
[root@Kylin ~]# cat a.txthehe# 原内容被清空,只剩 hehe
>>
📌 追加内容
🌰 案例3. 追加内容到文件中
[root@Kylin ~]# echo 'aa' > a.txt[root@Kylin ~]# cat a.txtaa
[root@Kylin ~]# echo 'bb' >> a.txt[root@Kylin ~]# cat a.txtaabb
[root@Kylin ~]# echo 'cc' >> a.txt[root@Kylin ~]# cat a.txtaabbcc# >> 追加,不覆盖原有内容cat /etc/hosts > a.txt
🌰 案例4. 任何命令输出到屏幕上的结果都可以用 > 定向到文件中
[root@Kylin ~]# cat /etc/hosts > a.txt[root@Kylin ~]# cat a.txt127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6❗很重要

> a.txt
📌 清空文件 & 创建文件
[root@Kylin ~]# cat a.txtaaa# a.txt 原本有内容
[root@Kylin ~]# > a.txt[root@Kylin ~]# cat a.txt# 内容被清空
[root@Kylin home]# lltotal 0# 原本没有 a.txt
==================================
[root@Kylin home]# > a.txt[root@Kylin home]# lltotal 0-rw-r--r-- 1 root root 0 Dec 5 00:18 a.txt# 这里,> 用于创建文件{} 花括号
📌 输出序列(在同一行)
✅️ 所有元素默认以空格分隔输出在同一行
.. 点点有规律
🌰 案例:支持数字 & 序列字母
# 示例 1: 字母序列 a 到 z(小写)[root@Kylin]# echo {a..z}a b c d e f g h i j k l m n o p q r s t u v w x y z
# 示例 2: 数字序列 1 到 10[root@Kylin]# echo {1..10}1 2 3 4 5 6 7 8 9 10
# 示例 3: 两位数字序列 01 到 10'让它的宽度相等,对齐'[root@Kylin]# echo {01..10}01 02 03 04 05 06 07 08 09 10[root@Kylin ~]# echo {1..10..2}1 3 5 7 9'每隔两个输出'
# 示例 4: 两位数字序列 01 到 100(自动补零至两位)[root@Kylin]# echo {01..100}001 002 ... 098 099 100, 逗号没规律
📌 支持不连续的
🌰 案例:快速创建文件备份
1)逗号分隔[root@Kylin]# echo a{b,c}ab ac🔍 原理:{b,c} 展开为 "b" 和 "c",分别与前面的 "a" 拼接 → "ab", "ac"📌 用途:快速生成多个变体(如文件名、参数组合)
2)逗号 + 省略前缀(仅保留后缀)[root@Kylin]# echo oldboy{,bac}oldboy oldboybac[root@Kylin]# echo oldboy.txt{,.bak}oldboy.txt oldboy.txt.bak⚠️ 注意:这仍是大括号展开,不是通配符匹配!
3)实际应用💡 用 cp 命令备份文件[root@Kylin]# cp oldboy.txt{,.bak}✅️ 等价于: # cp oldboy.txt oldboy.txt.bak创建文件和目录
🌰 案例:⭐使用序列创建文件
[root@Kylin ~]# echo {a..c}a b c# 输出序列至屏幕上
[root@Kylin ~]# touch {1..3}.txt[root@Kylin ~]# ll总用量 0-rw-r--r-- 1 root root 0 10月 30 09:57 1.txt-rw-r--r-- 1 root root 0 10月 30 09:57 2.txt-rw-r--r-- 1 root root 0 10月 30 09:57 3.txt'🧣这个挺常用的,以txt结尾'✅️ 通过序列批量创建文件[root@Kylin ~]# echo {1..3}.log1.log 2.log 3.log[root@Kylin ~]# echo {1..3}_log1_log 2_log 3_log'log还有做备份.bak'🌰 案例:⭐使用序列创建目录
[root@Kylin ~]# echo test{1..2}test1 test2[root@Kylin ~]# mkdir test{1..2}[root@Kylin ~]# ll总用量 0drwxr-xr-x 2 root root 6 10月 30 09:59 test1drwxr-xr-x 2 root root 6 10月 30 09:59 test2🌰 案例:在 /opt 目录下快速创建 www blog bbs 三个目录
[root@Kylin ~]# ll /opt/'空'[root@Kylin ~]# mkdir /opt/{www,blog,bbs}[root@Kylin ~]# ll /opt/total 16drwxr-xr-x 2 root root 4096 Dec 5 10:32 bbsdrwxr-xr-x 2 root root 4096 Dec 5 10:32 blogdrwxr-xr-x 2 root root 4096 Dec 5 10:32 www# 一次性创建三个目录成功📌 在上面的每个目录下同时创建1.txt 2.txt
[root@Kylin ~]# echo oldboy/{bbs,blog,www}/{1..2}.txt'我们在使用序列拼接的时候,可以先echo直接打印出来看看'
[root@Kylin ~]# touch oldboy/{bbs,blog,www}/{1..2}.txt'三个目录×两个文件=6个文件'[root@Kylin ~]# tree oldboyoldboy├── bbs│ ├── 1.txt│ └── 2.txt├── blog│ ├── 1.txt│ └── 2.txt└── www ├── 1.txt └── 2.txt📌 注意其他大部分命令都支持序列
[root@Kylin ~]# ll {1..3}.txt[root@Kylin ~]# touch {1..3}.txt[root@Kylin ~]# cat {1..3}.txt# 序列同样可以用在 ll、touch、cat 等命令中seq命令
和花括号命令 { } 类似,同样可以生成数字。但是区别在哪里呢?
-
花括号只能生成一行,seq 是生成一列
-
seq ==只能生成数字==,而花括号还能生成字母
1)花括号:{0..10} → 一行输出(空格分隔)[root@test_home]# echo {0..10}0 1 2 3 4 5 6 7 8 9 10
2)seq:seq 10 → 一列输出(换行分隔)[root@test_home]# seq 1012345678910
3)花括号:{a..e} → 字母序列(一行)[root@test_home]# echo {a..e}a b c d e⚠️ seq 无法生成字母(报错)文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!



