4

Иногда я хочу выполнить команду, в качестве аргументов этой команды я хочу указать несколько файлов, которые находятся в папке глубоко в иерархии файловой системы, например:

command /this/is/a/long/path/foobar /this/is/a/long/path/quux

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

command /this/is/a/long/path/{foobar,quux}

Тем не менее, имена файлов могут быть длинными, и я хотел бы использовать завершение имени файла (клавиша TAB), но это не работает внутри фигурных скобок, есть идеи?

1 ответ1

1

Небольшой обходной путь: в Bash [Ctrl]+u удаляет из начала командной строки до курсора и помещает его в память, [Ctrl]+y "дергает" (вставляет) его обратно.

Таким образом, предполагая, что вы хотите запустить команду ls и предоставить ее в качестве файлов аргументов из ./deep/below/directory/ , вы можете:

1) начните с ввода длинного имени dir, перед которым ставится пробел (это сохранит несколько нажатий клавиш позже): ./deep/below/directory/ (вы можете использовать [Tab] мере необходимости), а затем [Ctrl]+u , который удалит его и сохранит в памяти (примечание: вам нужно использовать «./» в начале имени каталога, если это относительный путь, в противном случае bash не будет автозаполнять имена каталогов в начале командной строки )

2) затем введите команду (и ее параметры) с пробелом: ex: ls -alFtr

3) используйте [Ctrl]+y чтобы восстановить здесь длинное имя dir, а затем введите начало искомого имени файла и используйте [tab] как вы обычно это делаете, для автозаполнения его имени (имя вырезанного каталога все еще находится в памяти, готов к повторному использованию)

4) повторите шаг 3) столько раз, сколько необходимо

5) [Enter]

Долго печатать, но гораздо быстрее использовать ^^, попробуйте!

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