Що означають фігурні дужки в командному рядку

Що означають фігурні дужки в командному рядку?

Фігурні дужки це один з умовних знаків, які допомагають скоротити кількість писанини в командному рядку.

Формально вони входять в число семи expansions (розширення, розкриття), що застосовуються в командному рядку шелла bash.

Що це за розширення такі? По-русски їх найкраще назвати скороченнями, як це не дивно. Дивіться самі: всім відома тильда (

), Будучи надрукована в командному рядку, розкриється в шлях до нашого домашнього каталогу:

Розкриття фігурних дужок

(Замість трикрапки впишемо імена всіх проміжних каталогів).

А можемо залучити на допомогу скорочення - фігурні дужки:

Виконайте цей досвід і самі переконаєтеся, що в робочій директорії з'явилося 12 нових каталогів. Щоб вони нам надалі не заважали, видалимо їх:

Перевірте - їх більше немає.

Однак інтуїція підказує, що повинен існувати і більш короткий шлях, і цей шлях, звичайно, є:

А для більш складних поєднань навіть:

Це, самі розумієте, для вибіркового створення директорій.

Ось ще приклад застосування фігурних дужок:

Потрібно змінити права доступу до декількох файлів: old, current і new, що знаходяться в одній директорії:

Ми застосували фігурні дужки, щоб не писати імена та шляхи (path) всіх трьох файлів повністю.

Обережно, дужки розкриваються

Існує кілька правил, які дотримуються при розкритті фігурних дужок:

Правило 1. Усередині фігурних дужок не повинно бути пробілів, так як шелл сприймає пробіл як роздільник. Строго кажучи, крім пробілу існують і інші роздільники, наприклад крапка з комою, але ми зараз торкатися їх не будемо, щоб не відхилитися в сторону.

Наприклад, ми можемо створити файли пес.txt і кот.txt командою:

І вони будуть благополучно створені.

Але, варто всередину фігурних дужок проникнути пробілу, як почнеться щось безглузде:

Перевіримо, що вийшло:

Ми отримали два файли, але з абсолютно неймовірними іменами!

Правило 2. При розкритті фігурних дужок ніякої сортування об'єктів не відбувається, і вони інтерпретуються в тому ж порядку, в якому вказані всередині фігурних дужок.

Відключимо сортування в команді ls:

Все одно, файли створюються в тому ж порядку.

Правило 2 говорить про інший сортування - про те, що при розкритті фігурних дужок, дії над об'єктами виконуються в тому ж порядку, в якому вони записані всередині фігурних дужок, і зчитування відбувається, як і належить, зліва направо (в порядку читання). Ось приклад:

Порядок підстановки збережений, і вийшли слова зберігають порядок, в якому їх частини знаходилися всередині фігурних дужок.

Є випадки, коли це властивість фігурних дужок набуває важливого значення. Скажімо, ми вирішили відредагувати файл /etc/X11/xorg.conf. Перед цим зазвичай створюють його резервну копію. Ми скористаємося для цього фігурними дужками.

Тільки підемо на підстрахування - щоб не проводити навчання з реальним файлом /etc/X11/xorg.conf, що може закінчитися сумно, ми створимо в домашній директорії папку Досвід:

і відразу перейдемо в неї:

Перевіримо, чи все в порядку:

Тепер, в цій папці, ми можемо створювати, змінювати і знищувати будь-які файли, і нічого нам за це не буде.

Отже, створимо файл xorg.conf:

Тепер створимо його резервну копію, застосовуючи фігурні дужки:

Припустимо, наші зміни в файлі xorg.conf були невдалі, і ми вирішили повернути на його місце збережену копію. Для цього ми можемо застосувати майже ту ж команду, що і для резервного копіювання, змінивши лише послідовність виразів в фігурних дужках:

Команда cp потребує підтвердження, ми натискаємо ENTER, і справу зроблено: файл xorg.conf переписаний файлом xorg.conf.bak.

Потрібно тільки не забувати, що шелл інтерпретує команду:

Тому порядок об'єктів всередині фігурних дужок надзвичайно важливий.

Правило 3. При розкритті фігурних дужок шелл розглядає всі символи всередині фігурних дужок як прості символи, а не як метасимволу або символи регулярних виразів.

Тому, хоча команда

Видалить з поточної директорії всі файли типу file1, file2, fileN, file_file і подібні,

видалить тільки два файли file * і file1, тобто Астеріск (*) буде інтерпретований як проста зірочка.

Правило 4. Якщо потрібно помістити всередині фігурних дужок вирази, що містять фігурні дужки, або коми, то необхідно екранувати ці символи зворотним слешем (/), а якщо потрібно ввести сам зворотний слеш, то його екранують другим зворотним слешем:

Фігурні дужки, якщо навчитися ними грамотно користуватися, можуть здорово допомогти при роботі в командному рядку.