Как распаковать непосредственно от терминала, если у меня есть URL файла?
Например:
unzip www.test.com/test.zip destination-folder-on-my-pc
Если бы unzip
придерживался бы каналы и фильтрует архитектурный стиль характеристика Unix, то можно было бы ожидать мочь сделать, это путем передачи по каналу вывода wget во вход разархивировало:
wget -O - http://www.test.com/test.zip | (cd destination-folder && unzip -)
, Где тире после -O
стандартный вывод средств, тире после unzip
вход стандарта средств и заключенная в скобки правая сторона запускают подоболочку в корректном каталоге.
Однако формат ZIP хранит свой индекс содержания в конце файла, и unzip
потребности считать это, прежде чем он сможет начать распаковывать. Так, вопреки gzip
и др., это не может распаковать поток в одной передаче.
Как обходное решение Вам нужен временный файл:
wget -O /tmp/z.$ http://www.test.com/test.zip &&
(cd destination-folder && unzip /tmp/z.$)
, Где эти $
просто используются для генерации не сталкивающегося числа.
Вместо того, чтобы выполнить подоболочку, Вы могли использовать -d
, опция разархивировала. И для добавленной гигиены, очистите свой временный файл:
wget -O /tmp/z.$ http://www.test.com/test.zip &&
unzip -d destination-folder /tmp/z.$ &&
rm /tmp/z.$
Вам нужен больше чем один шаг:
Входят в Вашу папку назначения
cd destination
Загрузка Извлечение файла
wget www.test.com/test.zip
, файл
unzip test.zip
Для использования только одной команды использует сценарий:
#!/bin/bash
wget -P "/tmp" "$1"
filename=$(awk -F'/' {print $NF})
unzip "$filename" -d "$2"
rm "/tmp/$filename"
Открывают редактора, чтобы создать новый файл, названный unzip_by_url
и поместить его или в ~/bin
или /usr/bin/local
nano unzip_by_url
И вставить код выше.
Сохраняют и закрываются, и
Делают исполняемый файл файла
chmod +x /path/to/file/unzip_by_url
, Теперь запускают сценарий с:
unzip_by_url www.test.com/test.zip destination-folder-on-my-pc