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

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

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

 

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

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



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sd, fd и ripgrep должны иметься у каждого, кто работает в консоли.
 
Добавлено:
Ещё есть tr-replacement, но компилировать нужно будет самостоятельно.

----------
Любой достаточно развитый тролль неотличим от подлинно помешанного на какой-либо идее.
Кекс. Антибиотики. Ламбада.

Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 00:31 25-01-2020
los

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

Цитата:
У tr разделителем может быть только один символ.  

спасибо

Цитата:
а что было на входе?  

a
b
c
d
data man,
как для fd указать несколько имен для поиска?
fd foo bar и т.п.
 
 
 

Всего записей: 7322 | Зарегистр. 08-09-2001 | Отправлено: 09:42 25-01-2020
data man



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

Код:
fd --glob "{foo,bar}*"


Код:
fd --glob "{foo*,*bar,*foo*bar*}"

 
Добавлено:
Заметил, что у меня становится всё больше консольных утилит, написанных на Rust. А с GUI что-то нет.
 
Добавлю:
lsd - The next gen ls command
pastel - A command-line tool to generate, analyze, convert and manipulate colors
skim - Fuzzy Finder in rust!
Энjoy!

----------
Любой достаточно развитый тролль неотличим от подлинно помешанного на какой-либо идее.
Кекс. Антибиотики. Ламбада.

Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 10:40 25-01-2020
karavan



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
data man
Цитата:
sd, fd и ripgrep должны иметься у каждого

Цитата:
lsd - The next gen ls command
pastel - A command-line tool to generate, analyze, convert and manipulate colors
skim - Fuzzy Finder in rust!
Спасибо, забрал себе. Будем пощупать )

Всего записей: 1962 | Зарегистр. 02-12-2011 | Отправлено: 11:51 25-01-2020
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
data man, спасибо. Держите в копилку
https://github.com/getreu/stringsext
P.S.
не на Rust, но мне нравится
https://github.com/Genivia/ugrep

Всего записей: 7322 | Зарегистр. 08-09-2001 | Отправлено: 12:09 25-01-2020
data man



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
karavan
los
Не за что!

Цитата:
ugrep

Тоже иногда пользуюсь.

Цитата:
stringsext


 
Ещё на Rust до кучи:
fselect - Find files with SQL-like queries
amber - A code search / replace tool
dua-cli - A tool to conveniently learn about the disk usage of directories, fast!
tokei - Count your code, quickly.
xsv - A fast CSV command line toolkit written in Rust.
tealdeer - A very fast implementation of tldr in Rust.
terminal-typeracer - An open source terminal based version of Typeracer written in rust.
find_unicode - Find Unicode characters the easy way: from the command line. Использует "движок" skim для нечёткого поиска.
 
От автора fd и pastel:
hyperfine - A command-line benchmarking tool
bat - A cat(1) clone with wings.
 
Для многих утилит релизов нет и собирать их нужно самостоятельно.
 
P.S. Остальное как-нибудь в другой раз.

----------
Любой достаточно развитый тролль неотличим от подлинно помешанного на какой-либо идее.
Кекс. Антибиотики. Ламбада.

Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 12:36 25-01-2020
Vasily_Koshkin



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уважаемые, а кто-нибудь логинился на Гугле с помощью curl? Я уже задавал аналогичный вопрос в отдельной теме по wget - посоветовали использовать curl. Только вот я его никогда не использовал. Поделитесь опытом, будьте добры. Спасибо.
 
PS. Забыл добавить, что у меня Windows, если это имеет значение в данном случае.

Всего записей: 1377 | Зарегистр. 07-02-2004 | Отправлено: 18:46 28-01-2020 | Исправлено: Vasily_Koshkin, 18:49 28-01-2020
karavan



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Vasily_Koshkin
У гугло-аккаунтов есть одна особенность, которая не позволяет подключаться с левых устройств/хостов даже при наличии верных данных аутентификации.
Называется эта особенность Обход этой особенности возможен с помощью "Ненадежные приложения, у которых есть доступ к аккаунту", находится здесь: https://myaccount.google.com/u/0/lesssecureapps?hl=ru
Отключения Включение этой фичи помогает на некоторое время, после чего гугл все возвращает в исходное состояние.
Исходя из этой особенности, необходимо искать обертку для curl или wget, которая сможет работать с гуглом через 2FA и использовать "пароли приложений", полученные кукисы передавать далее.
Сам буквально сегодня озадачился проблемой с похожим решением и пока думаю в сторону python и его библиотек.

Всего записей: 1962 | Зарегистр. 02-12-2011 | Отправлено: 19:21 28-01-2020 | Исправлено: karavan, 02:47 29-01-2020
Vasily_Koshkin



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

Цитата:
У гугло-аккаунтов есть одна особенность, которая не позволяет подключаться с левых устройств/хостов даже при наличии верных данных аутентификации.
Называется эта особенность "Ненадежные приложения, у которых есть доступ к аккаунту", находится здесь: https://myaccount.google.com/u/0/lesssecureapps?hl=ru

Благодарю за наводку, проверил лишний раз по Вашей ссылке, у меня эта фича была отключена и достаточно давно. А предвосхищая возможный вопрос "Зачем?", привожу свой ответ из смежной темы по wget, откуда меня сюда и отправили. В принципе, никаких других целей, кроме получения упомянутой OAuth2 куки, я не преследую.  

Всего записей: 1377 | Зарегистр. 07-02-2004 | Отправлено: 20:16 28-01-2020 | Исправлено: Vasily_Koshkin, 20:20 28-01-2020
karavan



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Vasily_Koshkin
Посыпаю макушку пеплом, я все в кучу слил. Исправил исходный текст.
Указанная опция по ссылке должна быть включена для того, чтоб понизить безопасность аккаунта.
 

Цитата:
А предвосхищая возможный вопрос "Зачем?"
"Зачем?" у меня вопрос не возникает, потому что сам с этим столкнулся
 
 
P.S.: Наш диалог здесь есть оффтопик. Прекращаем глумиться над темой.

Всего записей: 1962 | Зарегистр. 02-12-2011 | Отправлено: 22:34 28-01-2020 | Исправлено: karavan, 22:36 28-01-2020
Vasily_Koshkin



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

Цитата:
"Зачем?" у меня вопрос не возникает, потому что сам с этим столкнулся

Если честно, это очень радует, потому что не надо тратить время, объясняя, что небо голубое, а трава зеленая. Благодарю за понимание.

Цитата:
Наш диалог здесь есть оффтопик. Прекращаем глумиться над темой.

Так я же спрашиваю, как мне куку выдрать curl'ом... Конкретную куку, с конкретного сайта, в конкретный момент времени. Насколько я понимаю, обсуждать curl здесь можно? И вроде бы вопрос самый обычный? Если нет, прошу прощения, но более близкой темы на форуме не нашел.  
 

Всего записей: 1377 | Зарегистр. 07-02-2004 | Отправлено: 00:56 29-01-2020
karavan



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Vasily_Koshkin
Цитата:
Так я же спрашиваю, как мне куку выдрать curl'ом...  
Кука будет отдана тому, кто пройдет этапы 2FA, и это будет не curl.
Подробнее...

Всего записей: 1962 | Зарегистр. 02-12-2011 | Отправлено: 02:46 29-01-2020
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vasily_Koshkin
А Вы уверены что в ту сторону воюете?  
Мне кажется Вы просто ищите Google Cloud... Там есть Pub/Sub API для того что бы создавать ботов, например Hangouts Chat API.

----------
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.

Всего записей: 6562 | Зарегистр. 28-08-2008 | Отправлено: 17:10 29-01-2020
Vasily_Koshkin



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

Цитата:
А Вы уверены что в ту сторону воюете?  

Ну, как Вам сказать... В принципе, меня интересует любая автоматизация процесса, показанного на этом видео (41 сек.). Если честно, я в этом не особо копенгаген, но весьма беглое гугление чаще всего выводит меня на curl (libcurl) или wget. И хотя здесь, да и в смежной теме, мне уже не один раз намекнули, что ни wget, ни curl в этом случае не помогут... я всё-таки оставляю вопрос открытым, на случай если кому-то вдруг удастся найти красивое решение.

Всего записей: 1377 | Зарегистр. 07-02-2004 | Отправлено: 13:10 30-01-2020
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну тот вариант что я Вам показал это в общем-то про REST API, так что чем к нему обращаться уже Ваш выбор.

----------
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.

Всего записей: 6562 | Зарегистр. 28-08-2008 | Отправлено: 17:43 30-01-2020
qw12



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как обойти рекурсивно весь громадный ftp и получить список всех *.xlsx, *.xls, *.xml, *.csv, *.txt файлов, записать их в файл с полными путями?
 
curl , snarf , wget , pavuk , fget , fetch , lftp , aria2 , HTTrack?

Всего записей: 601 | Зарегистр. 04-06-2001 | Отправлено: 11:09 21-02-2020
andreyefgs



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

Код:
 
#!/bin/bash
 
dir=''
count=0
 
echo > /tmp/ftp.log
 
IFS=$'\n'
arr=($(ncftpls -R ftp://ftp.ncftp.com/))
 
shopt -s nocasematch
 
for f in "${arr[@]}"; do
  if [[ "$f" =~ ^.*:$ ]]; then
    dir=$(echo "$f" | sed -r 's/:$//')
  elif [[ "$f" =~ ^.*\.(gz|bz2)$ ]]; then
    f=$(echo "$f" | awk '{print $NF}')
    echo "${dir}/${f}" >> /tmp/ftp.log
    let count++
  fi
done
 
echo "Finish!"
echo "${count} files"
 
 

 
Надо установить ncftp
(ncftp -  A set of free application programs implementing FTP)
 
Если запустить просто:

Код:
ncftpls -R ftp://ftp.ncftp.com/  

 
То будет выведен такой результат:

Код:
ncftpd/goodies:
-rw-r--r--   1 anonymous_mgleason users       47888 Apr  6  2005 ncdbm-current.tar.gz
 
ncftpd/private:
 
ncftpd/third_party_goodies:
-rw-r--r--   1 anonymous_mgleason users        9942 Aug 19  2000 ncftpd_mysql_authd-1.0.tar.gz
...
 

Поэтому пришлось внутри for организовать обработку этих данных так, чтобы в /tmp/ftp.log было записано:

Код:
ncftp/older_versions/ncftp-3.2.2-src.tar.bz2
ncftp/snapshots/ncftp-20130624.tar.gz
ncftpd/2.8.7/ncftpd-2.8.7-freebsd10.2-x86_64-export.tar.gz
 

 
Вам для тестирования нужно будет отредактировать строки:

Код:
arr=($(ncftpls -R ftp://ftp.ncftp.com/))
  elif [[ "$f" =~ ^.*\.(gz|bz2)$ ]]; then
 

 
В первой изменить ftp-сервер
А вторую заменить на:

Код:
  elif [[ "$f" =~ ^.*\.(xlsx|xls|xml|csv|txt)$ ]]; then

 
ЗЫ
Добавил в код shopt -s nocasematch
На случай если у каких-нибудь файлов расширение окажется в верхнем регистре (TXT)

Всего записей: 1533 | Зарегистр. 16-10-2005 | Отправлено: 12:33 21-02-2020 | Исправлено: andreyefgs, 12:48 21-02-2020
los

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

Цитата:
curl , snarf , wget , pavuk , fget , fetch , lftp , aria2 , HTTrack?

ftp?
 
ftp ftp://ftp.foo.com
ftp> ls -lR (для ls команды по вкусу или надобности)
можно вывести в файл
ftp ftp://ftp.foo.com
ftp> ls list.txt
output to local-file: list.txt? y
ftp>bye
 
либо посмотрите ncftpls из пакета ncftp http://www.ncftpd.com/download/ может он для вас будет удобнее.

Всего записей: 7322 | Зарегистр. 08-09-2001 | Отправлено: 12:42 21-02-2020
andreyefgs



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В случае с ftp.freebsd.org возможен и такой простой вариант:

Код:
ncftpls -g ftp://ftp.freebsd.org/pub/FreeBSD/ | egrep -i '\.(iso|img)$' > /tmp/ftp_file_list.txt

 
Результат:

Код:
snapshots/powerpc/powerpcspe/ISO-IMAGES/13.0/FreeBSD-13.0-CURRENT-powerpc-powerpcspe-20200220-r358133-memstick.img
snapshots/sparc64/sparc64/ISO-IMAGES/11.3/FreeBSD-11.3-STABLE-sparc64-20200130-r357278-disc1.iso
..
 

 
А ftp://ftp.ncftp.com/ не поддерживает -g

Код:
  -g     Recursive and print one path per line; like "/usr/bin/find . -print"

Удивительно, что этого флага нет в man-файле, нашел его в ncftpls --help
 
Для ftp.ncftp.com нужен тот скрипт
А с другим сервером и скрипт не сработал (сервер отказывается давать полный путь)
 
В общем нужен индивидуальный подход

Всего записей: 1533 | Зарегистр. 16-10-2005 | Отправлено: 14:03 21-02-2020 | Исправлено: andreyefgs, 14:48 21-02-2020
qw12



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
andreyefgs
Интересный вариант, но в моем случае почему-то не работает
Когда я запускаю просто ncftpls ftp://user:pass@host.com, то выводится список корневых каталогов. Но в скрипте дальше он не спускается, почему-то. Практически сразу останавливается после запуска.
А так, ваш код отлично работает, но только на том сервере. В моем случае лог пустой.
 
 
Добавлено:
-g отчего зависит тогда
 
Добавлено:
Когда просто запускаю

Код:
ncftpls -g ftp://user:pass@host.com | egrep -i '\.(xlsx|xls|xml|csv|txt)$' > list.txt

ну, или

Код:
ncftpls -R ftp://user:pass@host.com | egrep -i '\.(xlsx|xls|xml|csv|txt)$' > list.txt

все, финиш. Пратически сразу останавливается и не хочет спускаться ниже.

Всего записей: 601 | Зарегистр. 04-06-2001 | Отправлено: 14:57 21-02-2020 | Исправлено: qw12, 14:59 21-02-2020
Открыть новую тему     Написать ответ в эту тему

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