[转帖]linux 下 {}大括号的用法

linux,大括号,用法 · 浏览次数 : 0

小编点评

在Linux中,经常遇到类似于你问题的场景。为了简化操作,我们可以利用一些命令技巧来实现足不出户的操作。 **1. 大括号扩展** 大括号可以用来包围多个参数,并自动扩展为多个参数。例如,在备份文件时,我们可以使用以下命令: ```bash cp /etc/apt/sources.{list,list.bak} ``` 其中 `{list,list.bak}` 是两个参数,它们分别代表 `sources.list` 和 `sources.list.bak` 文件。 **2. 逗号分隔参数** 在一些情况下,我们可能需要将多个参数传递给命令,可以用逗号隔开。例如,我们可以使用以下命令将 `mam,pap,ba`三个参数传递给 `echo` 命令: ```bash echo {mam,pap,ba}a    mama papa baa ``` **3. cd 命令** cd 命令可以用来改变当前目录。我们可以使用以下命令从 `/etc/apt/sources`目录中创建一个新的目录: ```bash cd /etc/apt/sources.{list,list.bak} ``` **4. 与其他命令一起使用** 我们可以将多个命令一起执行,例如: ```bash cp /etc/apt/sources.list{,.bak} && echo post{script,office,ure}    postscript postoffice posture & ``` 这个例子将首先备份 `sources.list` 文件,然后打印一些指令,最后执行 `postscript` 和 `postoffice` 命令。

正文

我们平时使用Linux的时候经常遇到这样一个问题,举例有这样一种情况:执行命令

$ cp /etc/apt/sources.list /etc/apt/sources.list.bak

这里面有个问题,明明 /etc/apt/sources 这几个字都是一样的,为什么要打两遍?这样的还算短了,要是更深层的目录,那花的力气可就大了。跟上面例子很相似的情况是:在备份一个文件,重命名一个文 件,或是创建一个链接,都要进行类似的操作,重复一个相同的路径。通常比较明智的做法是先 cd 到那个目录,然后在那个目录下进行操作,完后再 cd 回来。不过这样做还是比较麻烦,有没有足不出户的解决方法?答案是肯定的。

Bash 有个功能叫大括号扩展,大括号包围的,用逗号隔开的参数会扩展为独立的多个参数。这样讲您一定懵了,具体一点,上面那个备份文件的例子可以写成:

$ cp /etc/apt/sources.{list,list.bak}

Shell 在解释时会自动将后面的参数扩展成两个,就变成了和上面一样的完整命令。这样就实现了足不出户操作,而前面那一串目录只要打一次就行,连 cd 也免敲了。

其实这个命令还可以再简化,那个 list 也可以并过去的。之前我一直在想,拿什么来代表空白,其实什么都不用写就行了。

$ cp /etc/apt/sources.list{,.bak}

这样逗号前面没东西,那么参数就保持原来的不变,逗号后面的照样扩展
花括号用来匹配一组用逗号分隔的字符串中的任一个。左花括号之前的所有字符称为前文(preamble),右花括号之后的所有字符称为后文(preamble)。前文和后文都是可选的。花括号中不能包含不加引号的空白符。样例如下:

1 在/usr/local/src/bash目录下创建4个新目录,它们分别为:old,new,dist和bugs

$ mkdir /usr/local/src/bash/{old,new,dist,bugs}

2 打印指令

  1. $ echo {mam,pap,ba}a
  2.     mama papa baa
  3. $ echo post{script,office,ure}
  4.     postscript postoffice posture

 

文章知识点与官方知识档案匹配,可进一步学习相关知识
CS入门技能树Linux入门初识Linux29068 人正在系统学习中

与[转帖]linux 下 {}大括号的用法相似的内容:

[转帖]linux 下 {}大括号的用法

我们平时使用Linux的时候经常遇到这样一个问题,举例有这样一种情况:执行命令 $ cp /etc/apt/sources.list /etc/apt/sources.list.bak 这里面有个问题,明明 /etc/apt/sources 这几个字都是一样的,为什么要打两遍?这样的还算短了,要是更

[转帖]linux shell中 if else以及大于、小于、等于逻辑表达式介绍

https://www.jb51.net/article/34332.htm 在linux shell编程中,大多数情况下,可以使用测试命令来对条件进行测试,这里简单的介绍下,方便需要的朋友 比如比较字符串、判断文件是否存在及是否可读等,通常用"[]"来表示条件测试。注意:这里的空格很重要。要确保方

[转帖]linux下df查看空间已经占用%100,但是找不到大文件的解决方法

https://www.cnblogs.com/leffss/p/8571685.html 有时候在linux下会遇到这种情况:df查看空间已经占用%100,但是找不到大文件,怎么回事呢,经过网上查找资料,得到解决方法: 1.使用lsof查看已删除但未释放的文件 lsof -n | grep del

[转帖]Linux下 查看 每个进程占用的网络带宽 - NetHogs

https://www.cnblogs.com/xuyaowen/p/NetHogs.html 今天在服务器上进行测试程序,发现网速占用比较大,但不是我的程序。可能是其他同学在下载或者上传数据,所以需要看到底是哪个进程。 这时候使用 iftop, vnstat 等命令不能看出具体是哪个进程占用,因为

[转帖]linux磁盘空间占用满,但是找不到大文件的解决办法

https://blog.csdn.net/ChenLuLiang/article/details/128033237 1.查看磁盘空间使用情况(它会统计碎片占用的磁盘空间): df -Th 2.然后进入到根目录下 cd /3.查看磁盘每个目录的大小 du -h --max-depth=1 发现每个

[转帖]【学习笔记】Linux下CPU性能评估

Linux下CPU性能评估 1、 vmstat监控CPU使用情况 【说明】 procs: l r表示运行和等待CPU时间片的进程数,这个值如果长期大于系统CPU的个数,就说明CPU不足,需要增加CPU。 l b表示在等待资源的进程数,比如正在等待I/O或者内存交换等。 memory: l swpd:

[转帖]Linux三剑客之sed的初阶使用

https://www.jianshu.com/p/ceea435635a2 大多数情况下,对于文件内容的修改需要依赖交互式的软件来实现,例如vim修改文件的内容则是依赖光标的移动和修改操作来完成对文件某一处内容的修改。然而,在linux操作系统中,也存在一种非交互式的方法来修改文件内容,通过发送特

[转帖]Linux磁盘I/O(二):使用vm.dirty_ratio和vm.dirty_background_ratio优化磁盘性能

文件缓存是一项重要的性能改进,在大多数情况下,读缓存在绝大多数情况下是有益无害的(程序可以直接从RAM中读取数据)。写缓存比较复杂,Linux内核将磁盘写入缓存,过段时间再异步将它们刷新到磁盘。这对加速磁盘I/O有很好的效果,但是当数据未写入磁盘时,丢失数据的可能性会增加。 当然,也存在缓存被写爆的

[转帖]Linux 性能优化和内核观测 - CPU 篇(一)

https://blog.51cto.com/hongchen99/5840053 简介 中央处理器(central processing unit,简称 CPU)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。所有的计算机程序都运行在CPU之上,在大多数情况下CPU都是性能分析

[转帖]Linux中split大文件分割和cat合并文件详解

https://www.yingsoo.com/news/servers/70195.html 当需要将较大的数据上传到服务器,或从服务器下载较大的日志文件时,往往会因为网络或其它原因而导致传输中断而不得不重新传输。这种情况下,可以先将大文件分割成小文件后分批传输,传完后再合并文件。 1. 分割文件