被遗忘的 bash 特性-展开

Posted Linux运维入门

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了被遗忘的 bash 特性-展开相关的知识,希望对你有一定的参考价值。

1、什么是命令行展开

先来看一个例子

wangenzhi@k8s-node2:~ $ mkdir -pv /home/wangenzhi/{A,B,C}
mkdir: 已创建目录 "/home/wangenzhi/A"
mkdir: 已创建目录 "/home/wangenzhi/B"
mkdir: 已创建目录 "/home/wangenzhi/C"
被遗忘的 bash 特性-展开
命令行展开示例1

通过上面示例其实我们可以看到正常情况下需要创建三次的步骤,一次就完成了。bash 其实是将 {} 中的内容先进行展开,而后进行操作。再看一个例子看看是否能够理解。

wangenzhi@k8s-node2:~ $ mkdir -pv {a,b}_{c,d}
mkdir: 已创建目录 "a_c"
mkdir: 已创建目录 "a_d"
mkdir: 已创建目录 "b_c"
mkdir: 已创建目录 "b_d"

剖析一下上面的执行过程:

1、 {a,b}_{c,d} 进行展开
2、展开后得到如下结果

a_c
a_d
b_c
b_d

3、执行 mkdir创建目录

cp、mv 命令使用展开

cp 命令不用废话大家都知道干嘛的,平时你要想备份一个文件,是不是下面这样,如果不是说明你对命令行展开已经非常熟悉并且经常使用。

wangenzhi@k8s-node2:~ $ cp message.log message.log.bak
wangenzhi@k8s-node2:~ $ ll
总用量 0
-rw-rw-r-- 1 wangenzhi wangenzhi 0 4月   1 22:24 message.log
-rw-rw-r-- 1 wangenzhi wangenzhi 0 4月   1 22:24 message.log.bak

掌握了命令行展开以后我们可以这样来一波操作,同样的例子

wangenzhi@k8s-node2:~ $ cp message.log{,.bak}
wangenzhi@k8s-node2:~ $ ll
总用量 0
-rw-rw-r-- 1 wangenzhi wangenzhi 0 4月   1 22:26 message.log
-rw-rw-r-- 1 wangenzhi wangenzhi 0 4月   1 22:26 message.log.bak

mv 命令使用命令行展开其实跟 cp 一样,直接看例子吧

wangenzhi@k8s-node2:~ $ ll
总用量 0
-rw-rw-r-- 1 wangenzhi wangenzhi 0 4月   1 22:26 message.log
wangenzhi@k8s-node2:~ $ mv message.log{,.bak}
wangenzhi@k8s-node2:~ $ ll
总用量 0
-rw-rw-r-- 1 wangenzhi wangenzhi 0 4月   1 22:26 message.log.bak
命令行展开示例2

通过命令行展开,在某些场景下确实可以提高我们的效率显得自己很专业。

看完本文是否有收获?请转发分享给更多人

关注「Linux运维入门」一起交流技术


以上是关于被遗忘的 bash 特性-展开的主要内容,如果未能解决你的问题,请参考以下文章

bash的工作特性之命令执行返回值和命令展开的内容及练习示例

bash的工作特性之命令执行状态返回值和命名行展开所涉及的内容及其示例演示

Linux命令之bash的基础特性(命令历史命令补全路径补全命令行展开。)

linux下部分文件管理类基本命令汇总以及bash展开特性介绍

Linux bash基础特性二

Bash基础特性