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

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



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd
Присваиваются переменным любые значения без проблем:
$ test_newline=$(echo -ne "One.\nTwo.\nThree.\n")
$ set | grep test_newline
test_newline=$'One.\nTwo.\nThree.'

 
А вот при запросе значения через $test_newline все разделители выводятся одинаково.

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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 19:44 10-02-2011
digital422

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Небольшая проблемка, awk '/8081/{print $4}', в случае, когда несколько клиентов работают с демоном, скрипт выдает -  "ожидается использование бинарного оператора", почему?

Всего записей: 360 | Зарегистр. 19-04-2003 | Отправлено: 21:32 10-02-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
digital422
> ожидается использование бинарного оператора
 
Не могу воспроизвести. Вывод нетстата дайте, пожалуйста.

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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 22:14 10-02-2011
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
а-а-а-а
echo -e $x
вот оно где!!!

----------
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 | Отправлено: 22:53 10-02-2011 | Исправлено: Alukardd, 22:54 10-02-2011
digital422

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
netstat -na |grep 8081
tcp        0      0 192.168.1.1:8081       0.0.0.0:*               LISTEN
tcp        0      0 192.168.1.1:8081       192.168.21.250:42363     ESTABLISHED
 
./check-list.sh
./check-list.sh line 23: test: 192.168.1.1:8081: ожидается использование бинарного оператора
 
#!/bin/sh
NETSTAT_1=`netstat -nat | awk '/8081/{print $4}'`
 
if test -z $NETSTAT_1
then
echo "8081 restart"
/script/restart.sh
fi

Всего записей: 360 | Зарегистр. 19-04-2003 | Отправлено: 14:10 11-02-2011
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
digital422
А собстно где эта ваша 23 строка? если это if test -z $NETSTAT_1, то у меня работает... Ну попробуйте изменить её так: if test -z "$NETSTAT_1"


----------
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:02 11-02-2011
digital422

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да, кавычек не хватало.
Нашел еще вот такой вариант:
netstat -npl | grep -E "8081" | wc -l, выдает 1 или 0, как в этом случае будет выражение?

Всего записей: 360 | Зарегистр. 19-04-2003 | Отправлено: 15:16 11-02-2011
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
digital422
Цитата:
 как в этом случае будет выражение?
какое еще выражение? вы про if?
 
Вот почитайте, полезно:
Часть 1
Часть 2
Часть 3
 
p.s. гык, автор темы 2,5года спустя...

----------
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:34 11-02-2011 | Исправлено: Alukardd, 15:35 11-02-2011
ASE_DAG



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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 17:46 11-03-2011
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 | Отправлено: 17:51 11-03-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd
> ололо
ЩИТО?
 
> что-то вы взялись за шапки во всех темах!  
И довольно давно. Это до форума «Юникс» я только добрался.  
А вы против?

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 18:02 11-03-2011
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
да нет, наоборот очень рад что форум поднимается. И приобретает внешний вид.
 
p.s. дополнил "ошибки программирования" конкретными ссылками на тот же ресурс
      добавил ссылку на вкусности и косметику для bash.

----------
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 | Отправлено: 20:15 11-03-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd
> дополнил "ошибки программирования" конкретными ссылками на тот же ресурс  
А почему только три части? Их же пять. Дописал.
 
> добавил ссылку на вкусности и косметику для bash.
Ага. Спасибо.

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 20:23 11-03-2011
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
Цитата:
А почему только три части? Их же пять. Дописал.  
оО печаль(( Не заметил в свое время,а щас из избранного стащил...
 
p.s. Теперь уже и шапки с forum.ru-board.com можно в избранное добавлять.

----------
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 | Отправлено: 20:44 11-03-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите разобраться, уже всю голову сломал.
 
Делаю:
 
$ a=`curl -sI "ftp://ftp.debian.org/debian/ls-lR.gz" | awk '/Content-Length/{print $2}'`
$ echo $a
6160333
$ expr $a + 1
expr: нецелочисленный аргумент
$ echo $((a+1))
")syntax error: invalid arithmetic operator (error token is "

 
В чем загвоздка?
 
Добавлено:
Все! Разобрался.  
Кстати, наглядная демонстрация превосходства единой темы над множеством мелких: пролистал чуть выше, увидел свой же пост про особенности вывода служебных символов при помощи echo, сделал:
$ set | grep CONTENT_LENGTH
CONTENT_LENGTH=$'6160333\r'

 
Оказывается HTTP-заголовки отдаются с виндовым переводом строки (CR LF), кто бы мог подумать.
 
Соответственно решение:
$ CONTENT_LENGTH=`curl -sI "ftp://ftp.debian.org/debian/ls-lR.gz" | awk '/Content-Length/{gsub("[[:cntrl:]]", ""); print $2}'`

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 21:53 12-03-2011
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
Цитата:
[[:cntrl:]]
оО это вы откуда такие маски берёте??? Я тож почитать хочу. Если ссылка красивая, то в шапку её

----------
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 | Отправлено: 00:39 13-03-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd
> Я тож почитать хочу.
$ man tr
 
;)

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 00:43 13-03-2011
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
^_^
спс))) хех рассчитывал на списочек побольше)))
 
p.s. кстати, что ищете в файле ls-lR, даты модификации??? Но к чему? Постоянно поддерживаете локальные копии некоторых файлов в актуальном состоянии?

----------
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 | Отправлено: 00:54 13-03-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd
> кстати, что ищете в файле ls-lR, даты модификации???
Нет. Какие еще даты модификации?
Файл взят просто для примера.
 
-I — это запрос заголовка без содержания.
 
$ curl -sI "ftp://ftp.debian.org/debian/ls-lR.gz"
Last-Modified: Sat, 12 Mar 2011 20:36:40 GMT
Content-Length: 6171245
Accept-ranges: bytes

 
А ноги этой штуки растут вот отсюда. Я сначала быстренько набросал скриптик «вслепую», потом пришел, стал проверять... ну и засел на полчаса с этим «нецелочисленным аргументом».
 
Кстати, совершенно не уверен, что это может предотвратить фрагментирование.

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 01:02 13-03-2011 | Исправлено: ASE_DAG, 01:03 13-03-2011
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
ой блин сорь))) пока думал о регулярках, про ключ I забыл)))
Цитата:
set | grep CONTENT_LENGTH  
кстати тоже полезная вещь, хотя некоторые escape последовательности нам выведет и echo, если без ключа -e использовать.

----------
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 | Отправлено: 01:15 13-03-2011
Открыть новую тему     Написать ответ в эту тему

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