Я в bash пока не силён и знаю только простейший синтаксис if, fi, case и прочее. Мне нужно написать программу которая будет делать следующее.
1) Взять исходник этой html страницы http://mirror.yandex.ru/archlinux/core/os/x86_64/
2) Должна создать новый файл > output.
3) писать в файл output строчку ¨http://mirror.yandex.ru/archlinux/core/os/x86_64/¨
4) Брать названия которые в двойных ковычках с форматом .sig и .tar.xz, и дополнять файл output именем файла.
5) Переходить к третьему шагу до тех пор пока не вынет все ссылки из текста.
6) Всё это должно быть написано на языке bash.
Кто поможет тому плюс в репутацию!
Выбрать ссылки на файлы из html
wget -c -r -nH --cut-dirs=5 ftp://mirror.yandex.ru/archlinux/core/os/x86_64/Какова конечная цель? Команда выше загрузит в текущий каталог все содержимое каталога /archlinux/core/os/x86_64/ c FTP-сервера Яндекса. При этом все составляющие путей к файлам будут отброшены.
И да, "программой" сценарий оболочки назвать язык не поворачивается :)
Какова конечная цель?
Мне нужно все эти пакеты выкачать чтобы arch linux поставить.
wget -c -r -nH --cut-dirs=5 [url]ftp://mirror.yandex.ru/archlinux/core/os/x86_64/[/url]
Будет отлично если эта команда будет с андроида работать.
программой
Я читал книгу а там мужик назвал написание скриптов bash настоящим програмированием :-X
curl - для просмотра страницы в внутри.
grep с ключиком -oE в помощь.
Для андроида 5.0 и выше есть пакет termux в котором можно установить все нужные программы через apt.
Будет отлично если эта команда будет с андроида работать.
Хм, у меня не пошёл этот бинарник...
На каком андроида работает?
У меня пока самый лучший вариант это в termux установить пакет wget, войти выйти, что бы использовался от пакета а не busybox.
Кстати задача криво написана. Не пойму что надо сделать.
XliN, Перевожу: Спарсить все ссылки на файлы со страницы))
ЗЫ
Весьма неплохо решается одной строчкой прямо в ком строке
[console]curl http://mirror.yandex.ru/archlinux/core/os/x86_64/ | grep '<a href' | sed 's/<a href="/http:\/\/mirror.yandex.ru\/archlinux\/core\/os\/x86_64\//g'| sed 's/">.*//g' |grep -v "\.\."> output[/console]
А чтобы сразу все и скачать:
[console]wget $(curl http://mirror.yandex.ru/archlinux/core/os/x86_64/ | grep '<a href' | sed 's/<a href="/http:\/\/mirror.yandex.ru\/archlinux\/core\/os\/x86_64\//g'| sed 's/">.*//g' |grep -v "\.\.")[/console]
На каком андроида работает?
Не могу сказать:
Downloads/wget-binary: ELF 32-bit LSB executable, ARM, EABI4 version 1 (SYSV), dynamically linked, interpreter /system/bin/linker, not strippedМне нужно
Это радует! Дерзайте.
чтобы сразу
man wget - великая сила!
termux
Это тайна! Нельзя же всем! :D
XliN, Перевожу: Спарсить все ссылки на файлы со страницы))
ЗЫ
Весьма неплохо решается одной строчкой прямо в ком строке
[console]curl http://mirror.yandex.ru/archlinux/core/os/x86_64/ | grep '<a href' | sed 's/<a href="/http:\/\/mirror.yandex.ru\/archlinux\/core\/os\/x86_64\//g'| sed 's/">.*//g' > output[/console]
А чтобы сразу все и скачать:
[console]wget $(curl http://mirror.yandex.ru/archlinux/core/os/x86_64/ | grep '<a href' | sed 's/<a href="/http:\/\/mirror.yandex.ru\/archlinux\/core\/os\/x86_64\//g'| sed 's/">.*//g' )[/console]
Мой вариант:
[console]$ curl http://mirror.yandex.ru/archlinux/core/os/x86_64/|grep href|grep -oE '"[[:print:]]+"'|sed 's/"//g'|awk '{print "http://mirror.yandex.ru/archlinux/core/os/x86_64/"$1}'|grep -v "\.\."[/console]
Может немного длиннее зато набирать легче, без всяких обратных слэшей.
Последний элемент элемент конвейера не мешало бы добавить и вам, а то ссылка на ../ не очень кошерно.
$ curl http://mirror.yandex.ru/archlinux/core/os/x86_64/|grep href|grep -oE '"[[:print:]]+"'|sed 's/"//g'|awk '{print "http://mirror.yandex.ru/archlinux/core/os/x86_64/"$1}'|grep -v "\.\."
Имхо оптимально.
[quote="ormorph"]termux
Это тайна! Нельзя же всем! :D[/quote]
Ну вот, теперь не выйдет из меня разведчика...
CыПыСы, я про нее напрочь забыл)а то ссылка на ../ не очень кошерно.
Да собственно и не длинее, просто я никак не приучусь к grep'y в связке с регэкспами, как-то привык sed юзать, так привычки и не меняюМожет немного длиннее зато набирать легче
Да собственно и не длинее, просто я никак не приучусь к grep'y в связке с регэкспами, как-то привык sed юзать, так привычки и не меняю
Ну тут все довольно просто для понимания, главное по регулярным выражениям почитать тыц
Использование grep в скриптах позволяет ещё немного оптимизировать за счёт того, что если срока присутствует заданным параметром, то возвращает 0, в противном случае 1. Можно одновременно выполнять проверку на наличие строк.
Кстати задача криво написана. Не пойму что надо сделать.
Тут уже все давно поняли
Для андроида 5.0 и выше
Дерьмо этот андроид 5! Kit-Kat поставил обратно и радуюсь.
curl http://mirror.yandex.ru/archlinux/core/os/x86_64/|grep href|grep -oE '"[[:print:]]+"'|sed 's/"//g'|awk '{print "http://mirror.yandex.ru/archlinux/core/os/x86_64/"$1}'|grep -v "\.\."
Вот рабочий наконец-то скрипт! Держи лайк