🐧 Использование расширения скобок в оболочке Bash |

🐧 Использование расширения скобок в оболочке Bash

Мануал

Расширение скобок {…} – одна из самых малоиспользуемых, но замечательных функций оболочки в Linux.

Вы можете использовать ее для вывода последовательностей цифр и букв.

Добавьте два целых числа или буквы, разделенные двумя точками в фигурных скобках, и увидите волшебство.

В самом простом виде, например, вот это:

echo {1..10}

Можете угадать вывод?

1 2 3 4 5 6 7 8 9 10

Последовательность вывода выводится в одной строке с пробелом между ними.

Позвольте мне привести еще несколько примеров расширения данной практики, чтобы вы лучше поняли его работу.

🐧 Команда Rmmod на Linux

Примеры использования расширения

Допустим, вы хотите получить обратную последовательность чисел от 7 до 1.

echo {7..1}
7 6 5 4 3 2 1

Вы можете добавлять нули:

echo {01..10}
01 02 03 04 05 06 07 08 09 10

Вы можете использовать расширение скобок в виде {x..y..z} для генерации значений от x до y с увеличением на z.

Допустим, вам нужна последовательность четных чисел до числа 15.

echo {0..15..2}
0 2 4 6 8 10 12 14

Или получить нечетную последовательность чисел:

echo {1..15..2}
1 3 5 7 9 11 13 15

Вы можете идти любыми постепенными шагами:

echo {100..1000..99}
100 199 298 397 496 595 694 793 892 991

Он также может принимать отрицательные числа:

echo {3..-4}
3 2 1 0 -1 -2 -3 -4
Между точками в скобках не должно быть пробела.
В противном случае расширение не сработает.
Использование последовательности букв
До сих пор я использовал только последовательности чисел.
Но вы можете использовать его и для генерации последовательностей букв.
[simterm] $ echo {A..H}
A B C D E F G H

Вы можете двигаться и в обратном направлении:

echo {H..A}
H G F E D C B A

Или переходите к инкрементным или декрементным шагам:

echo {H..A..2}
H F D B

Таким же образом можно использовать строчные буквы:

echo {a..f}
a b c d e f

Практическое использование расширения скобок

До сих пор я только показывал примеры создания последовательностей с помощью расширения скобок в оболочке bash.

Но это не практические примеры.

Вы можете применить его на практике.

Позвольте мне поделиться несколькими такими примерами.

Создание нескольких файлов с похожими именами

Создание файлов с определенным шаблоном имени:

touch file_{1..10}.txt
ls
file_10.txt  file_2.txt  file_4.txt  file_6.txt  file_8.txt
file_1.txt   file_3.txt  file_5.txt  file_7.txt  file_9.txt

Создание резервной копии файла

Когда вы собираетесь редактировать файл конфигурации, рекомендуется создать резервную копию.

Обычно к исходному имени файла добавляется расширение .bak.

Это означает, что это резервная копия данного имени файла.

cp -p long_filename.txt long_filename.txt.bak

Это здорово, но давайте воспользуемся расширением скобок:

cp -p long_filename.txt{,.bak}

Опция -p команды cp сохраняет свойства файла, такие как право собственности, временные метки и т.д.

Использование нескольких скобок

Вы можете использовать несколько скобок для создания файлов с одинаковыми именами и разными расширениями.

Вот один пример использования нескольких скобок.

touch {a,b,c}.{hpp,cpp}
ls
a.cpp  a.hpp  b.cpp  b.hpp  c.cpp  c.hpp

Использование расширения скобок в пути

Допустим, у вас есть похожая структура каталогов с небольшими изменениями.

Здесь может помочь расширение скобок.

mv project/{new,old}/dir/file

Приведенная выше команда эквивалентна:

mv project/new/dir/file project/old/dir/file

см. также:

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий