Що означають фігурні дужки в командному рядку
Що означають фігурні дужки в командному рядку?
Фігурні дужки це один з умовних знаків, які допомагають скоротити кількість писанини в командному рядку.
Формально вони входять в число семи 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. Якщо потрібно помістити всередині фігурних дужок вирази, що містять фігурні дужки, або коми, то необхідно екранувати ці символи зворотним слешем (/), а якщо потрібно ввести сам зворотний слеш, то його екранують другим зворотним слешем:
Фігурні дужки, якщо навчитися ними грамотно користуватися, можуть здорово допомогти при роботі в командному рядку.