Ben*_*min 57 shell bash ksh zsh brace-expansion
我了解什么是大括号扩展,但我不知道如何最好地使用它。
你什么时候使用它?
如果你有自己的小窍门,请教我一些方便和出色的例子。
dog*_*ane 59
如果路径名很长,大括号扩展非常有用。我使用它作为备份文件的快速方法:
cp /a/really/long/path/to/some/file.txt{,.bak}
Run Code Online (Sandbox Code Playgroud)
将复制/a/really/long/path/to/some/file.txt到/a/really/long/path/to/some/file.txt.bak
您也可以按顺序使用它。我曾经这样做是为了从网上下载很多页面:
wget http://domain.com/book/page{1..5}.html
Run Code Online (Sandbox Code Playgroud)
或者
for i in {1..100}
do
#do something 100 times
done
Run Code Online (Sandbox Code Playgroud)
Chr*_*ian 36
创建大型目录结构时,大括号扩展非常方便:
mkdir -p dir1/{subdir1,subdir2}/{subsubdir1,subsubdir2}
Run Code Online (Sandbox Code Playgroud)
这会给你
find dir1 -type d
dir1
dir1/subdir1
dir1/subdir1/subsubdir1
dir1/subdir1/subsubdir2
dir1/subdir2
dir1/subdir2/subsubdir1
dir1/subdir2/subsubdir2
Run Code Online (Sandbox Code Playgroud)
您甚至可以更进一步,将大括号扩展放入大括号扩展中:
mkdir -p dir1/{subdir{1,2}}/{subsubdir{1,2}}
Run Code Online (Sandbox Code Playgroud)
这将为您提供与上面示例相同的目录结构。
tsh*_*ang 23
当我想减少打字时,我会使用它:
geany /path/to/file1 /path/to/file2
# versus
geany /path/to/file{1,2}
Run Code Online (Sandbox Code Playgroud)
另一个例子:
wajig install libpam0g-dev libiw-dev libdb-dev
# versus
wajig install lib{pam0g,iw,db}-dev
Run Code Online (Sandbox Code Playgroud)
Bru*_*ger 13
在开发过程中,我用它来比较实际的测试输出和所需的测试输出。如果测试#41 失败,很容易看出测试输出(在文件tests.output/041 中)和所需输出(在文件tests.out/041 中)之间的区别:
$ diff tests.{out,output}/041
Run Code Online (Sandbox Code Playgroud)
imz*_*hev 11
对我来说,一些常见的情况是:
重命名:
mv myText.{txt,tex}
Run Code Online (Sandbox Code Playgroud)
或者
mv myText.tex{,.old}
Run Code Online (Sandbox Code Playgroud)
或者
cp myText.tex{,.backup}
Run Code Online (Sandbox Code Playgroud)
(尽管对最后 2 个任务使用版本控制没那么麻烦。)
为了比较(已经提到):
diff path{1,2}/a.txt
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17731 次 |
| 最近记录: |