Расширение Brace - это полезная техника для генерации списков строк, которые можно использовать в сценариях и псевдонимах и на командной строке Linux. Экономьте время и избегайте ошибок, набрав меньше.
Расширение скобки
Перед раковиной Bash Выполняет команду В окне терминала или строки в сценарии, он проверяет, нужно ли выполнять какие-либо замены в команде. Переменные имена заменены их значениями, псевдонимы заменяются командами, которые они являются сокращенными для, и любая расширение выполняется. Расширение Brace - это одна форма расширения, поддерживаемой Bash.
Расширение скобки доступно в современных снарядах, но он может отсутствовать в некоторых старых снарядах. Если вы собираетесь использовать расширение скобки в скриптах, убедитесь, что вы вызываете оболочку, которая поддерживает расширение скобки, например, Bash:
Мы будем использовать Bash для наших примеров.
Генерация списков строк может показаться больше новизной, чем выгода, но он предлагает некоторые функциональные возможности, которые могут сэкономить время и нажатия клавиш. Часто он может обеспечить простое и элегантное решение проблемы или требования.
Простые экспансии
Расширение скобки содержится между парой брекетов «{}». Это может быть список элементов, разделенных запятыми или спецификатор диапазона. Пространства не допускаются внутри брекетов, если вы не завернули нить в кавычки «
"
"
Для списка, разделенного запятыми, процесс расширения принимает каждый элемент в свою очередь и передает его в команду вызова. В этом примере это
эхо
Это просто
печатает их в окне терминала
Отказ Обратите внимание, что запятые игнорируются.
Эхо {один, два, три, четыре}
Список может быть слова или цифры.
Эхо {1,2,3,4}
Порядок элементов списка полностью произвольно.
Эхо (4,2,3,1)
Диапазон расширения имеет начало и конечный символ, связанный с двумя периодами »
Находятся
«Без пробела. Все элементы отсутствующего списка предоставляются автоматически расширением, чтобы создан весь диапазон от начального символа для конечного символа.
Это напечатает цифры от 1 до 10.
Echo {1..10}
Нумерация произвольно. Это не нужно начинать в одном.
Echo {3..12}
Диапазоны могут быть указаны, так что они бегут назад. Это будет генерировать список от пяти до одного.
Echo {5..1}
Диапазоны могут включать негативные номера.
Echo {4 ...- 4}
Как мы ранее указали, диапазон имеет начало и конец персонаж Отказ Это не должно быть числом. Это может быть письмо.
echo {q..v}
Письма тоже могут бежать назад.
echo {f..a}
Использование расширения Brace с петлями
Вы можете использовать расширение скобки с диапазонами в циклах в сценариях.
Для I в {3..7}
делать
Echo $ I.
сделано
Диапазоны расширения Brace позволяют использовать символы в качестве переменной петли.
Для i в {m..q}
делать
Echo $ I.
сделано
Петли обычно используются в скриптах, но нечего помешать вам набрать их в командную строку, чтобы увидеть, что произойдет.
для I в {3..7}; сделать эхо $ i; сделано
Для i в {m..q}; сделать эхо $ i; сделано
Объединение и гнездо
Два соседних расширения не действуют независимо друг от друга. Они взаимодействуют. Каждый элемент в первом расширении действует каждый элемент во втором расширении.
echo {q..v} {1..3}
Расширения также могут быть вложены. Вложенное расширение будет действовать на элементе, непосредственно предшествующему ему.
echo {part-1, часть-2 {a, b, c, d}, part-3}
Вы также можете гнездить расширениями путем создания списка разложений под запятую расширения диапазона.
Echo {{5..0}, {1..5}}
Преамбула и PostScript
Вы можете разместить текст до и после расширения скобки, чтобы иметь этот текст, включенный в результаты расширения. Текст, положенный перед расширением, называется преамбулой, в то время как текст, размещенный за расширением скобки, называется PostScript.
Эта команда использует преамбулу.
Эхо глава {1..3}
Этот пример использует PostScript:
Echo {содержимое, бумага, бильбиография} .md
И эта команда использует оба.
Echo Chapter- {1..4} .md
Расширение имен файлов и каталогов
Как вы, наверное, догадались на данный момент, одно из главных применений расширений скобок - создать имена файлов и каталогов, которые могут быть переданы другим командам. Мы использовали
эхо
В качестве удобного способа точно увидеть, что произойдет, когда срабатывает расширение. Вы можете заменить любую команду, которая принимает имена имена файлов или каталогов в качестве ввода и используют расширение скобки с ним.
К быстрому
Создайте некоторые файлы
, использовать
трогать
:
Touch File- {1..4} .txt
ls * .txt
Если у вас есть много файлов с одинаковым именем базового имени, но разные расширения файлов, и вы хотите выполнить операцию на подмножестве их, расширения Brace могут помочь. Здесь мы сжимаем подмножество файлов, которые имеют «программу» в качестве базена в файл ZIP под названием «Source-code.zip».
Справочники развития содержат множество файлов, которые будут иметь одинаковое baseName, что и ваша основная программа. Обычно вы не хотите создать резервную копию или распространять файлы, такие как объектные файлы ".o". Это аккуратный способ включать только виды интересов файлов.
программа исходного кода zip {.c, .h, .css}
Эта команда сделает копию файла и добавит «.Bak», сделав резервную копию исходного файла. Интересно отметить, что расширение скобки содержит разделенный запятыми список, но первый элемент пуст. Если бы мы не включали запятую, расширение не произошло бы.
CP Brace / New / Prog-1.C {,. Bak}
LS Brace / New / Prog-1.c.bak
Чтобы выполнить некоторые действия на двух файлах в разных каталогах, мы можем использовать расширение скобки на пути к файлам.
В этом примере каталог «Brace» содержит две подкаталоги, которые называются «новым» и один под названием «Старый». Они содержат разные версии одного и того же набора файлов исходного кода. Мы будем использовать
развлекаться
Программа, чтобы увидеть различия между двумя версиями «PROG-1.C».
Diff Brace / {новый, старый} /prog-1.c
Если у вас есть стандартный скелет каталогов, которые вам нужно создать в начале проекта, вы можете быстро создавать их, используя расширение скобки. То
мкдир
-п
(родитель) вариант
создает любые недостающие родительские каталоги
Когда дочерний каталог создан.
MKDIR -P {источник, сборка, человек, помощь {/ стр., / Yelp, / images}}
Дерево
Вы можете использовать расширение скобки с
врач
к
Загрузите несколько файлов
Отказ
В этой команде мы собираемся скачать файлы из двух каталогов, называемых «TEST1» и «TEST2». Каждый каталог содержит два файла под названием «Picture1» и «Picture2».
wget https://www.url-of-your-Choice.com/test (1,2 )/picture (001,002 ).jpg
Перечисление файлов показывает вам файлы, которые были получены и как
врач
Переименовывайте файлы, чтобы избежать столкновений имени с существующими файлами.
Ls Picture *. *
Охватить скобу
Похоже, что расширение скобки - еще один из Лучшие секреты Linux Отказ Многие люди говорят мне, что они никогда не слышали о расширении скобки, в то время как другие сообщают мне, что это одна из их любимых трюков командной строки.
Дайте это попробовать, и это просто может найти свой путь в ваш набор командной линии.