Когда вы используете расширение скобки?

Я понимаю, что такое расширение скобки , но я не знаю, как лучше всего использовать его.

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

  • Изменить цвет текста ввода, а не выводить
  • Разрешить все псевдонимы в командной строке zsh
  • Каков общий формат ключевого слова для привязок ключей в файле «inputrc»?
  • Сравните два файла для соответствия строк и сохраните положительные результаты
  • Контроль, который отменяется с помощью Ctrl + C
  • Crontab run-parts
  • Совместное использование псевдонимов и настроек PATH между zsh и bash
  • Это опечатка в разделе перенаправления руководства Bash?
  • Тихая статистика для проверки наличия файла
  • Базовое имя дает дополнительную ошибку операнда
  • Запросить пароль запрограммировать программным путем с помощью сценария оболочки
  • Как заменить текст между двумя маркерами в файле секцией текста из другого файла?
  • 6 Solutions collect form web for “Когда вы используете расширение скобки?”

    Расширение скобки очень полезно, если у вас есть длинные имена путей. Я использую его как быстрый способ резервного копирования файла :

    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 

    Расширение скобки очень удобно при создании больших структур каталогов:

     mkdir -p dir1/{subdir1,subdir2}/{subsubdir1,subsubdir2} 

    Это даст вам

     find dir1 -type d dir1 dir1/subdir1 dir1/subdir1/subsubdir1 dir1/subdir1/subsubdir2 dir1/subdir2 dir1/subdir2/subsubdir1 dir1/subdir2/subsubdir2 

    Вы даже можете сделать еще один шаг и добавить расширение скобки в расширение скобы:

     mkdir -p dir1/{subdir{1,2}}/{subsubdir{1,2}} 

    Это даст вам ту же структуру каталогов, что и приведенный выше пример.

    Я использую его, когда хочу уменьшить ввод текста:

     geany /path/to/file1 /path/to/file2 # versus geany /path/to/file{1,2} 

    Другой пример:

     wajig install libpam0g-dev libiw-dev libdb-dev # versus wajig install lib{pam0g,iw,db}-dev 

    Я использую его для сравнения фактического тестового результата с желаемым тестовым выходом во время разработки. Если тест № 41 терпит неудачу, легко увидеть, какая разница между тестовым выходом (в файле tests.output / 041) и желаемым выходом (в файле tests.out / 041):

     $ diff tests.{out,output}/041 

    Для меня частые случаи:

    Для переименования:

     mv myText.{txt,tex} 

    или

     mv myText.tex{,.old} 

    или

     cp myText.tex{,.backup} 

    (Хотя это менее беспорядочно использовать контроль версий для последних двух задач.)

    Для сравнения (уже упоминалось):

     diff path{1,2}/a.txt 

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

    Я не использую его в своих сценариях оболочки (если нет другой причины, чтобы сценарии были bash или zsh, хотя в этих случаях лучше всего перейти на «настоящий» язык сценариев, например perl или python ). Расширение брекетов не переносится, поскольку оно не находится в стандарте оболочки POSIX. Даже если он работает в ваших сценариях оболочки /bin/sh shebang ed, он не будет работать в системах с более разделенными /bin/sh оболочками (например, dash ).

    В случае разницы в одну цифру вам не требуется расширение скобки; класс символов будет достаточным:

    Bashism:

     diff file{1,2} 

    Портативный:

     diff file[12] 
    Linux и Unix - лучшая ОС в мире.