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

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

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

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
      Шпаргалка по частым синтаксическим оборотам.

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

 

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

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



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kpp77
А в чём проблема поставить xxd?
Извращаться можно по разному.... Можно и python подключить... Могу предложить такой вариант (издевательства sed'ом в зависимости от того какой вид хотите предать):
% printf "Some text" | od -t x1 | sed 's/[0-9]*//;s/ //g;/^$/d'
536f6d652074657874
% printf "536f6d652074657874" | sed 's/[0-9a-f]\{2\}/\\\\x&/g' | xargs echo -e
Some text

 
Добавлено:
Во фре из-за отсутсвия нормального echo, надо чуть-чуть извратиться:
% printf "Some text" | od -t x1 | sed 's/[0-9]*//;s/ //g;/^$/d'
536f6d652074657874
% printf "536f6d652074657874" | sed 's/[0-9a-f]\{2\}/\\\\\\\\x&/g' | xargs -I {} bash -c 'echo -e {}'
Some text


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

Всего записей: 6571 | Зарегистр. 28-08-2008 | Отправлено: 16:20 27-11-2012 | Исправлено: Alukardd, 16:28 27-11-2012
kpp77

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd
Благодарю за наводку.
Единственное, если длина строки будет более 16 символов, нужно еще удалять признак концов строк, ну и скрипт пишется под SH, а вызывать из SH BASH - не очень хорошо

Всего записей: 72 | Зарегистр. 29-08-2012 | Отправлено: 17:21 27-11-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kpp77
>> % xxd -p <<< "Some text"
>> 536f6d6520746578740a
> Как сделать тоже с помощью hexdump пока не уразумел, на первый взгляд эта утилита для несколько других целей.
 
Для каких же?
$ hexdump -e '/1 "%02x"' <<< 'Some text'; echo
536f6d6520746578740a

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 17:26 27-11-2012 | Исправлено: ASE_DAG, 17:39 27-11-2012
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kpp77
Да можете хоть все 0x0a удалить...
 
А вот увы для обратного перевода без xxd приходится извращаться...

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

Всего записей: 6571 | Зарегистр. 28-08-2008 | Отправлено: 17:55 27-11-2012
kpp77

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
Благодарю.
Вот этого-то и не уразумел по hexdump.
 
Для обратного перевода лучше чем

Код:
# echo "536f6d652074657874" | sed 's/../ 0x&/g' | awk '{for(i=1; i<=NF; i++) {printf "%c", $i}}'
# Some text
пока не придумал.

Всего записей: 72 | Зарегистр. 29-08-2012 | Отправлено: 17:56 27-11-2012 | Исправлено: kpp77, 13:20 28-11-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kpp77
О! Вы еще что-то дописали спустя полсуток.
 
А вот что интересно — какой у вас АВК? gawk так типы вовсе не приводит.
 
$ echo "536f6d652074657874" | sed 's/../ 0x&/g' | awk '{for(i=1; i<=NF; i++) {printf "%c", $i}}'  
000000000

 
А mawk умудряется не понять цифры a-f (и A-F тоже, как такое вообще можно умудриться сделать?)
$ echo "536f6d652074657874" | sed 's/../ 0x&/g' | mawk '{for(i=1; i<=NF; i++) {printf "%c", $i}}'  
S00e text

 
 
 
Добавлено:
Ага. Нашел. То, что в Дебиане именуется original-awk, и является с небольшими изменениями собственно тем самым АВК’ом, написанным Ахо—Вейнбергером—Керниганом в 1988-м, ведет себя так, как вы продемонстрировали.
 
$ echo "536f6d652074657874" | sed 's/../ 0x&/g' | original-awk '{for(i=1; i<=NF; i++) {printf "%c", $i}}'  
Some text

 
И да, ключ -v он поддерживает, вы как-то упоминали, что это позднее расширение.

----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 22:04 29-11-2012
kpp77

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
Так себя ведет стандартный awk во FreeBSD7 - 8.
На Дебиане не проверял.
И такое поведение описано в книге Девида Тейнсли "Linux и Unix: программирование в shell" 2000г.
Если честно, то очень печально, что такая возможность не поддерживается или поддерживается неполностью в других вариантах\версиях awk.
 
 
Добавлено:
По поводу ключа -v я всего лишь ссылался на книгу Д. Пик, Т. О'Райли, М. Лукидис. "UNIX. Инструментальные средства" 2 издание, 2002г., где указано что в определенных реализациях awk ключ -v не поддерживается.
 
Добавлено:
И да, я ничего не упоминал что-либо с фразой "позднее расширение".

Всего записей: 72 | Зарегистр. 29-08-2012 | Отправлено: 11:47 30-11-2012 | Исправлено: kpp77, 11:51 30-11-2012
king_stiven

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как заставить aria2c  скачивать файлы по порядку, как по порядку файлов, так и по порядку внутри каждого файла? И может ли он использовать оперативку, то есть писать не сразу на диск.

Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 16:12 04-12-2012 | Исправлено: king_stiven, 16:23 04-12-2012
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
king_stiven
Если под порядком вы подразумеваете поочереди, то видимо вы об этих трёх параметрах из man aria2c-j1 -C1 -s1 идёт речь.
А вопрос про оперативную память и диск мне как-то непонятен... Вы хотите что бы закачка шла полностью в оперативку пока там есть место? Зачем?

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

Всего записей: 6571 | Зарегистр. 28-08-2008 | Отправлено: 16:54 04-12-2012 | Исправлено: Alukardd, 16:56 04-12-2012
king_stiven

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

Цитата:
-j1 -C1 -s1

не то
-j
    Задать максимальное количество параллельных загрузок для каждого статического (HTTP/FTP) URI, torrent и metalink.
-c, --continue[=true|false]¶
 
    Продолжить загрузку частично загруженного файла.
-s, --split=<N>¶
 
    Загружать файл, используя N соединений.
 
 
Добавлено:

Цитата:
Вы хотите что бы закачка шла полностью в оперативку  

Нет, я хочу, чтоб как в utorrent  было, то есть используется оперативка скажем 50 mb. То есть не сразу блоки пишутся на диск. Это делается, чтоб не нагружать диск.

Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 17:01 04-12-2012
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
king_stiven
Цитата:
не то  
Тогда переформулируйте мысль... Что значит по порядку?
Цитата:
То есть не сразу блоки пишутся на диск.
сама aria2 вроде как так не может, но ядро и так не пишет на диск постоянно.

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

Всего записей: 6571 | Зарегистр. 28-08-2008 | Отправлено: 17:21 04-12-2012
king_stiven

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

Цитата:
Что значит по порядк

как в uttorent  под винду
 
bt.sequential_download
bt.sequential_files.
 
В результате добавления этого ключа наш utorrent начнет загружать блоки в файлах последовательно. Если ваш плеер (например KMPlayer или VLC плеер) поддерживает возможность просмотра недокачанных файлов - сможете просмативать фильм в процессе скачивания.
 Можно аналогично добавить параметр bt.sequential_files. Автоматизирует загрузку «по порядку» (сортировка по пути в .torrent файле) нескольких файлов в раздаче.

Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 17:31 04-12-2012
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
king_stiven
Цитата:
у меня винда  
Интересное заявление
Цитата:
Операционные системы » UNIX » UNIX Shell

Ну во первых aria2 не только для закачки torrent'ов написана, так что уточнять обстоятельства стоит сразу.
Есть ключ --bt-prioritize-piece, правда хз что будет если вызвать его с параметром =head=10000M.

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

Всего записей: 6571 | Зарегистр. 28-08-2008 | Отправлено: 17:45 04-12-2012
king_stiven

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
--bt-prioritize-piece=head[=<SIZE>],tail[=<SIZE>]¶
 
    Пытаться загрузить сначала первую и последнюю части каждого файла.
 
Даже не знаю, то не то.

Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 18:29 04-12-2012
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
king_stiven
Что за манера читать по пол строки от справки, прочтите целиком абзац.
И да, приводя сюда цитату из man'а Вы чего добиться хотите? Или Вы думаете, что  я опции из головы штампую?
 
То, не то. Это узнаешь когда попробуешь в нескольких видах:
--bt-prioritize-piece
--bt-prioritize-piece=head
--bt-prioritize-piece=head,tail
--bt-prioritize-piece=head=10000M


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

Всего записей: 6571 | Зарегистр. 28-08-2008 | Отправлено: 19:31 04-12-2012
Krist



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
всем доброго дня, может кто поскажет как разделить файл по первым буквам строки, делаю сейчас так grep -E '^x.*', но как сделать одной командой? В split по описанию можно с параметром -p, но у меня почему-то не выходит, не могу шаблон подобрать.

Всего записей: 247 | Зарегистр. 07-03-2006 | Отправлено: 16:38 05-12-2012 | Исправлено: Krist, 16:41 05-12-2012
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Krist
Цитата:
как разделить файл по первым буквам строки
а что на выходе должно получиться? Образце какой что ли... 26 отдельных файлов?

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

Всего записей: 6571 | Зарегистр. 28-08-2008 | Отправлено: 16:41 05-12-2012
Krist



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

Всего записей: 247 | Зарегистр. 07-03-2006 | Отправлено: 16:56 05-12-2012 | Исправлено: Krist, 16:58 05-12-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Krist
$ awk -v FS='' '{ print >> tolower($1) }' yourfile
 
Комментарии нужны?
 
И да, я просто теряюсь в догадках, зачем это может спонадобиться.

----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 17:37 05-12-2012 | Исправлено: ASE_DAG, 17:56 05-12-2012
Krist



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вот такая ошибка
 
# awk -v FS='' '{r($1) }' test
awk: (FILENAME=test FNR=4) fatal: expression for
n has null string value
 
а скрипт нужен для предварительного разбиения файла БД перед уникализацией, очень большие размеры от 40 Гб.

Всего записей: 247 | Зарегистр. 07-03-2006 | Отправлено: 18:01 05-12-2012 | Исправлено: Krist, 18:03 05-12-2012
Открыть новую тему     Написать ответ в эту тему

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

Компьютерный форум 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