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

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



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
Я, надеюсь, вы только о строке определения интерпретатора...
 
DrakonHaSh
sleep юзать в expect это не гуманно, только если вы совсем на разных системах хотите её запускать...
Я бы сделал так:
Код:
spawn su
expect Пароль {send "myPassWorD\r"}
expect # {send "id\r"}
interact


----------
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 | Отправлено: 23:54 01-04-2012
DrakonHaSh



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

Цитата:
> но толку от нее, раз рут для запуска всегда обязателен
Отнюдь не всегда. Вы как-то выборочно читаете.  

вы наверное про это:

Цитата:
Писать во входной буфер того tty, с которого исполняемся, можно и с пользовательскими правами.

если у меня уже есть tty, с которого я исполняюсь, то я могу и ручками пароль ввести. меня интересует возможность *стандартными средствами и утилитами bash/*nix, которые уже почти 100% есть в системе* (сорри за непрофиональную формулировку) создания tty (не имея tty - например от учетки, у которой шел стоит a la /bin/false) и возможности работы с ним - в частности запуска и ввода пароля в su.
 
Alukardd

Цитата:
sleep юзать в expect это не гуманно, только если вы совсем на разных системах хотите её запускать...  

я как раз стараюсь ориентироваться не на гуманность, а на практичность и *универсальность*

Всего записей: 2076 | Зарегистр. 08-01-2008 | Отправлено: 11:10 02-04-2012 | Исправлено: DrakonHaSh, 11:13 02-04-2012
LevT



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

Нашёл вроде бы годную книжку под свои запросы:
Chris_F.A._Johnson-Pro_Bash_Programming__Scripting_the_GNU_Linux_Shell_(Expert's_Voice_in_Linux)(2009).pdf
 
 
Добавлено:
 
Я их сам неверно формулировал. Мне надо было в первую очередь научиться грамотно обходиться с конфигурационными файлами и манипулировать своими данными.
Для этого в книжке есть главы Runtime Configuration и Data Processing

Всего записей: 17149 | Зарегистр. 14-10-2001 | Отправлено: 09:09 03-04-2012 | Исправлено: LevT, 09:30 03-04-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
> Chris_F.A._Johnson-Pro_Bash_Programming__Scripting_the_GNU_Linux_Shell_(Expert's_Voice_in_Linux)(2009).pdf
А я бы на вашем месте и ссылку какую-нибудь привел, поприличнее. Вот, например:
http://uod.ac/it/wp-content/uploads/2011/04/Pro-Bash-Programming-Scripting-the-GNU-Linux-Shell-Expert-039-s-Voice-in-Linux.pdf
 
Тем паче, что имя файла в вашем виде не гуглится абсолютно никак.

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

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



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

ну, я взял из библиотеки genesis именно в таком виде  
там в нескольких вариантах
Прямую ссылку специально не стал давать, чтобы зря библиотекарей не подставлять.

Всего записей: 17149 | Зарегистр. 14-10-2001 | Отправлено: 15:56 03-04-2012
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите пожалуйста (г)авком распознать вот такую структуру (это родная выдача stmfadm list-view -l $guid)
 

Цитата:
600144F099D1040000004F3113870001
View Entry: 0
    Host group   : vmware
    Target group : vcenter
    LUN          : 1
View Entry: 1
    Host group   : windows
    Target group : wincluster
    LUN          : 0
 

 
 
Добавлено:
По смыслу здесь guid-у сопоставлена таблица БД
Первичный её ключ viewentry (автоинкремент)
 
В рабочем конфиге как минимум не может быть совпадающих триплетов (hg, tg, lun).
Есть и ещё какие-то "бизнес-правила", которые мне только предстоит выяснить.
 
Например, ограничение на комплект подобных файлов: номера LUN произвольны, но архитектура SCSI требует, чтобы у каждого таргета имелся как минимум LUN 0 (т.е. чтобы для каждой tg хотя бы в одном файле присутствовал LUN:0).  В рабочем конфиге это последнее правило не энфорсится, но последствия его нарушения для инициаторов бывают печальны.
 
 
Добавлено:
 
Второй вопрос.
 
Вот здесь есть небольшая проблема с последним снипетом (Redirecting Input):
входной файл должен заканчиваться \n
 
Как её лучше закрыть в этом и всех других вариантах, где она потенциально может встретиться?

Всего записей: 17149 | Зарегистр. 14-10-2001 | Отправлено: 09:14 04-04-2012 | Исправлено: LevT, 10:33 04-04-2012
Maximus777

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

Всего записей: 674 | Зарегистр. 27-07-2007 | Отправлено: 14:03 17-04-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.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 14:53 17-04-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maximus777
> Есть файл.
Есть — давайте.

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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 15:06 17-04-2012
Maximus777

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

Код:
Строка первая. Строка первая.
Строка вторая. Строка вторая.
...
Последняя строка. Последняя строка.


 
Самое главное условие то, что в строках фразы дублируются. Вот эти дубли и надо срезать. Насчёт точки хз.

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



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ладно поглумились и хватит)
Вот команда:
sed -r 's/(.*)[[:blank:]]*\1/\1/' /tmp/testfile

----------
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:16 17-04-2012
Maximus777

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd
Цитата:
sed -r 's/(.*)[[:blank:]]*\1/\1/' /tmp/testfile

Работает. Спасибо.

Всего записей: 674 | Зарегистр. 27-07-2007 | Отправлено: 15:20 17-04-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.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 15:39 17-04-2012
Maximus777

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пробовал, не осилил. Я спрашивал так "sed поиск повторов" и "sed поиск дубликатов".

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



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd
Maximus777
"чтобы воспользоваться поиском УСПЕШНО, надо знать, что именно искать" (с)
 
1) Причём совет "задавай вопросы правильно!" - пустая отмазка. Откуда получатель такого совета возьмёт правильный критерий правильности?
"Задавай вопросы правильно" это отсылка к общему контексту. Ошибочно предполагается, что правильный критерий един и всем известен по умолчанию.
 
2) Даже правильный ответ на правильно заданный вопрос может быть человеком вне контекста:
- интерпретирован неверно (как нерелевантный), пошел дальше искать
- не понят или не усвоен (попробовал - не получилось, пошел дальше искать; или не знает даже, как попробовать, не затрачивая на этот проект запретительно много личного ресурса).
 
Помогать людям "удочкой, а не выловленной рыбкой" много затратнее, чем предполагают обычно линуксоиды. Лучше промолчать, чем отсылать "в гугль" или "в маны".

 
Добавлено:
 
Ищущий на самом деле оптимизирует не один параметр, а больше. То что ему нужно РЕАЛЬНО - это не найти ответ на свой сиюминутный вопрос, а встроиться в правильный контекст, в котором его цель достигается с минимумом затрат. Если цена связывания личного интерпретатора с правильным контекстом для него запретительно высока, он будет искать более затратные пути. (До некоторого предела, который он готов на свою цель потратить - превысив который, он бросит это занятие, отчаявшись.)
 
Реально помочь людям "удочкой" можно, лишь облегчая им связывание с полезными для них контекстами. Это тоже работа, и нелёгкая. К тому же, обычно несвойственная технарям, потому что требует не столько технических, сколько коммуникатвных навыков.


Всего записей: 17149 | Зарегистр. 14-10-2001 | Отправлено: 19:17 17-04-2012 | Исправлено: LevT, 19:53 17-04-2012
Maximus777

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT,
подписываюсь под каждым словом. Если бы мне здесь не выдали "рыбку", скорее всего я бы её не поймал

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



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

Цитата:
То что ему нужно РЕАЛЬНО - это не найти ответ на свой сиюминутный вопрос, а встроиться в правильный контекст, в котором его цель достигается с минимумом затрат.
вот с данной фразой да, во многом согласен. Однако я тоже выражение дал не из своей "бездонной" памяти, а с этого примера построил. Возможно мне немного проще искать т.к. я чутка "в теме". Однако умение правильно строить поисковые запросы это тоже не пустой звук и тут даже хз как и чему учится... Мне еще оочень сильно помогает персонализированная выдача, за несколько лет поиска, имея гуглоакк, она весьма приятна - разница видна, когда ищу не залогинившись, так же влияет установленный язык по умолчанию английский.

----------
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 | Отправлено: 00:10 18-04-2012
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите как реализовать сравнение слова по маске?
Например, есть маска "internet", подходящие совпадения будут "i", "in", "int" ... "internet".
Сравнение возможно производить начиная с любого символа (ну это не фокус, просто лишнюю часть можно вытащить за пределы конструкции).
 
На чём всё это надо написать? Ну вообще на QRegExp. Оно весьма похоже на обычные регулярки для sed или awk.
p.s. Вумных программистов сразу предупреждаю: мне нужно сделать это через QRegExp, т.к. это составная часть сложной строки и заниматься её разбором через split() и пачку if'ов очень запарно и легко запутаться. Посему не надо кричать что startWith() выполняет нужное мне действие. Самому абыдно, что под рукой инструмент, но тут он бессилен.
Хотя если такую регулярку не написать, то придётся выстроить костыль
 
Добавлено:
Вариант с костылями почти точно отменяется т.к. от QRegExp я получил еще очень приятный бонус, так что вопрос очень актуален.

----------
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 | Отправлено: 21:42 15-05-2012 | Исправлено: Alukardd, 22:14 15-05-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd
> Подскажите как реализовать сравнение слова по маске?
> Например, есть маска "internet", подходящие совпадения будут "i", "in", "int" ... "internet".
На PCRE? Как бы элементарно, не?
 

Код:
#!/usr/bin/perl
 
$mystr = 'int';
$mymask = 'internet';
print 'Y' if $mymask =~ $mystr . '.*';

 
Вы по-видимому что-то иное имели в виду, но из ваших общих слов больше ничего не понятно. :-)
Так что, давайте код, и наверное не сюда (какое отношение эта ветка имеет к Кутэ), а куда-нибудь в форум «Прикладное программирование».

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

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



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
Не-не-не, мне именно сюда Пофигу на Qt. Мне регулярку написать надо, а про QRegExp я уточнил только для того что бы вы понимали чем мы ограничены или наоборот.
 
Я может чего-то не понимаю, конечно... Полностью проблема выглядит так:
Есть фраза "we have very slow internet", по сути это максимальная маска. Нужно проверить входящую фразу, в которой слова могут быть сокращены до произвольного числа букв, но не менее 2-х скажем. Т.е. фраза "we hav very sl inter" должна пройти. Вот такую канитель надо получить.
Вопрос - как должна выглядеть маска? Бить на отдельные слова вариант не совсем удобоваримый.

----------
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 | Отправлено: 10:08 16-05-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

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