Команда Linux unzip просто извлекает файлы из каталогов, имена которых содержат заданную строку

Два пути:

Если вы хотите сделать разовую -вещь, вы можете установить EXITловушку:

trap 'rm /etc/foo' EXIT

Это запустит данный код при выходе из текущей оболочки. Ловушку можно установить в интерактивной подсказке или в $HOME/.bash_profile, если вы хотите, чтобы это происходило каждый раз, (обратите внимание, что повторная установка ловушки удалит ранее установленную ловушку ). Вы можете удалить ловушку перед ее выполнением с помощью trap - EXIT.

Другой способ: если вы хотите всегда запускать определенный набор команд при выходе из интерактивной оболочки входа в систему, вы можете поместить эти команды в $HOME/.bash_logout.

Этот файл выполняется при выходе из интерактивной оболочки входа в систему или при выполнении не -интерактивной оболочки входа в систему exit.

1
27.05.2021, 06:19
1 ответ

Ваш пример unzip foo.zip *.txtработал только потому, что в вашем рабочем каталоге не было файла *.txt. В противном случае *.txtбыли бы расширены оболочкой до имен текстовых файлов в вашем каталоге. Вы должны процитировать его, чтобы быть в безопасности.

Так как unzipиспользует подстановочные знаки, используйте

unzip foo.zip '*acme*/*.txt'

или даже

unzip foo.zip '*acme*.txt'

Если вы не хотите восстанавливать исходную структуру каталогов и извлекать файлы в текущий рабочий каталог, добавьте параметр-j:

unzip -j foo.zip '*acme*/*.txt'
1
28.07.2021, 11:28

Теги

Похожие вопросы