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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
insorg
 
Dirk Paehl собирает все свои сборки с разным набором возможностей и часто на устаревших исходниках. Я раньше ими иной раз пользовался, после перестал - проще самому собрать.
 
А чем не устраивает официальная сборка cURL?

Цитата:
cURL 7.87.0 Win32/Win64 MinGW-w64 standalone official build by Viktor Szakets
 
Release date: 2022-12-21
 
Libs:
 
  libcurl/7.87.0 OpenSSL/3.0.7 (Schannel) zlib/1.2.13 brotli/1.0.9 zstd/1.5.2 WinIDN libssh2/1.10.0 nghttp2/1.51.0 ngtcp2/0.11.0 nghttp3/0.8.0 libgsasl/2.2.0
 
Protocols:
 
  dict file ftp ftps gopher gophers http https imap imaps ldap ldaps mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp ws wss
 
Features:
 
  alt-svc AsynchDNS brotli gsasl HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos Largefile libz MultiSSL NTLM SPNEGO SSL SSPI threadsafe TLS-SRP UnixSockets zstd

скачать, скопировать cURL.exe в систему и позвать curlmn.cmd который допросит бинарник и сохранит юзер мануал, справку по ключам, файл version и сертификаты которые кидаются в каталог с бинарником - по умолчанию  тот их  рядом с собой ищет, но можно ключами указать к ним путь. И вытаскивать проще скриптом curld.cmd. Тогда не придётся думать, как прикрутить экзотику используемую Паулем (тот её зело любит).
 
Что касаемо различия официальной сборки The cURL project и сборок от Дирка, то различие только в том, что Дирк выносит часть кода во внешние зависимости с собственной реализацией и урезает функционал. Не говоря об  использовании устаревших  исходников. С сайта проекта ссылки на его сборки удалены за эти художества. А официальные сегодня такие:
 
Windows 32/64-bit     7.87.0     binary     the curl project
Windows 32/64-bit     7.87.0     binary     Chocolatey
Windows 32/64-bit     7.86.0     libcurl     Vcpkg
Windows 32/64-bit     7.64.1     binary     Stefan Kanthak
 
и сборка от the curl project не требует поиска и добавления в систему дополнительных зависимостей - её бинарник cURL.exe использует только системные DLL и не нуждается в наличии в системе libcurl.dll, а многие сборки Дирка без неё не запустятся т.к. часто это просто консольная оболочка над libcurl и libssh + lib* вызывающая реализованные им  функции.

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")
Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti

Всего записей: 33225 | Зарегистр. 31-07-2002 | Отправлено: 21:48 05-01-2023 | Исправлено: Victor_VG, 22:11 05-01-2023
insorg



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

Цитата:
чем не устраивает официальная сборка cURL?
На ХР не работает.
Всё начиналось с этого...
 
Добавлено:
На официалке фич вроде прилично завезли
Код:
curl 7.87.0 (i686-w64-mingw32) libcurl/7.87.0 OpenSSL/3.0.7 (Schannel) zlib/1.2.13 brotli/1.0.9 zstd/1.5.2 WinIDN libssh2/1.10.0 nghttp2/1.51.0 ngtcp2/0.11.0 nghttp3/0.8.0 libgsasl/2.2.0
Release-Date: 2022-12-21
Protocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp ws wss
Features: alt-svc AsynchDNS brotli gsasl HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos Largefile libz MultiSSL NTLM SPNEGO SSL SSPI threadsafe TLS-SRP UnixSockets zstd  
, но из них далеко не всё нужно, чтобы просто сходить и по https что-нибудь скачать. Всякая почта и извращения вроде тоже не нужны (пока что?).
Возможно, на варианте xpmod остановлюсь, если нет каких-то проблем с тамошней либой mbedTLS...

Всего записей: 16685 | Зарегистр. 04-11-2010 | Отправлено: 22:19 05-01-2023
tmrx

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

Цитата:
openssl

Может юзать мозилловские сертификаты
 

Цитата:
mbedtls

Юзает системные сертификаты
На хрюше, ясное дело, может кое-где спотыкаться

Всего записей: 207 | Зарегистр. 27-01-2016 | Отправлено: 06:06 06-01-2023
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
insorg
 
И не должно работать - CLANG 14. Вариант - собрать в MinGW32 из исходников, а они есть гитхабе. Только стоит помнить, что XP выше TLS 1.2 не поддерживает - ограничение на уровне стека. А сейчас он тихо, но массово меняется на TLS 1.3 и на большинстве сайтов ХР становится бесполезна, и проще заменить её той же DragonFly BSD или NetBSD - тут по крайней мере проблем с сетью  не будет.


----------
Жив курилка! (Р. Ролан, "Кола Брюньон")
Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti

Всего записей: 33225 | Зарегистр. 31-07-2002 | Отправлено: 08:51 06-01-2023
insorg



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tmrx
Цитата:
Цитата:
mbedtls
Юзает системные сертификаты  
У меня версия на mbedtls не работает без файла cacert.pem или curl-ca-bundle.crt. Получается, системные серты либо не использует, либо они устарели.
С подкидыванием файла - работает.
 
Victor_VG
Цитата:
Вариант - собрать в MinGW32 из исходников
Я не настолько отчаянный. Пока что...
Цитата:
массово меняется на TLS 1.3 и на большинстве сайтов ХР становится бесполезна
А есть пример такого чисто 1.3 без поддержки старых? Хочу поиграться на подопытном, увидеть разницу в работе.

Всего записей: 16685 | Зарегистр. 04-11-2010 | Отправлено: 16:31 06-01-2023 | Исправлено: insorg, 16:40 06-01-2023
insorg



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот эту строку
Код:
@powershell -Command " Invoke-WebRequest -Uri 'https://tools.google.com/service/update2' -Method POST -ContentType 'text/xml' -InFile in.xml -OutFile out.xml "
с пост запросом из xml файла in.xml можно как-то выполнить в curl без помощи повершела?
 
Пробовал вот такой батник
Код:
@curl.exe -i -X POST "https://tools.google.com/service/update2" -H "Content-Type: application/xml" -H "Accept: application/xml" -d "^<?xml version=1.0 encoding=UTF-8?^>^<request protocol=3.0 ismachine=1 installsource=ondemand dedup=cr^>^<hw physmemory=4 sse3=1/^>^<os platform=win version=10.0 arch=x64/^>^<app appid={8A69D345-D564-463C-AFF1-A69D9E530F96} release_channel=stable^>^<updatecheck/^>^</app^>^</request^>" > test.txt
, но получаю Error 400 в ответ. Есть мысли, что исправить?
При этом повершельный запрос отрабатывает без ошбики.

Всего записей: 16685 | Зарегистр. 04-11-2010 | Отправлено: 01:08 12-01-2023 | Исправлено: insorg, 01:56 12-01-2023
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
insorg
Во-первых, для ключа -d не нужны -X POST и -H. А во-вторых, -d @in.xml

Всего записей: 12398 | Зарегистр. 11-03-2002 | Отправлено: 05:12 12-01-2023
insorg



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
С
Цитата:
-d @in.xml
тоже разобрался, пасибо.
 
Заодно нашёл у себя ошибку: крышечки лишние + нужно было бэкслеши для кавычек добавлять, а не кавычки убирать:
Код:
@curl -X POST https://tools.google.com/service/update2 -H "Content-Type: application/xml" -H "Accept: application/xml" -d "<?xml version=\"1.0\" encoding=\"UTF-8\"?> <request protocol=\"3.0\" ismachine=\"1\" installsource=\"ondemand\" dedup=\"cr\"> <hw physmemory=\"4\" sse3=\"1\"/> <os platform=\"win\" version=\"10.0\" arch=\"x86\"/> <app appid=\"{8A69D345-D564-463C-AFF1-A69D9E530F96}\" release_channel=\"stable\"><updatecheck/></app> </request> " > test.txt

Всего записей: 16685 | Зарегистр. 04-11-2010 | Отправлено: 18:21 12-01-2023 | Исправлено: insorg, 00:03 13-01-2023
zzz528

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Работаю в windows а запускал под msys и msys2
Косые в пути теряются не понимаю как, всё по команду rg включительно отрабатывает
проблема начинаеться с echo в ${path2} вместо например Dir1\Dir2\File.xxx выдаёт Dir1Dir2File.xxx, и далее так же
 
Подробнее...

Всего записей: 1652 | Зарегистр. 20-06-2005 | Отправлено: 13:58 01-02-2023
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zzz528,
если добавите '-r' к read результат будет такой же? Т.е. вместо 'while read' 'while read -r'.
зачем там команда rg разве нельзя обойтись только grep?
можете выложить пару файлов для примера?

Всего записей: 7336 | Зарегистр. 08-09-2001 | Отправлено: 14:40 01-02-2023
zzz528

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
С '-r' заработало правильно, а почему команда rg не знаю, я больше по форткам, и этой команды даже не было по умалчанию в msys, пришлос искать и скачивать.
Код взят с мозиллы, он типа удаляет лишние строки #include, а взял удалил ещё много чего нужного....
https://bugzilla.mozilla.org/show_bug.cgi?id=1600545

Всего записей: 1652 | Зарегистр. 20-06-2005 | Отправлено: 23:19 11-02-2023
mithridat1



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Релиз GNU Coreutils 9.2

Всего записей: 4946 | Зарегистр. 05-01-2006 | Отправлено: 10:28 21-03-2023
mithridat1



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как правильно экранировать двойные кавычки в POST запросе JSON с помощью curl ?
 
Необходимо добавить скрипт через Zabbix API через bash. Делаю так
 
curl -s -i -X POST -H 'Content-Type: application/json-rpc' -d "{\"jsonrpc\": \"2.0\",\"method\": \"script.create\", \"params\": {\"name\": \"Script Name", \"command\": \"\"path/app options\"\", \"type\": \"0\", \"scope\": \"2\"}, \"id\": 1}"
 
Все элементы JSON экранированы \, иначе запрос не будет отправлен корректно. Проблемы начинаются когда нужно передать значение, содержащее двойные кавычки. В данном случае "path/app options". Если я делаю так как выше то сервер не понимает моего запроса - Invalid JSON. An error occurred on the server while parsing the JSON text. Необходимо передать команду именно с двойными кавычками, иначе она станет нерабочей. Как это сделать ? Пробовал одинарные кавычки - не помогло.
 
Сам запрос рабочий, если передать "path/app options" без кавычек то сервер его успешно обрабатывает.

Всего записей: 4946 | Зарегистр. 05-01-2006 | Отправлено: 15:10 07-04-2023 | Исправлено: mithridat1, 15:17 07-04-2023
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mithridat1
А почему бы не обернуть весь аргумент -d в одинарные кавычки? Тогда не надо экранировать бесконечную кучу двойных кавычек в самом JSON. И вероятно тогда всё будет нормально с экранированием двойных кавычек в нужной Вам опции.
Если оставлять всё как есть то надо добавить ещё 2 экрана к нужному аргументу: \"\\\"path/app options\\\"\". (если я обсчитался то может больше. Но суть в этом. Но я всё же за первый вариант решения через внешние одинарные кавычки.

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 15:52 07-04-2023
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mithridat1, в bash для экранирования двойных кавычек можно использовать "\"" - это одна кавычка.
Разве нельзя поместить весь ваш json в файл и использовать '-d @file.json' ?

Всего записей: 7336 | Зарегистр. 08-09-2001 | Отправлено: 16:53 07-04-2023
mithridat1



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd
С одинарными кавычками
 
curl -s -i -X POST -H 'Content-Type: application/json-rpc' -d '...'
 
тоже не работает, я же написал. Сервер такой запрос не понимает.
 

Цитата:
Если оставлять всё как есть то надо добавить ещё 2 экрана к нужному аргументу: \"\\\"path/app options\\\"\". (если я обсчитался то может больше. Но суть в этом. Но я всё же за первый вариант решения через внешние одинарные кавычки.

А вот это работает, спасибо ! Почему здесь именно так надо экранировать, есть какой то документ или спецификация, описывающая это ?
 
los

Цитата:
 Разве нельзя поместить весь ваш json в файл и использовать '-d @file.json' ?  

Можно, но моем случае неудобно, желательно все в одном скрипте держать.

Всего записей: 4946 | Зарегистр. 05-01-2006 | Отправлено: 17:15 07-04-2023
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los
Он уже и так экранирует так как Вы предложили.
Но да использовать файл может быть проще, с другой стороны, одинарные кавычки в данном случае, кажется дадут тот же самый эффект, коли уж они не нужны внутри самого тела запроса.
 
Добавлено:
mithridat1
Цитата:
тоже не работает, я же написал. Сервер такой запрос не понимает.  
? Внутренние двойные при этом были экранированы?
 
Добавлено:

Цитата:
А вот это работает, спасибо ! Почему здесь именно так надо экранировать, есть какой то документ или спецификация, описывающая это ?  
потому что первое экранирование это для Вашего текущего shell'а, а второй слой экранирования нужен что бы экран остался и в результирующем JSON, что бы внутри него не было конфликта кавычек служебных json'овских и тех что нужны как строковый литерал.
 
Добавлено:

Цитата:
есть какой то документ или спецификация, описывающая это ?
каждый кто обрабатывает строку может вести себя по разному и добавлять на своё усмотрение дополнительные экраны и прочие кавычки. В общем случае верно считать что каждый уровень делает примерно то что делает Bash. А bash делает в соответствии с маном:
Цитата:
  Quote Removal
       After the preceding expansions, all unquoted occurrences of the characters \, ', and " that did not result from one of the above expansions are removed.


----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 17:16 07-04-2023
mithridat1



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

Цитата:
? Внутренние двойные при этом были экранированы?  

Пробовал по всякому - не работает
 
curl -s -i -X POST -H 'Content-Type: application/json-rpc' -d '{\"jsonrpc\": \"2.0\",\"method\": \"script.create\", \"params\": {\"name\": \"Script Name", \"command\": \"\"path/app options\"\", \"type\": \"0\", \"scope\": \"2\"}, \"id\": 1}'  
 
curl -s -i -X POST -H 'Content-Type: application/json-rpc' -d '{"jsonrpc": "2.0","method": "script.create", "params": {"name": "Script Name", "command": ""path/app options"", "type": "0", "scope": "2"}, "id": 1}'

Всего записей: 4946 | Зарегистр. 05-01-2006 | Отправлено: 17:27 07-04-2023
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mithridat1
Цитата:
Пробовал по всякому - не работает
не так)
 
вот так:
Код:
curl -s -i -X POST -H 'Content-Type: application/json-rpc' -d '{"jsonrpc": "2.0","method": "script.create", "params": {"name": "Script Name", "command": "\"path/app options\"", "type": "0", "scope": "2"}, "id": 1}'


----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 17:38 07-04-2023
los

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

Цитата:
Он уже и так экранирует так как Вы предложили.  

Не совсем так - используется "\, а предложено "\'''.
 
mithridat1

Цитата:
Пробовал по всякому - не работает  

Почему в нижнем варианте используется ""path/app options"", а не "path/app options"?

Всего записей: 7336 | Зарегистр. 08-09-2001 | Отправлено: 17:43 07-04-2023
Открыть новую тему     Написать ответ в эту тему

Страницы: 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