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

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

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

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

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

 

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

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



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los
Цитата:
имел ввиду что [a-z] много для Linux устройств. Не принципиально, но...
а, это да. Но для себя я пишу куда больше конкретики и специфики в регулярках, потому что бывают срабатывают потом очень неожиданно.

Цитата:
вывод отличается
вроде ?нет же
 
 
iNNOKENTIY21
Цитата:
bash: /dev/tcp/127.0.0.1/7643: В соединении отказано
может потому что правильный порт 7634?) Я же руками для примера просто накидал.

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

Всего записей: 6333 | Зарегистр. 28-08-2008 | Отправлено: 16:20 09-06-2020 | Исправлено: Alukardd, 16:21 09-06-2020
iNNOKENTIY21



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

Цитата:
может потому что правильный порт 7634?) Я же руками для примера просто накидал.

А вот не ждал подвоха
так работает

Код:
[user@manjaro-kde ~]$ nc localhost 7634 | awk 'BEGIN{RS="[|][|]"; FS="[|]"} /sd[a-z]+/{sub("/dev/", "", $1); print $1": "$3"°"$4}' < /dev/tcp/127.0.0.1/7634
sda: 41°C
sdb: 45°C
write(stdout): Obry`v kanala

Но лишняя, 3-я строка откуда то

Всего записей: 2710 | Зарегистр. 16-08-2012 | Отправлено: 16:51 09-06-2020
los

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

Цитата:
вроде ?нет же  


Код:
$ cat file | awk 'BEGIN{RS="[|][|]"; FS="[|]"} /sd[a-z]+/{sub("/dev/", "", $1); print $1": "$3"°"$4}'

выводит

Код:
: TOSHIBA HDWD120°40

iNNOKENTIY21

Цитата:
так работает  

а зачем и 'nc localhost 7634' и '< /dev/tcp/127.0.0.1/7634' ?

Всего записей: 2017 | Зарегистр. 08-09-2001 | Отправлено: 17:12 09-06-2020
iNNOKENTIY21



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

Цитата:
а зачем и 'nc localhost 7634' и '< /dev/tcp/127.0.0.1/7634' ?

По незнанию. ОК. Так лучше, netcat не нужен, а то отдельно ставил

Всего записей: 2710 | Зарегистр. 16-08-2012 | Отправлено: 18:52 09-06-2020
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los
хз что именно у Вас может идти не так

Код:
% mawk -W version
mawk 1.3.4 20200120

ок, воспроизвёл на фре, щас пойму что там да как

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

Всего записей: 6333 | Зарегистр. 28-08-2008 | Отправлено: 19:28 09-06-2020 | Исправлено: Alukardd, 19:35 09-06-2020
los

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

Цитата:
хз что именно у Вас может идти не так  

потому что - awk, а не gawk или mawk. Сразу же написал что не для них.

Всего записей: 2017 | Зарегистр. 08-09-2001 | Отправлено: 19:38 09-06-2020
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los
Ну, скорее всего старый фряшный awk умеет в RS только в один символ (байт?) и остальное просто игнорит. Обойти наверное можно ручным кодом, но в целом при таком наборе софта уже проще городить sed c cut'ом, чем писать программу. Так-то я изначально на perl накидал разбор, но получилось немного длиннее чем на awk, потому на нём и остановился.

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

Всего записей: 6333 | Зарегистр. 28-08-2008 | Отправлено: 19:49 09-06-2020
los

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

Всего записей: 2017 | Зарегистр. 08-09-2001 | Отправлено: 20:06 09-06-2020 | Исправлено: los, 20:09 09-06-2020
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Дано:
Код:
[user@manjaro-kde ~]$ df -h
df: /run/user/1000/doc: Операция не позволена
Файловая система Размер Использовано  Дост Использовано% Cмонтировано в
dev                3,9G            0  3,9G            0% /dev
run                3,9G         1,4M  3,9G            1% /run
/dev/sdb3           59G          21G   36G           37% /
tmpfs              3,9G          23M  3,9G            1% /dev/shm
tmpfs              3,9G            0  3,9G            0% /sys/fs/cgroup
tmpfs              3,9G         4,0K  3,9G            1% /tmp
/dev/sda4          1,8T         526G  1,2T           31% /run/media/user/User
/dev/sdb1          511M         284K  511M            1% /boot/efi
/dev/sdb5           69G          26G   44G           37% /run/media/user/Backups
tmpfs              787M          12K  787M            1% /run/user/1000

Преследует: df: /run/user/1000/doc: Операция не позволена, отчего, почему, как избавиться?
 
Сделал:
Код:
[user@manjaro-kde ~]$ df -h | awk '$6 ~ /\/$|User|Backups/ {sub("/run/media/user/", "", $6); sub("/","root",$6); print $6"\t: "$4}'
df: /run/user/1000/doc: Операция не позволена
root    : 36G
User    : 1,2T
Backups : 44G

Как заменить при выводе, разрыв строки на другой символ, не вставляя его в последнюю строку?
 
Желаемое: root : 36G | User : 1,2T | Backups : 44G

Всего записей: 2710 | Зарегистр. 16-08-2012 | Отправлено: 16:09 10-06-2020
los

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

Цитата:
Преследует: df: /run/user/1000/doc: Операция не позволена, отчего, почему, как избавиться?  

может прав не хватает и нужно использовать su или sudo?
 
у вас df не поддерживает вывод по файловым системам, ключи -T, -t иди подобные?
Это к чему - всегда лучше сократить вывод, а потом уже обрабатывать т.е.
lsvfs или что там в Linux, а затем
df -h -T fs, где fs - это файловая система(можно несколько через запятую), вывод получится на подобие:
Filesystem...
/dev/sdb3...
/dev/sda4...
/dev/sdb1...
/dev/sdb5...
а его уже обрабатывать.

Всего записей: 2017 | Зарегистр. 08-09-2001 | Отправлено: 23:31 10-06-2020
iNNOKENTIY21



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

Цитата:
может прав не хватает и нужно использовать su или sudo?  

Да, но требуется то запуск без прав. Зачем эта информация всё время.
 

Цитата:
у вас df не поддерживает вывод по файловым системам, ключи -T, -t иди подобные?  

Поддерживает, но через запятую нет похоже, только один тип.
Да и сути не меняет. ext4 может быть много, а нужны не все, всё одно фильтровать.


Куча способов сделать в одну строку.. но или в начале не нужный разделитель, или в конце
 
такой вариант работает:
Код:
[user@manjaro-kde ~]$ df -h | awk '$6 ~ /^\/$|User$|Backups$/ {sub("^/run/media/user/", "", $6); sub("^/$","root",$6); printf(" | %s: %s", $6, $4)}' | cut -c 4-
df: /run/user/1000/doc: Операция не позволена
root: 36G | User: 1,2T | Backups: 44G

Всего записей: 2710 | Зарегистр. 16-08-2012 | Отправлено: 14:56 11-06-2020 | Исправлено: iNNOKENTIY21, 15:24 11-06-2020
los

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

Цитата:
Поддерживает, но через запятую нет похоже, только один тип.  

пример:
$ df -T nonfs,mfs

Цитата:
Да и сути не меняет. ext4 может быть много, а нужны не все, всё одно фильтровать.  

фильтровать всегда проще и правильней когда меньше данных.
P.S.
посмотрите, возможно, пригодится
https://mmonit.com/monit/

Всего записей: 2017 | Зарегистр. 08-09-2001 | Отправлено: 17:13 11-06-2020
iNNOKENTIY21



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

Цитата:
$ df -T nonfs,mfs

Не, тут не так. Всё таки разные, дьявол в мелочах
Тут $ df -T выводит как раз колонку с типом, а маленькая t фильтрует. Но у меня не хочет через запятую, за все линуксы,не буду говорить.

Всего записей: 2710 | Зарегистр. 16-08-2012 | Отправлено: 17:36 11-06-2020
los

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

Цитата:
Не, тут не так.

да, посмотрел man, синтаксис отличается. Но есть ключ '-x' и используя его скорее всего вы сможете исключить

Цитата:
Преследует: df: /run/user/1000/doc: Операция не позволена

возможно так:
df -h -x tmpfs
вообщем поэкспериментируйте с ключами - должно получится.
P.S.
может вместо запятой поддерживается 'df -T fs -T fs' ?

Всего записей: 2017 | Зарегистр. 08-09-2001 | Отправлено: 09:16 12-06-2020
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los
Цитата:
Но есть ключ '-x' и используя его скорее всего вы сможете исключить...
...df -h -x tmpfs

tmpfs фильтрует, но ошибка не исчезает.
А вот
Цитата:
может вместо запятой поддерживается 'df -T fs -T fs' ?

Сработало! И ошибка пропала

Код:
[user@manjaro-kde ~]$ df -h -t ext4 -t fuseblk
Файловая система Размер Использовано  Дост Использовано% Cмонтировано в
/dev/sdb3           59G          22G   35G           39% /
/dev/sda4          1,8T         522G  1,2T           30% /run/media/user/User
/dev/sdb5           69G          26G   44G           37% /run/media/user/Backups
/dev/sdb2          118G          58G   55G           52% /run/media/user/manjaro-xfce

Всего записей: 2710 | Зарегистр. 16-08-2012 | Отправлено: 13:52 12-06-2020
los

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21,
не забудьте что могут смонтированы fs отличные от ext4 - fat, ntfs etc. Возможно, их нужно добавить или запускать df наподобие 'df ключи /dev'

Всего записей: 2017 | Зарегистр. 08-09-2001 | Отправлено: 15:19 12-06-2020
Deoptimizer

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть битая SD карта памяти, с нее может копировать ~1.6МБ за сессию, потом она подвисает(нужно перевтыкать) и выскаивает ошибка.
Нужно сделать скрипт для dd(только с ним она не подвисает, но error выскаивает), чтоб была докачка на месте ошибки, вот пример лога когда качает большой файл:

Цитата:
 
root@DESKTOP-HQQI5N0:~# dd if=/mnt/h/Downloads/CM2\ MT2\ Boot\ Files\ By\ GSM\ Friends\ Team.zip of=/mnt/e/Temp/1/Downloads/CM2_MT2_Boot_Files_By_GSM_Friends_Team.zip bs=1
dd: error reading '/mnt/h/Downloads/CM2 MT2 Boot Files By GSM Friends Team.zip': Invalid argument
1683456+0 records in
1683456+0 records out
1683456 bytes (1.7 MB, 1.6 MiB) copied, 138.042 s, 12.2 kB/s
root@DESKTOP-HQQI5N0:~#
 

(файл весом 200МБ)
Т.е. после ошибки, нужно взять переменную 1683456 bytes и продолжить с места докачивать файл утилитой dd.
Нужен примитивный скрипт bash или shell, а может даже в консоли можно написать...
Спасибо.

Всего записей: 295 | Зарегистр. 12-06-2015 | Отправлено: 20:14 23-07-2020 | Исправлено: Deoptimizer, 20:15 23-07-2020
karavan



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Deoptimizer
Описать в скрипте откуда продолжать докачку не проблема. Но кто будет перевтыкать на ошибку?

Всего записей: 1907 | Зарегистр. 02-12-2011 | Отправлено: 20:28 23-07-2020
Pasha_ZZZ



Gold Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
karavan
Теоретически можно ресетить усб-хаб, на котором ридер висит:
https://github.com/jkulesza/usbreset

Всего записей: 9428 | Зарегистр. 11-03-2002 | Отправлено: 20:43 23-07-2020 | Исправлено: Pasha_ZZZ, 20:44 23-07-2020
Deoptimizer

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

Всего записей: 295 | Зарегистр. 12-06-2015 | Отправлено: 20:44 23-07-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

Компьютерный форум 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.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru