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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
Это совсем косячно) Если использовать regexp'ы, то rename делает это много проще, в одну команду...
 
Добавлено:
DocBeen
Уберите знаки вопроса из команды rename, написанной т. ASE_DAG

----------
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 | Отправлено: 11:53 20-09-2012
kpp77

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd
Почему косячно?
Главное работает.
Не спорю, что можно использовать более специализированные утилиты - и быстрее и код короче. Но не всегда о них помнишь\знаешь.
Что-то мелькало в нете о проблеме с юникодом\русскими буквами в утилите rename...

Всего записей: 72 | Зарегистр. 29-08-2012 | Отправлено: 11:58 20-09-2012 | Исправлено: kpp77, 12:05 20-09-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd
>> получаем ограничение на отсутствие ' - ' в названии композиции
> конечно получаем ;-)
А не должны бы. В примере read’ом, какой я привел выше, этого ограничения нет.
 
>> s/^(.*?) - (.*?) -/$2 - $1 -/
> зачем Вы использовали ленивый квантификатор
А что в этом плохого? Если вы спрашиваете, почему нельзя так:
s/^(.*) - (.*) -/$2 - $1 -/
, то ровно по тому же самому — получаем ограничение на дефисоминус в роли тире в названии композиции.
 
 
>> $ IFS=' - '  
> :lol:
А чего тут смешного? Само сочетание ' - ' что ли?

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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 17:33 20-09-2012
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
Цитата:
получаем ограничение на дефисоминус в роли тире в названии композиции.
что-то у меня с воображением плохо... А если первый оставить жадным, а второй ленивым. К тому же .* всегда можно заменить, на [^-] там где это наверняка будет правдой, например в номере.
Смайлик читать надо было в контексте предыдущей строчки, т.е. Вы сами сказали что плохо и тут же предложили такой же вариант, только без 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.

Всего записей: 6571 | Зарегистр. 28-08-2008 | Отправлено: 09:45 21-09-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd
> А если...
> что-то у меня с воображением плохо
В таком случае на помощь может придти возможность непосредственной экспериментальной проверки. Мы же ведь тут не теорию изучаем.
 
> Вы сами сказали что плохо и тут же предложили такой же вариант, только без AWK
О_о Господь с вами! Где я такое сказал? Напротив, я, кажется, говорил, что «вы правы, парсить регэкспами строку которую следовало бы разбивать по разделителям функцией типа split() не очень правильно».

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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 15:30 21-09-2012 | Исправлено: ASE_DAG, 15:31 21-09-2012
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
Цитата:
Напротив, я, кажется, говорил
это да, но я про вот это сообщение.
 
Да что-то данный момент мне не интересно проверять было ;-)
И да, я придерживаюсь абсолютного пофигизма в религии.

----------
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 | Отправлено: 15:37 21-09-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd
>>> сами сказали что плохо
>> Напротив
> я про вот это сообщение
А что в нем? Если вы про доп. ограничение на входные данные, то все правильно — в вашем варианте оно добавляется, а в моем таки нет. ;-)

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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 15:44 21-09-2012 | Исправлено: ASE_DAG, 15:46 21-09-2012
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
Это да.
p.s. Эх, давно не было необходимости какие-нить интересные скрипты писать :-(

----------
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 | Отправлено: 15:58 21-09-2012
LevT



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

Полезная статейка http://habrahabr.ru/post/153785/
 
Самому себе на заметку. Сейчас мне не до шелла, но полгода назад мне она очень пригодилась бы.

Всего записей: 17747 | Зарегистр. 14-10-2001 | Отправлено: 13:50 08-10-2012
drrdar

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую. Если темой ошибся, просьба тапками не забрасывать.
 
Есть демон, который в самый неподходящий момент начинает слушать определённый порт. В логику работы демона вмешиваться нельзя, его можно только прибить, когда он начинает это делать. Собственно, его нужно прибивать в этот самый момент, и в этом задача. Зачем? Очень нужное приложение слушает тот же самый порт, сменить порт нельзя. Если оно запускается и видит, что кто-то слушает тот же самый порт, оно схлопывается. Есть идея перед запуском приложения использовать вывод netstat -tapn | grep LISTEN | grep тот-самый-порт, отсюда выявить pid, а далее что-то типа kill -9 pid. Как это в скрипте изложить с минимальным количество знаков? Или хоть примерно как оно должно быть? Спасибо.
 
P.S. "Курить маны" - покурим, но зашиваемся конкретно. Варианты со всякого рода Selinux'ами - не варианты.

Всего записей: 25 | Зарегистр. 06-03-2008 | Отправлено: 19:06 08-10-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
$ PORT=58781
$ fuser $PORT/tcp --kill


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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 19:40 08-10-2012
drrdar

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG,
 
хахаха. Вот уж не думал. Спасибо, попробую.

Всего записей: 25 | Зарегистр. 06-03-2008 | Отправлено: 20:56 08-10-2012
urodliv



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Коллеги.
А как в цикле запускаемую программу отправить в фон?
Пример таков:

Код:
for i in 2 3 4 5; do iperf -c 192.168.8.$i &; done

В ответ получаю это:

Код:
-bash: syntax error near unexpected token `;'

Как правильно будет?

----------
Очень скоро еда станет совершенно безвкусной, и тогда этот недостаток придётся компенсировать хорошо развитым воображением.

Всего записей: 6714 | Зарегистр. 29-04-2009 | Отправлено: 00:45 28-10-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
urodliv
Вы, вероятно, будете удивлены. :-)
 
for i in 2 3 4 5; do iperf -c 192.168.8.$i & done
 
Об’яснение:
Цитата:
control operator
          A token that performs a control function.  It is one of the following symbols:
          || & && ; ;; ( ) | |& <newline>
bash(1)

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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 01:24 28-10-2012 | Исправлено: ASE_DAG, 01:31 28-10-2012
urodliv



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

Цитата:
Вы, вероятно, будете удивлены. :-

Чёрт возьми, ещё как буду!
Преподаватель на занятиях требовал перед done ставить точку с запятой, вот и ставил... До сегодняшнего дня.

----------
Очень скоро еда станет совершенно безвкусной, и тогда этот недостаток придётся компенсировать хорошо развитым воображением.

Всего записей: 6714 | Зарегистр. 29-04-2009 | Отправлено: 12:12 28-10-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
urodliv
> ещё как буду
Тем не менее, как видно из выдержки из мана, все предельно логично.
 
> Преподаватель на занятиях
А если не секрет, где вы учились, что вам Баш преподавали?


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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 22:39 28-10-2012
Maximus777

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть в баш-скрипте строка:
 

Код:
cp -r --preserve $Path1/Folder $Path2

Как бы её превратить в регистронезависимую команду? В смысле, чтобы не копировались файлы, имеющие одинаковые имена, только в разных регистрах. У cp не нашёл такой опции, а find что-то не получается забороть.

Всего записей: 674 | Зарегистр. 27-07-2007 | Отправлено: 09:08 05-11-2012 | Исправлено: Maximus777, 10:21 05-11-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maximus777
Непостредственно cp или, например, rsync заставить игнорировать разницу регистров нельзя, поскольку они не занимаются сравнением файлов по именам, просто запрашивают у системы наличие того или иного файла.
Вы лучше об’ясните исходную задачу. И поясните, какой файл из, например, file, File, FILE надо скопировать, а какие проигнорировать.

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

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

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
Выборочный игнор я могу и вручную задействовать, но хотелось бы сделать копирование аналогичное выньному. Исходная задача такая, есть один каталог (с подкаталогами), файлы в нём периодически обновляются, извлекаемые из архива обновлений и копируемые с заменой в этот каталог. Всё это "таинство" происходит под виндозой. А в Лине потом копируются в другой каталог, вышеуказанной командой. И т.к. в архиве обновления существует некий бардак, то файло то в одном регистре обозвано может быть, то в другом. В принципе я могу сносить папку назначения и затем копировать, но мы же не ищем лёгких путей )) И для общего развития хотелось бы знать, как организовывается регистронезависимое копирование в Лине.

Всего записей: 674 | Зарегистр. 27-07-2007 | Отправлено: 13:04 05-11-2012
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maximus777
Есть вариант хранить в папке в лине всё всегда в нижнем регистре. Т.е. всегда при копировании опускать регистр.

----------
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 | Отправлено: 15:58 05-11-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