Я понимаю, что такое расширение скобок , но я не знаю, как лучше его использовать.
Когда вы используете это?
Пожалуйста, научите меня некоторым удобным и замечательным примерам, если у вас есть свой совет.
Я понимаю, что такое расширение скобок , но я не знаю, как лучше его использовать.
Когда вы используете это?
Пожалуйста, научите меня некоторым удобным и замечательным примерам, если у вас есть свой совет.
Расширение скобок очень полезно, если у вас длинные имена путей. Я использую это как быстрый способ сделать резервную копию файла :
cp /a/really/long/path/to/some/file.txt{,.bak}
будет копировать /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
или же
for i in {1..100}
do
#do something 100 times
done
program -f file1 -f file2 -f file3
, вы можете сделатьprogram "-f file"{1..3}
program
получает три слова:"-f file1" "-f file2" "-f file3"
, вместо 6:"-f" "file1" "-f" "file2" "-f" "file3"
.for
цикле немного бессмысленно, так как вы можете писать,for ((i=1; i<=100; i++))
и это более эффективно.Расширение скобок очень удобно при создании больших структур каталогов:
Это даст вам
Вы могли бы даже сделать еще один шаг и добавить расширение скобки в расширение скобки:
Это даст вам ту же структуру каталогов, что и в примере выше.
источник
mkdir -p dir1/{subdir{1,2}}/{subsubdir{1,2}}
) фактически не имеет никакого значения. Вы могли бы просто сделать это:mkdir -p dir1/subdir{1,2}/subsubdir{1,2}
.subdir1
иsubdir2
в не буквальном смысле. Заменитьsubdir1
наcat
иsubdir2
с,dog
например.Я использую его, когда хочу уменьшить количество набираемых текстов:
Другой пример:
источник
Я использую его для сравнения фактического результата теста с желаемым результатом теста во время разработки. Если тест № 41 не пройден, легко увидеть разницу между тестовым выводом (в файле tests.output / 041) и желаемым выводом (в файле tests.out / 041):
источник
Некоторые частые случаи для меня:
Для переименования:
или же
или же
(Хотя использовать управление версиями для последних двух задач не так уж и сложно.)
Для сравнения (уже упоминалось):
источник
Здесь есть несколько отличных ответов, но ни один из них не упоминает, когда не следует использовать скобки. Как и другие ответчики, я немного использую расширение скобок в командной строке. Я также использую его в своих псевдонимах и функциях, поскольку могу ожидать умную оболочку.
Я не использую его в своих сценариях оболочки (если только по какой-то другой причине сценарии должны быть bash или zsh, хотя в этих случаях лучше всего перейти на «настоящий» язык сценариев, такой как
perl
илиpython
). Расширение Brace не является переносимым, поскольку оно не входит в стандарт оболочки POSIX. Даже если он работает в ваших/bin/sh
- притон скриптов ред оболочки, он не будет работать на системах с более раздели/bin/sh
оболочек (напримерdash
).В случае разницы в одну цифру вам не нужно расширять скобки; Класс персонажа будет достаточно:
Bashism:
Портативный:
источник
file{1,2}
он всегда будет расширятьсяfile1 file2
, в то время как будетfile[12]
расширяться только до существующих имен файлов: то есть, еслиfile1
существует, ноfile2
не будет,file[12]
расширяетсяfile1
только до .[]
Расширение действительно ограниченная версия?
расширения (и они называются «имя пути расширения»).