Загрузить файл с фактическим именем с помощью wget

На самом деле это не ответ, а просто примечание о том, что необходимо учитывать, чтобы решение работало в общем случае.

#! /bin/sh
echo \\
echo a#\
b
echo 'foo\
bar'
cat << EOF
this\
is joined
this 'as\
well'
$(ls \
-l)
EOF
cat << E\OF
this is\
not joined
EOF
echo "$(ls \
-l)"
echo `ls \\
-l`

Насколько я понимаю, цель вопроса заключается в том, что он должен быть преобразован в:

#! /bin/sh
echo \\
echo a#b
echo 'foo\
bar'
cat << EOF
thisis joined
this 'aswell'
$(ls -l)
EOF
cat << E\OF
this is\
not joined
EOF
echo "$(ls -l)"
echo `ls -l`
9
29.09.2017, 12:13
2 ответа

Оболочка выполняет обычную интерпретацию символов, особенно ?как подстановочный знак (, который здесь не имеет значения )и &как "поместить в фоновый режим". Вы должны были заметить последнее, потому что ответ оболочки отличается от прямой команды.

Значит нужно цитировать:

wget 'http://abc/geo/download/?acc=GSE48191&format=file'
8
27.01.2020, 20:04
wget --content-disposition 'https://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE48191&format=file'

Загружаемый файл представляет собой tarархив (двоичный файл ), предоставленный по динамической ссылке с веб-сервера. wgetобычно сохраняет файл, используя часть URL-адреса, который вы используете, но в этом случае это просто конечная точка REST API (или что-то подобное ), поэтому имя будет неудобным для работы (это все еще будет допустимое имя, и содержимое файла будет таким же ).

Однако в этом случае сервер предоставляет заголовок Content Disposition, содержащий фактическое имя файла, которое wgetможно использовать, если вы используете опцию --content-disposition. В моем руководстве для wgetэта опция помечена как «экспериментальная».

Вам также необходимо заключить URL-адрес в кавычки, чтобы оболочка не интерпретировала содержащиеся в нем символы &и ?.


Эквивалентная вещь с использованиемcurl:

curl -J -O 'https://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE48191&format=file'

Или, используя эквивалентные длинные опции:

 curl --remote-header-name --remote-name 'https://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE48191&format=file'

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

tar -xvf GSE48191_RAW.tar

Из-за способа создания этого конкретного архива файлы архива будут распакованы в текущий каталог (, поэтому создание нового каталога, перемещение туда архива и его распаковка могут быть хорошая идея ). Файлы в этом архиве представляют собойgzip-сжатые CELфайлы.

31
27.01.2020, 20:04

Теги

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