10

Протестировано это на CentOS и Ubuntu, если вы находитесь в каталоге с кучей файлов

$ ls
day1.tar.gz  day2.tar.gz  day3.tar.gz  day4.tar.gz  day5.tar.gz  day6.tar.gz  day7.tar.gz  day8.tar.gz day9.tar.gz day10.tar.gz

И вы нажмете Alt+Shift+{ он будет awk-завершить каждое имя файла

<Alt+Shift+{>

завершает к:

 day{1{0.tar.gz,.tar.gz},2.tar.gz,3.tar.gz,4.tar.gz,5.tar.gz,6.tar.gz,7.tar.gz,8.tar.gz,9.tar.gz}

а также

day1<Alt+Shift+{>

завершает к:

day1{0.tar.gz,.tar.gz}

Вопросы: что это? Как это называется? Где это полезно? Как я могу настроить это? Могу ли я сделать это для файлов, которые заканчиваются подстрокой, а не начинаются с нее?

1 ответ1

9

В Bash он выполняет функцию readline, complete-into-braces .

Расширение скобок - полезный способ сокращения ссылки на несколько файлов.

Например:

ls -l /path/to/dir/*.{c,h}

будет список всех файлов, которые заканчиваются на ".c" или ".h".

От man bash:

полный в фигурные скобки (M- {)
Выполните завершение имени файла и вставьте список возможных завершений, заключенных в фигурные скобки, чтобы список был доступен для оболочки (см. Расширение фигурных скобок выше).

а также

Расширение скобок
Разбивка скобок - это механизм, с помощью которого можно генерировать произвольные строки. Этот механизм похож на расширение пути, но генерируемые имена файлов не должны существовать. Шаблоны, которые должны быть развернуты в фигурные скобки, принимают форму необязательной преамбулы, за которой следует либо последовательность строк, разделенных запятыми, либо выражение последовательности между парой скобок, за которым следует необязательный postScript. Преамбула имеет префикс к каждой строке, содержащейся в фигурных скобках, а затем к каждой результирующей строке добавляется постскриптум, расширяющийся слева направо.

Расширение скобок может быть вложенным. Результаты каждой расширенной строки не сортируются; порядок слева направо сохраняется. Например, a {d, c, b} e расширяется до "ade ace abe".

Завершение, по определению, завершается, поэтому оно работает с файлами, которые начинаются со строки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .