Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: [HOWTO] Пишем bash скрипты  (Прочитано 145850 раз)

0 Пользователей и 3 Гостей просматривают эту тему.

tartan

  • Автор темы
  • Гость
[HOWTO] Пишем bash скрипты
« : 30 Сентябрь 2008, 11:19:15 »
Пользовался поиском, на первых двадцати страницах выдачи по запросу "скрипт" и на первых десяти - по запросу "скрипт HOWTO" не нашлось такой темы.

Мне нужно несколько скриптов для кой-каких действий на сервере и для conky. Можно попробовать их выцыганить у суровых специалистов, но лучше написать самому, потому что потом ещё чего-то захочется. )

Нашёл неплохой краткий, но ёмкий самоучитель по bash скриптам, на русском, там и условия, и конвейеры, и всё на свете:

http://rus-linux.net/MyLDP/HOWTO-ru/Bash-Progr-Intro-HOWTO/Bash-Prog-Intro-HOWTO.html#toc14

Кодировка - KOI8-R

В сочетании с этим: http://forum.ubuntu.ru/index.php?topic=24150.0 позволяет научить компьютер приносить тапочки и варить кофе.

tolstyj рекомендует более обширный и развёрнутый документ:  http://gazette.linux.ru.net/rus/articles/abs-guide/index.html

tinman321 рекомендует учебное пособие по shell (по предыдущей ссылке рассмотрены некоторые отличия shell от bash): http://www.codenet.ru/progr/other/sh/

picnik дал ссылку на руководство Learning the shell, в котором, помимо собственно скриптов, рассматривается широкий круг вопросов: что такое shell, что представляют из себя инкарнации консоли в различных рабочих средах, как устроена система папок в Linux, разграничение прав пользователей, мониторинг процессов и управление ими средствами shell. http://www.linuxcommand.org/learning_the_shell.php

Сравнение различных командных интерпретаторов можно найти здесь: http://en.wikipedia.org/wiki/Comparison_of_computer_shells, про cmd.exe там тоже есть, гыгыгы.

Важное добавление о принципах именования и комментирования скриптов от vadimka: обязательно комментируйте скрипты, во-первых, сами лучше поймёте, что делаете, во-вторых, вдруг вы напишете такую нетленку, что ей захотят пользоваться другие и что-то на её основе разрабатывать? Имя скрипту нужно давать осмысленное, в виде имяпользователя_действие, чтобы легко было их находить и перетаскивать куда нужно и отличать от тех, что были в системе по умолчанию или созданы какой-нибудь программой.

Ещё пять копеек от меня: чтобы скрипт заработал, нужно сделать его исполняемым. Это можно сделать через гуй (в свойствах файла) или командой chmod, я предпочитаю chmod 711 /gde/tam/script

Чтобы потом запускать скрипт, не набирая полный путь к нему, можно потом положить его в директорию /usr/bin
« Последнее редактирование: 10 Октябрь 2010, 01:04:55 от stmc »

tartan

  • Автор темы
  • Гость
Re: HOWTO: Пишем bash скрипты
« Ответ #1 : 01 Октябрь 2008, 08:35:30 »
Там прямо учебник целый.

Спасибо.

Оффлайн deon77

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: HOWTO: Пишем bash скрипты
« Ответ #2 : 01 Октябрь 2008, 17:38:21 »
Спасибо!!! :)

Оффлайн tolstyj

  • Участник
  • *
  • Сообщений: 186
    • Просмотр профиля
Re: HOWTO: Пишем bash скрипты
« Ответ #3 : 01 Октябрь 2008, 22:27:59 »
Там прямо учебник целый.

Спасибо.

Ага. Мне больше всего нравится что там готовые скрипты есть , так напного проще разбираться и можно готовые куски брать.

tartan

  • Автор темы
  • Гость
Re: HOWTO: Пишем bash скрипты
« Ответ #4 : 02 Октябрь 2008, 09:54:56 »
Давайте ссылы, я их в первый пост буду подтягивать, вот так ^

Оффлайн Besieger

  • Активист
  • *
  • Сообщений: 686
  • Живи сам и дай жить другим)
    • Просмотр профиля
Re: HOWTO: Пишем bash скрипты
« Ответ #5 : 02 Октябрь 2008, 13:16:35 »
Огромное спасибо, коллеги! Очень хотел нечто подобное почитать!
Asus Eee PC 1000H + Linux Mint = Full out-of-the-box joy)

Оффлайн tinman321

  • Активист
  • *
  • Сообщений: 573
    • Просмотр профиля
    • Мир Линуксоида
Re: HOWTO: Пишем bash скрипты
« Ответ #6 : 02 Октябрь 2008, 19:00:57 »
http://www.codenet.ru/progr/other/sh/

Я пользуюсь этим http://gazette.linux.ru.net/rus/articles/abs-guide/index.html
Мож кому пригодится тоже.
Advanced bash scripting guide не знать, это плохо

Оффлайн picnik

  • Активист
  • *
  • Сообщений: 310
    • Просмотр профиля
Re: HOWTO: Пишем bash скрипты
« Ответ #7 : 02 Октябрь 2008, 19:36:48 »
http://www.linuxcommand.org/
Правда, все на английском, но почитать можно

tartan

  • Автор темы
  • Гость
Re: HOWTO: Пишем bash скрипты
« Ответ #8 : 02 Октябрь 2008, 20:49:44 »
Это shell. ))

Утащил наверх всё равно. Спасибо.

Оффлайн tinman321

  • Активист
  • *
  • Сообщений: 573
    • Просмотр профиля
    • Мир Линуксоида
Re: HOWTO: Пишем bash скрипты
« Ответ #9 : 02 Октябрь 2008, 21:32:17 »
Это shell. ))

Утащил наверх всё равно. Спасибо.
а Bash - это Bourne-Again Shell

tartan

  • Автор темы
  • Гость
Re: HOWTO: Пишем bash скрипты
« Ответ #10 : 02 Октябрь 2008, 22:15:26 »
Цитировать
При переносе сценариев с сигнатурой #!/bin/sh на другие Unix системы, где в качестве командного интерпретатора задан другой shell, вы можете лишиться некоторых особенностей, присущих bash. Поэтому такие сценарии должны быть POSIX совместимыми.

Цитировать
Внимание: вызов Bash-скрипта с помощью команды sh scriptname отключает специфичные для Bash расширения, что может привести к появлению ошибки и аварийному завершению работы сценария.

http://gazette.linux.ru.net/rus/articles/abs-guide/c112.html

Т.е. чтобы имели это в виду, когда скрипты делают на bash по рецепам для shell и наоборот. )

Почти то же самое, но есть какие-то детали, которые надо особо отслеживать.

Оффлайн Kwah

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 1442
  • Ubuntu 10.04
    • Просмотр профиля
Re: HOWTO: Пишем bash скрипты
« Ответ #11 : 02 Октябрь 2008, 23:01:00 »
Цитировать
При переносе сценариев с сигнатурой #!/bin/sh на другие Unix системы, где в качестве командного интерпретатора задан другой shell, вы можете лишиться некоторых особенностей, присущих bash. Поэтому такие сценарии должны быть POSIX совместимыми.

Цитировать
Внимание: вызов Bash-скрипта с помощью команды sh scriptname отключает специфичные для Bash расширения, что может привести к появлению ошибки и аварийному завершению работы сценария.

http://gazette.linux.ru.net/rus/articles/abs-guide/c112.html

Т.е. чтобы имели это в виду, когда скрипты делают на bash по рецепам для shell и наоборот. )

Почти то же самое, но есть какие-то детали, которые надо особо отслеживать.
Ой какой бред написан-то... Если пишете скрипт на и для bash, используя его специфичные функции, то и в качестве интерпретатора во первых строках нужно указывать именно bash, а не sh.

Как будет обрабатываться вызов sh scriptname зависит от того, что есть sh в системе, на которой скрипт таким образом запускается. Во многих Линукс дистрибутивах (ЕМНИП, в Red Hat подобных именно так) sh есть симлинк на bash, и многие программисты, работавшие с этой системой или начинавшие с неё используют в своих скриптах bash-измы в хвост и в гриву, при этом указывая sh в качестве интерпретатора, а когда такой скрипт попадает в Debian или Ubuntu, например, то он накрывается медным тазом (его приходится переделывать).

tartan

  • Автор темы
  • Гость
Re: HOWTO: Пишем bash скрипты
« Ответ #12 : 02 Октябрь 2008, 23:40:17 »
Эээ... Я примерно это и имел в виду. Пишем скрипт для bash, начинается он с вызова bash, приёмы используются взятые из руководств по bash. Если что-то, почёрпнутое из руководств по sh не работает или в начале bash скрипта не глядя вставлен вызов sh, то не удивляемся. Ага?

Оффлайн Kwah

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 1442
  • Ubuntu 10.04
    • Просмотр профиля
Re: HOWTO: Пишем bash скрипты
« Ответ #13 : 03 Октябрь 2008, 00:25:40 »
Эээ... Я примерно это и имел в виду. Пишем скрипт для bash, начинается он с вызова bash, приёмы используются взятые из руководств по bash. Если что-то, почёрпнутое из руководств по sh не работает или в начале bash скрипта не глядя вставлен вызов sh, то не удивляемся. Ага?
Процитировал не очень. Наезд был на цитаты, которые ты привёл :coolsmiley:

Оффлайн tolstyj

  • Участник
  • *
  • Сообщений: 186
    • Просмотр профиля
Re: HOWTO: Пишем bash скрипты
« Ответ #14 : 03 Октябрь 2008, 01:17:12 »
Во многих Линукс дистрибутивах (ЕМНИП, в Red Hat подобных именно так) sh есть симлинк на bash, и многие программисты, работавшие с этой системой или начинавшие с неё используют в своих скриптах bash-измы в хвост и в гриву, при этом указывая sh в качестве интерпретатора, а когда такой скрипт попадает в Debian или Ubuntu, например, то он накрывается медным тазом (его приходится переделывать).

А разве в Ubuntu не bash стоит по-умолчанию?

У меня все время, как введу какуюто белиберду (пробелы часто забываю), выскакивает

bash: command not found.

Я сам руками ничего не менял, как стало по-молчанию так и есть.

 

Страница сгенерирована за 0.11 секунд. Запросов: 24.