必会命令②

5447 字
27 分钟
必会命令②

必会命令②#

[TOC]


Linux系统核心命令#

🧣history#

查看历史命令

Terminal window
230 rm -f .1.txt.swp
231 ll -a
232 init 0
233 history
[root@oldboyedu ~]# !231 # 执行231对应的历史命令
'相当于执行了 ll -a'
Terminal window
[root@oldboy ~]# cat /etc/hostname
oldboy
[root@oldboy ~]# !cat # 调用最后一次执行cat的命令
cat /etc/hostname
oldboy
Tip
  • Ctrl+r 可以快速匹配,输入匹配的命令或关键字

  • 接着用键盘左右键,或tab键选中

  • 输入关键字后,不是自己想要的,可以继续按 Ctrl+r 循环匹配

    • Ctrl + g # 可以取消搜索

    • history -c # 清空当前会话的历史记录

Terminal window
43 vim /etc/profile
44 source /etc/profile
45 history
[root@rocky10 ~]# history -c
[root@rocky10 ~]# history
1 history
# history -c 清空当前会话的历史记录

✅️ 实际应用(面试高频):

Terminal window
'查看最常用的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 mkdir

cp#

📌 copy 复制文件 — 相当于 Windows 的文件复制 Ctrl+C

语法结构:

Terminal window
cp 源文件 复制到哪里

Tip

-a 等价于 -d -r -p

覆盖错误#

🌰 案例1. 如果目标存在系统会提示是否覆盖

Terminal window
[root@Kylin ~]# cp hh.txt /home/
cp:是否覆盖'/opt/a.txt' y
# y 为覆盖目标文件、n 为不覆盖

⚠️ 注意如果 y 的位置输入错误则使用 Ctrl+U 或者按住 Ctrl+删除键

cp -r /etc .#

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

omitting 忽略 — “忽略目录”,总的来说就是未指定 -r

Note

/etc 下面东西太多了,只有递归 -r 才能全部复制过来

image-20260620170533589
image-20260620170533589

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

image-20260620170712686
image-20260620170712686

\cp(撬棍)#

📌 使用 \cp 强制覆盖不提示,\ 临时取消别名

Note

前面的不是斜线,是撬棍

Terminal window
# 为什么使用\就不提示是否覆盖了,因为操作系统为了安全,默认给危险的命令加上交互的选项 -i
'系统给命令起了一些外号'
cp ==== cp -i # 执行的cp命令相当于执行了 cp -i选项
ll ==== ls -l
# ============ 查看系统中设置了哪些别名 ============
[root@Kylin ~]# alias
alias 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
Note

关键点来了-i(交互确认)和 -f(强制删除)互不冲突,它们管的是不同的事 ---> ⚠️ -i 的确认提示仍然会触发

  • -f (force) 的真正含义是:当目标文件因为权限等原因无法被写入/打开时,强行删除它再重新创建
    • force 的是 “删除障碍”,而不是 “跳过确认提示”
    • 如果目标文件可以正常打开写入,-f 和不用 -f 没有任何区别
Tip

所以正确的理解是:

  • 想去掉确认提示 → 用 \cp(解决 alias 问题)
  • 想处理只读/不可写文件 → 加 -f(解决权限问题)
  • 两个问题都有\cp -f source dest(两个一起解决)

  • alias mv='mv -i'

💡 mv 的强制覆盖问题和 cp 完全一样:\mv 解决确认提示,-f 解决权限障碍,两者组合 \mv -f 才是真正的”无条件强制移动”


取消 cp -i 的别名:

Terminal window
[root@oldboy home]# cp -r /etc/ .
[root@oldboy home]# ll
总用量 12
drwxr-xr-x 121 root root 8192 12月 4 18:36 etc
# 第一次复制成功
[root@oldboy home]# cp -r /etc/ .
cp:是否覆盖'./etc/skel/.bash_logout' y
cp:是否覆盖'./etc/skel/.bash_profile' ^C
# 第二次复制,提示是否覆盖,按 Ctrl+C 中断
[root@oldboy home]# \cp -r /etc/ .
[root@oldboy home]# ll
总用量 12
drwxr-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 目录下

Terminal window
[root@Kylin ~]# cp a.txt b.txt /opt/

cp /etc/hosts ./#

📌 . 或者 ./ 都是表示当前目录

Terminal window
# 拷贝至当前目录
[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
Tip

../ 都是当前目录,~ 表示家目录

.bak#

🌰 案例. 为 a.txt 做一个备份 —> 修改 a.txt 内容前,提前给 a.txt 做一个备份

Note

📌 操作前备份,操作后检查

Terminal window
# 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

拷贝隐藏文件#

Terminal window
[root@Kylin ~]# ll -a
总用量 28
dr-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

Terminal window
# 语法结构:
mv 源文件或目录 移动到哪里(一般为目录)
'它既可以移动文件,也可以移动目录'

mv a.txt b.txt /opt/#

🌰 案例1. 移动多个文件、a.txt 和 b.txt 到 /opt 目录

Terminal window
[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 移动到当前位置

Terminal window
[root@Kylin ~]# mv /opt/a.txt .
[root@Kylin ~]# ll
总用量 0
-rw-r--r-- 1 root root 0 10月 29 10:19 a.txt
'移动到当前位置挺常用的,也很方便'

改名#

语法结构:

Terminal window
mv 旧文件名 新文件名
  • 既可以修改文件名也可以修改目录名
    • 改名后,信息和权限不变

rm#

📌 移除、删除文件或者目录 — ⚠️ 尽量使用 mv 来代替 rm 命令

语法结构:

Terminal window
rm 文件名称/目录名称

🌰 案例1. 删除 a.txt

Terminal window
[root@Kylin ~]# touch a.txt
[root@Kylin ~]# ll
总用量 0
-rw-r--r-- 1 root root 0 10月 29 10:27 a.txt
drwxr-xr-x 2 root root 19 10月 29 10:23 oldboy
[root@Kylin ~]# rm a.txt
rm:是否删除普通空文件 'a.txt'?y

\rm(撬棍)#

强制删除不提示(⚠️ 危险)

Terminal window
# \ 临时取消别名
# alias rm='rm -i'

-f#

强制删除不提示 — 等价 \rm

Terminal window
[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#

递归删除,删除目录及目录文件

Terminal window
[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 结尾的文件

Terminal window
[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 ./*#

删除当前目录 ./ 下所有文件及目录

Terminal window
[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.txt
drwxr-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 编辑器的行为特别有用

编辑文件 — #如果没有则自动创建

只会自动创建文件,但是没有办法创建目录

项目vivim
安装方式系统自带,无需额外安装在最小化系统中默认未安装,==需手动安装==
兼容性基础 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删除光标所在行的内容
命令模式nddn 是数字,表示删除当前光标向下 n
命令模式yy复制当前行
命令模式nyyn 是数字,复制当前行和下面的 n
命令模式p粘贴复制的内容(在光标后)
命令模式u撤销修改
命令模式Ctrl + r反向撤销修改(重做)
命令模式gg跳到首行
命令模式G跳到尾行
命令模式dG删除到文件末尾
命令模式dgg从当前行开始,向上全部删除
命令模式ZZ快速保存并退出

移动#

Tip

💡 基本用法:跳转到匹配的括号

  • 操作方式:在命令模式下,将光标移动到任何一个括号 ((, ), [, ], {, }) 上,然后==按下 % 键==
  • 跳转效果光标会立即跳转到与当前括号配对的另一个括号上
  • 往返跳转:如果想跳回原来的位置,只需再次按下 % 键即可
Terminal window
:set nu # 显示行号
G # 移动光标到文件的最后一行
gg # 快速到文件的首行
20G # 快速移动到20行
'这两条命令的功能是一样的'
20gg # 快速移动到20行

ZZ 命令行模式下快速保存并退出

删除#

Terminal window
dG # 删除光标所在到文件的末尾
'一个向下删,一个向上删除'
dgg # 删除光标所在到文件首行
Note

:%d ---> 全部删除

D ---> 删除光标所在到行尾

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

Ctrl+V#

📌 进入可视块模式 — 键盘的上下左右键选择矩阵内容,按 d 或 x 删除

快速删除注释:

  • 比如我想快速删除前面这些注释,如何删除!!!
    • 进去后 ctrl+v

image-20260620194342582
image-20260620194342582

  • 按完后会出现这个标识,然后用上下左右键 <- | -> 选择,它是一列一列的选择
    • 最后按 d 或 x 可以快速删除所选的 #(注释)

快速在每一列前面添加注释:

步骤按键说明
1. 选块Ctrl+ V进入可视块模式
2. 选行j / k
↑ / ↓
选中多行
3. 插入大写 I
(Shift+I)
准备在每行开头插入
4. 输入输入 #输入你想加的内容
5. 完成Esc自动应用到所有行
Tip

💡 补充技巧:在行尾添加

如果你想在行尾批量加东西

  • 选中列块后,使用大写 A (即 Shift+A)
  • 输入内容后,按 Esc 即可生效

Shift+V#

📌 选择整行进行操作

和 Ctrl+V 操作方法类似,上下选择行,d 或 x 删除

Terminal window
dd # 快速剪切光标所在行
3dd # 删除光标所在往下3行
✅️ u # 撤销上一次的操作
ZZ # 命令行模式下快速保存并退出

复制#

Terminal window
yy # 复制光标所在行
3yy # 复制光标所在往下3行
✅️ u # 撤销上一次的操作
ZZ # 命令行模式下快速保存并退出

粘贴#

Terminal window
p # 粘贴复制或者剪切的内容
3p # 粘贴的次数
✅️ u # 撤销上一次的操作
ZZ # 命令行模式下快速保存并退出

搜索功能#

Terminal window
/搜索的内容 # 搜索
n # 查找下一个
N # 查找上一个

底行模式#

Terminal window
: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)多个员工同时编辑一个文件

解决此问题方法:#

  1. 想要恢复修改后的内容
Tip

第一步: vim -r 1.txt —>直接回车

第二步: 保存并且退出

  • 即使保存退出,他这个隐藏文件依旧存在,
    • 而且每次编辑都会显示交换文件 .1.txt.swp

第三步: 删除隐藏文件

Terminal window
[root@oldboy home]# ls -la
总用量 12
drwxr-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
总用量 16
drwxr-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文件试试:

❌️ 依旧报错,有提示!

Terminal window
[root@oldboy home]# ll -a
总用量 16
drwxr-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
总用量 4
drwxr-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交换文件后恢复正常'
✅️ 删除隐藏文件后即可正常编辑

  1. 不要修改后的内容

第一步: 直接删除隐藏文件

Terminal window
[root@oldboy-lnb ~]# rm -f .1.txt.swp

第二步: 正常编辑文件即可

Tip

想要,直接-r恢复,不想要直接删除即可

echo#

将字符串输出到屏幕或者输入到文件中

单引号可以把里面的内容原封不动的输出

所以我们 echo 输出的时候,建议用单引号括起来 ' '

echo 字符串#

📌 输出到屏幕

Tip

水洒在地上

🌰 案例1. 输出姓名到屏幕

Terminal window
[root@Kylin ~]# echo 'oldboy'
oldboy
[root@Kylin ~]# echo '老男孩'
老男孩

用单引号括起来 ' '

echo 字符串 >文件#

📌 输出到文件中

Tip

水通过漏斗进入到了文件

⚠️ 文件和>之间有没有空格都行

echo -e#

📌 Bash shell 提供的一个启用转义字符解释的选项

✅️ 基本语法

Terminal window
echo -e "包含转义字符的字符串"

⚠️ 必须用引号包裹字符串(单引号或双引号均可),否则 shell 会把 \n 当作普通字符 \ + n,而不是换行符

Terminal window
# 🔑 常见转义序列(在 -e 模式下有效)
\n # 换行
\t # 制表符(Tab)
\b # 退格(相当于删除)
\\ # 输出一个反斜杠

>

📌 可以接收屏幕上输出的任何内容 — 先清空再写入 “覆盖内容”

🌰 案例2. 将字符串输入到文件中,并清空源文件

Terminal window
[root@Kylin ~]# cat a.txt
oldboyedu
aaaa
bbbb
cccc
# 原文件有内容
[root@Kylin ~]# echo 'hehe' > a.txt
# '用单引号括起来'
[root@Kylin ~]# cat a.txt
hehe
# 原内容被清空,只剩 hehe

>>#

📌 追加内容

🌰 案例3. 追加内容到文件中

Terminal window
[root@Kylin ~]# echo 'aa' > a.txt
[root@Kylin ~]# cat a.txt
aa
[root@Kylin ~]# echo 'bb' >> a.txt
[root@Kylin ~]# cat a.txt
aa
bb
[root@Kylin ~]# echo 'cc' >> a.txt
[root@Kylin ~]# cat a.txt
aa
bb
cc
# >> 追加,不覆盖原有内容

cat /etc/hosts > a.txt#

🌰 案例4. 任何命令输出到屏幕上的结果都可以用 > 定向到文件中

Terminal window
[root@Kylin ~]# cat /etc/hosts > a.txt
[root@Kylin ~]# cat a.txt
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
Warning

❗很重要

> a.txt#

📌 清空文件 & 创建文件

Terminal window
[root@Kylin ~]# cat a.txt
aaa
# a.txt 原本有内容
[root@Kylin ~]# > a.txt
[root@Kylin ~]# cat a.txt
# 内容被清空
[root@Kylin home]# ll
total 0
# 原本没有 a.txt
==================================
[root@Kylin home]# > a.txt
[root@Kylin home]# ll
total 0
-rw-r--r-- 1 root root 0 Dec 5 00:18 a.txt
# 这里,> 用于创建文件

{} 花括号#

📌 输出序列(在同一行)

✅️ 所有元素默认以空格分隔输出在同一行

.. 点点有规律#

🌰 案例:支持数字 & 序列字母

Terminal window
# 示例 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

, 逗号没规律#

📌 支持不连续的

🌰 案例:快速创建文件备份

Terminal window
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

创建文件和目录#

🌰 案例:⭐使用序列创建文件

Terminal window
[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}.log
1.log 2.log 3.log
[root@Kylin ~]# echo {1..3}_log
1_log 2_log 3_log
'log还有做备份.bak'

🌰 案例:⭐使用序列创建目录

Terminal window
[root@Kylin ~]# echo test{1..2}
test1 test2
[root@Kylin ~]# mkdir test{1..2}
[root@Kylin ~]# ll
总用量 0
drwxr-xr-x 2 root root 6 10月 30 09:59 test1
drwxr-xr-x 2 root root 6 10月 30 09:59 test2

🌰 案例:在 /opt 目录下快速创建 www blog bbs 三个目录

Terminal window
[root@Kylin ~]# ll /opt/
'空'
[root@Kylin ~]# mkdir /opt/{www,blog,bbs}
[root@Kylin ~]# ll /opt/
total 16
drwxr-xr-x 2 root root 4096 Dec 5 10:32 bbs
drwxr-xr-x 2 root root 4096 Dec 5 10:32 blog
drwxr-xr-x 2 root root 4096 Dec 5 10:32 www
# 一次性创建三个目录成功

📌 在上面的每个目录下同时创建1.txt 2.txt

Terminal window
[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 oldboy
oldboy
├── bbs
├── 1.txt
└── 2.txt
├── blog
├── 1.txt
└── 2.txt
└── www
├── 1.txt
└── 2.txt

📌 注意其他大部分命令都支持序列

Terminal window
[root@Kylin ~]# ll {1..3}.txt
[root@Kylin ~]# touch {1..3}.txt
[root@Kylin ~]# cat {1..3}.txt
# 序列同样可以用在 ll、touch、cat 等命令中

seq命令#

花括号命令 { } 类似,同样可以生成数字。但是区别在哪里呢?

Note
  • 花括号只能生成一行,seq 是生成一列

  • seq ==只能生成数字==,而花括号还能生成字母

Terminal window
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 10
1
2
3
4
5
6
7
8
9
10
3)花括号:{a..e} 字母序列(一行)
[root@test_home]# echo {a..e}
a b c d e
⚠️ seq 无法生成字母(报错)

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

必会命令②
https://www.kpyun.fun/posts/basics/core/core04/
作者
久棹
发布于
2025-07-19
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
久棹
只要胆子大,天天寒暑假!
公告
欢迎来到久棹的技术小站!本站专注 Linux 运维学习笔记分享,如有问题欢迎交流探讨 🎉
分类
标签
站点统计
文章
98
分类
11
标签
203
总字数
244,453
运行时长
0
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.13.5
文章许可
CC BY-NC-SA 4.0

文章目录