Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » UNIX » UNIX Shell: sh, bash, zsh; Coreutils и ко.; sed, awk, perl;

Модерирует : ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153

Открыть новую тему     Написать ответ в эту тему

digital422

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Товарищи вопрошающие! Если ваша система отлична от ГНУ, и в то же время вы желаете обойтись только дефолтными средствами, указывайте и то и другое сразу, пожалуйста.


UNIX Shell

 
   Это глобальная тема по юниксовой командной оболочке, как по интерактивной работе в командной строке, так и по шелл-скриптам. Ключевые слова: sh, bash, zsh, tcsh, busybox, readline, coreutils, cp, mv, ln, rm, ls, readlink, mkdir, touch, stat, date, test, sleep, chown, chmod, chattr, dd, df, du, env, echo, cat, less, man, grep, sort, findutils, find, locate, xargs, md5sum, cmp, diff, patch, ps, kill, killall, tar, gzip, bzip2, xz, mount, fdisk, parted, mkfs, fsck, e2fsprogs, mtools, ss, netcat, netstat, rsync, ssh, scp, sftp, lftp, ncftp, time, strace.
   Неинтерактивная обработка текста (sed, awk, perl) пока тоже здесь.
   Смотри в других ветках: wget, convert, montage, mogrify и др., gs, git, 7z, p7zip, soffice, mplayer, mencoder, vlc, vim, mc, mcedit, kioclient.
 
 

Hint! Русские маны (подустаревшие, не всегда полные и не всегда для вашей системы) можно попытаться найти на Опеннете, к примеру: bash, tar, grep.

 
Готовые решения:
  • commandlinefu.com
    Крупнейшая база полезных однострочников на командной оболочке с ранжированием на основе пользовательского голосования.
     
  • shell-fu.org
    Аналогично, но поменьше и формат записей более свободный, поэтому встречаются и однострочники, и развернутые скрипты, и просто советы.
     
  • Useful one-line scripts for sed
    Почти исчерпывающий список решений для тех случаев, когда sed незаменим. Более сложные скрипты с sed.sf.net — только для тех, кто знает толк... :)

 
Учебная литература:
  • Greg’s Wiki (http://mywiki.wooledge.org)
    Наиболее обширный авторский сборник постоянно обновляющихся материалов по Башу.

    1. Bash Pitfalls
      (Частые ошибки программирования на Баше: [1], [2], [3], [4], [5] — пер. на русский по сост. на дек. 2008 г.).
      Рассмотрены преимущественно ошибки, возникающие из-за непонимания отличия шелла от «нормальных» скриптовых языков. Если вы уже владеете, например, Перлом, то это вполне может быть ваше первое руководство для ознакомления с Башем.
    2. Bash FAQ
    3. Bash Guide
    4. Bash Reference Sheet
      Шпаргалка по частым синтаксическим оборотам.

 
Классическая учебная литература:
С одной стороны не упомянуть эти издания нельзя, с другой — они настолько устарели, что едва ли их можно рекомендовать в роли учебника.

 

Смело правьте и дополняйте шапку, однако не забывайте отписываться об исправлениях и сохранять исходный вариант под #.
Первый пост темы имел вид...

Всего записей: 354 | Зарегистр. 19-04-2003 | Отправлено: 18:51 16-05-2008 | Исправлено: qw12, 09:42 24-03-2020
digital422

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто силен в xmlstarlet ?
Нужен блок содержащий <TYPE>М</TYPE>, из него выделить значение ARTIST и NAME.
Должен получиться результат из примера: Bon Jovi - Young Guns ( Blaze of Glory)
 

Код:
 
<?xml version="1.0" encoding="utf-8" ?>
<ELEM_LIST WRITE_TIME="2022-12-02 22:51:31.698"><ELEM PLAYER_ID="OBJID_PLAY_X1" PLAYER_NAME="Плеер" SCH_ID="1" SCH_NAME="Default" STATUS="playing">
<START_TIME>22:51:29</START_TIME><START_DATE>2022-12-02</START_DATE>
<TYPE>М</TYPE><NAME>Young Guns ( Blaze of Glory)</NAME><ARTIST>Bon Jovi</ARTIST>
</ELEM>
<ELEM PLAYER_ID="OBJID_PLAY" PLAYER_NAME="Плеер" SCH_ID="1" SCH_NAME="Default" STATUS="preloaded">
<TYPE>Д</TYPE><NAME>Silence</NAME><ARTIST></ARTIST><AUTHOR></AUTHOR>
</ELEM>
<ELEM PLAYER_ID="OBJID_PLAY" PLAYER_NAME="" SCH_ID="1" SCH_NAME="Default">
<TYPE>Д</TYPE><NAME>и это не надо</NAME>
</ELEM></ELEM_LIST>
 

 
Дополнено 2022-12-04
Сделал пока так, нет отслеживания поля TYPE.
xmlstarlet sel -t -m "//ELEM[@STATUS='playing']" -v "concat(TYPE,';',ARTIST,';',NAME)" -n /tmp/playing.xml |
awk -F";" '{print "<TYPE>"$1"</TYPE>""<ARTIST>"$2"</ARTIST>""<NAME>"$3"</NAME>"}'

Всего записей: 354 | Зарегистр. 19-04-2003 | Отправлено: 21:48 02-12-2022 | Исправлено: digital422, 12:31 04-12-2022
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время, digital422
Изначальный запрос (можно использовать "TYPE='М'" как сокращенную форму от "TYPE/text()='М'" ):
xmlstarlet sel -t -m "//ELEM[@STATUS='playing' and TYPE/text()='М']" -v "ARTIST" -o " - " -v "NAME"   -n /tmp/playing.xml
Или
xmlstarlet sel -t -m "//ELEM" -i "[@STATUS='playing' and TYPE='М']" -v "ARTIST" -o " - " -v "NAME"   -n /tmp/playing.xml
Разницу можно мосмотреть в XSLT шаблоне, добавив -C после sel.
Ваш вариант одной командой:
xmlstarlet sel -t -m "//ELEM[@STATUS='playing']" -c "TYPE" -c "ARTIST" -c "NAME" -n /tmp/playing.xml

Всего записей: 1891 | Зарегистр. 07-08-2002 | Отправлено: 10:32 05-12-2022
digital422

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy

Цитата:
Ваш вариант одной командой:  

-c "ARTIST" - такой вариант был, причем один из самых первых, но или так задумано, или это ошибка xmlstarlet, при пустом значении <ARTIST></ARTIST> с ключем -с выходит </ARTIST>, без <ARTIST>. Поэтому вариант с разделителями и появился. Теперь надо разбираться с lua языком, куда этот xml надо загружать и по первому взгляду, в нем можно делать выборку по полю TYPE="М".

Всего записей: 354 | Зарегистр. 19-04-2003 | Отправлено: 10:47 05-12-2022
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
digital422

Цитата:
пустом значении <ARTIST></ARTIST> с ключем -с выходит </ARTIST>, без <ARTIST>

"</ARTIST>" или "<ARTIST/>"? Второй вариант по стандарту тождественен   "<ARTIST></ARTIST>". Но, разумеется, зависит от парсера, которому Вы будете передавать.

Цитата:
выборку по полю TYPE="М".

Так в условии добавьте... Как в моих вариантах.

Цитата:
разбираться с lua языком

Извините, но тогда xmlstarlet низачем не нужен.
Вы сразу в Lua читаете исходный XML  и работаете там с элементом, XPath которого  "//ELEM[@STATUS='playing' and TYPE/text()='М']".
Будет интернет - посмотрю/набросаю подробнее. Lua не знаю, но на этом уровне проблем не должно быть.
UPD - какую версию Lua с каким парсером в какой системе Вы используете?
 

Всего записей: 1891 | Зарегистр. 07-08-2002 | Отправлено: 11:51 05-12-2022 | Исправлено: Alex_Piggy, 12:09 05-12-2022
digital422

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
<ARTIST></ARTIST> - в исходном файле, данных нет.
</ARTIST> - вывод с ключем -с.  
 
<ARTIST>данные</ARTIST> - в исходном файле, данные есть.
<ARTIST>данные</ARTIST> - вывод с ключем -с.  
 
xmlstarlet нужен был чтобы потренироваться, когда-то делал скрипт с ним, даже работающий. Было подозрение на проблему с русскими символами, что конечное устройство не сможет их принять, поэтому нужно было делать доплнительное преобразование. Но в итоге посмотрел примеры по lua и сделал обработку без xmlstarlet.
 
В железке:
The Lua version is version 5.1
_https://support.telosalliance.com/article/rpvravo25l-metadata-filter-functions
по функционалу урезанная, но позволяет справиться с поставленной задачей, которая планировалась с помощью xmlstarlet. В итоге xmlstarlet оказался не нужен.

Всего записей: 354 | Зарегистр. 19-04-2003 | Отправлено: 14:21 05-12-2022 | Исправлено: digital422, 08:42 06-12-2022
insorg



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Хочу забрать html страницу:
Код:
curl -RLO "http://www.amd.com/en/support/kb/release-notes/rn-rad-win-22-11-2"
Не работает.
На всякий случай добавил юзерагент
Код:
curl -RLO "http://www.amd.com/en/support/kb/release-notes/rn-rad-win-22-11-2" -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36"
Всё равно не работает.
Хотя браузер по этой же ссылке страницу открывает.
ЧЯДНТ?

Всего записей: 16725 | Зарегистр. 04-11-2010 | Отправлено: 00:53 28-12-2022
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
insorg
HTTPS + юзерагент

Всего записей: 12402 | Зарегистр. 11-03-2002 | Отправлено: 04:55 28-12-2022
insorg



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pasha_ZZZ
Код:
curl -RLO "https://www.amd.com/en/support/kb/release-notes/rn-rad-win-22-11-2" -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36"
Аналогично не сработало. Просто висит в бесконечном ожидании...

Всего записей: 16725 | Зарегистр. 04-11-2010 | Отправлено: 02:30 29-12-2022
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
insorg

Цитата:
>curl -RLO "https://www.amd.com/en/support/kb/release-notes/rn-rad-win-22-11-2" -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  122k    0  122k    0     0   212k      0 --:--:-- --:--:-- --:--:--  212k

Всего записей: 12402 | Зарегистр. 11-03-2002 | Отправлено: 05:38 29-12-2022
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pasha_ZZZ, добавьте ключ --referer https://www.amd.com
 
$ curl --referer https://www.amd.com -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36" https://www.amd.com/en/support/kb/release-notes/rn-rad-win-22-11-2

Всего записей: 7336 | Зарегистр. 08-09-2001 | Отправлено: 12:39 29-12-2022
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
los
Зачем? У меня и так все скачивается.

Всего записей: 12402 | Зарегистр. 11-03-2002 | Отправлено: 13:20 29-12-2022
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время, insorg
Как ни странно, у меня всегда подвисает без ключа "--compressed". А иногда - без "Accept-Language" и "keep-alive".
Пробуйте открыть старницу в Firefox с Инструментами Разработчика, в вкладке "Сеть" по ПКМ выбирать "скопировать как curl bash" и перенести в файл test.curl.
Разбейте на строки/ команды, перед url добавьте "url = " и запускайте командой  
curl -K test.curl
Комментируя строки можно определить, какие параметры необходимы. Пример:

Код:
 
# Необходимые ключи
url = https://www.amd.com/en/support/kb/release-notes/rn-rad-win-22-11-2
-A "Mozilla/5.0 (Windows NT 5.1; rv:68.0) Gecko/20100101 Goanna/4.8 Firefox/68.0 Basilisk/52.9.0"
--compressed  
# Ключи, без которых иногда подвисает
#-H "Connection: keep-alive"  
#-H "Accept-Language: en-US,en;q=0.5"  
# Ключи, без которых не подвисало
#-H "Host: www.amd.com"
#-H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"  
#-H "Upgrade-Insecure-Requests: 1"
#--http2

PS. --compressed и --keep-alive могут быть в некоторых версиях curl включены по умолчанию. Отсылаемые заголовки можно посмотреть в выводе "curl -Iv google.com"

Всего записей: 1891 | Зарегистр. 07-08-2002 | Отправлено: 13:58 29-12-2022 | Исправлено: Alex_Piggy, 13:59 29-12-2022
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pasha_ZZZ

Цитата:
Зачем? У меня и так все скачивается.

Вы правы, сейчас и у меня скачивается, раньше без ключа --referer у меня не работало.

Всего записей: 7336 | Зарегистр. 08-09-2001 | Отправлено: 14:00 29-12-2022
insorg



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
открыть старницу в Firefox с Инструментами Разработчика, в вкладке "Сеть" по ПКМ выбирать "скопировать как curl bash"

Код:
curl -RLO "https://www.amd.com/en/support/kb/release-notes/rn-rad-win-21-8-2" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:108.0) Gecko/20100101 Firefox/108.0" -H "Accept-Language: en-US,en;q=0.5" -H "Accept-Encoding: gzip, deflate, br"

Лисой подобрал минимально допустимую строку (выкидвал -H лишние, пока работать не переставало), которая работает. Даже реферёр не пригодился.
Но! Оно скачивает html внутри gz.
Курлой можно сразу готовый html на месте развернуть, не записывая на диск gz? Под винду, если что.

Всего записей: 16725 | Зарегистр. 04-11-2010 | Отправлено: 22:50 29-12-2022 | Исправлено: insorg, 23:11 29-12-2022
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Вместо '-H "Accept-Encoding:..." ' поставъте '--compressed'. . То же самое + распаковка.
UPD. Не разбирался, естъ ли разница в командах '-А MyUserAgent' '-H "User-Agent: MyUserAgent"'. Предпочитаю '-А'.

Всего записей: 1891 | Зарегистр. 07-08-2002 | Отправлено: 23:17 29-12-2022 | Исправлено: Alex_Piggy, 23:26 29-12-2022
insorg



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
В винде старая курла
Код:
curl: option --compressed: the installed libcurl version doesn't support this
curl: try 'curl --help' for more information
В приоритете - сохранить совместимость с ней.
Пока что придумал сделать так
Код:
@curl -RL# "https://www.amd.com/en/support/kb/release-notes/rn-rad-win-22-11-2" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:108.0) Gecko/20100101 Firefox/108.0" -H "Accept-Language: en-US,en;q=0.5" -H "Accept-Encoding: gzip, deflate, br" | @"C:\PROGRA~1\7-Zip\7z.exe" e -bso0 -si"rn-rad-win-22-11-2.html.gzip"
Но очень хотелось бы обойтись без 7z, если можно.

Всего записей: 16725 | Зарегистр. 04-11-2010 | Отправлено: 23:27 29-12-2022 | Исправлено: insorg, 23:29 29-12-2022
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
В WinXP я исполъзую https://rwijnsma.home.xs4all.nl/files/curl/
Как вариант - я опечатался. Проверъте по справке.
UPD: сможете скинутъ ту версию, что у Вас? Будет свет-посмотрю.

Всего записей: 1891 | Зарегистр. 07-08-2002 | Отправлено: 23:44 29-12-2022 | Исправлено: Alex_Piggy, 23:51 29-12-2022
insorg



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
Пока я тестирую на C:\Windows\System32\curl.exe (7.55.1), который идёт в дистре с Win10 21H2, т.к. потом на повышение версии обычно проблем нет.
 
За линк - плюс. Гляну на досуге что за сайтец, я что-то с пометкой xpmod помню из софта, скорее всего как раз тоже оттуда.
Для себя чаще всего юзаю бинарник от paehl (сейчас остановился на curl_779_1_rtmp_ssh2_ssl_sspi - он последний у него однофайловый, который работает на ХР). Там вроде должна быть поддержка  '--compressed'.
UPD: Проверил. При наличии '--compressed' всё работает красиво без 7zip. Теперь счастлив.
 
Добавлено:
Кстати, если брать под винду, чьи бинарники лучше в плане работы с привычным http и https?
 
curl_779_1_rtmp_ssh2_ssl_sspi  пишет
Код:
curl 7.79.1 (i386-pc-win32) libcurl/7.79.1 OpenSSL/1.1.1h zlib/1.2.11 zstd/1.4.5 libssh2/1.9.0 librtmp/2.3
Release-Date: 2021-09-22
Protocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps mqtt pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp  
Features: alt-svc AsynchDNS HSTS HTTPS-proxy IPv6 Kerberos Largefile libz NTLM SPNEGO SSL SSPI UnixSockets zstd

curl-7.85.0-mbedtls-zlib-win32-static-xpmod-sse пишет
Код:
curl 7.85.0 (i686-w64-mingw32) libcurl/7.85.0 mbedTLS/3.2.1 zlib/1.2.12
Release-Date: 2022-08-31
Protocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps mqtt pop3 pop3s rtsp smb smbs smtp smtps telnet tftp  
Features: alt-svc AsynchDNS HSTS IPv6 Largefile libz NTLM SSL threadsafe

Или вместо OpenSSL+libssh2 нормально можно обойтись mbedTLS и не колупать мозги?
Просто я всегда юзал классически эту пару, а этот mbedTLS даже и не встречался никогда...

Всего записей: 16725 | Зарегистр. 04-11-2010 | Отправлено: 00:28 30-12-2022 | Исправлено: insorg, 22:25 05-01-2023
mithridat1



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Зачем в этой теме (и разделе UNIX !) еще и виндовые сборки обсуждать ?!
Пока не поздно надо перейти в топик Wget, где вопросам по консольным загрузчикам и место.

Всего записей: 4947 | Зарегистр. 05-01-2006 | Отправлено: 03:32 30-12-2022 | Исправлено: mithridat1, 03:37 30-12-2022
insorg



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mithridat1
А к чему тут wget, если нужен curl?
В разделе "программы" тема-переадресация по curl ведёт сюда.
 
Впрочем, пока что единственный оставшийся вопрос, оставшийся без ответа касается только сравнение OpenSSL+libssh2 / mbedTLS , которое (скорее всего) виндой не ограничивается.

Всего записей: 16725 | Зарегистр. 04-11-2010 | Отправлено: 22:20 30-12-2022
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153

Компьютерный форум Ru.Board » Операционные системы » UNIX » UNIX Shell: sh, bash, zsh; Coreutils и ко.; sed, awk, perl;


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru