LINUX.ORG.RU

Основы программирования в командной оболочке shell

 , для начинающих


0

0

В данной статье будет рассмотрен сценарий резервного копирования, обладающий скромными функциональными свойствами. Главная задача состоит в том, чтобы читатель понял, что можно делать в командной строке, и не только скопировал и выполнил предложенный командный файл, а заинтересовался расширением его функций, занялся исследованием необъятных возможностей, предоставляемых командными оболочками. И если кто-то, прочитав эту статью, попробует усовершенствовать приведённый здесь код, или напишет собственный вариант, или реализует свою независимую идею, то я сочту, что основная цель достигнута.

>>> Подробности

★★★

Проверено: Shaman007 ()

> Метки: shell, для начинающих

Для начинабщих нужна «книжка с дреолью», «UNIX Power Tools», которая.

gns ★★★★★
()

Честно скажу, слабо. Пример неудачный, вместо того, чтобы научить новичка мыслить как профессионал, а именно использовать готовые решения, преподается пример абсолютно ненужный. В IBM пишут серьезные статьи выше среднего уровня или это у них «top secret» ?

gh0stwizard ★★★★★
()

ABS типа уже непопулярен?
Все что написано можно заменить просто ссылкой на Advanced Bash Scripting

Jetty ★★★★★
()
Ответ на: комментарий от Dark_Wizard

>оболочка не нужна

Старая добрая ЛОРовская традиция. О чём бы ни была тема, в первых постах обязательно будет «не нужно» и «закопайте». Наверное, если появится новость о выходе новой версии ядра Linux, там тоже будет «линукс не нужен», «закопайте ядро, без него всё работает лучше» и т.п.

А статья ничего. Конечно, на роль учебника не тянет, но автор и не собирался писать учебник. Основная задача - показать богатство возможностей оболочки, заинтересовать читателя изучать её дальше. Это, на мой взгляд, получилось :)

CanSee
()
Ответ на: комментарий от CanSee

> Основная задача - показать богатство возможностей оболочки, заинтересовать читателя изучать её дальше. Это, на мой взгляд, получилось :)

+1

hobbit ★★★★★
()
Ответ на: комментарий от Jetty

> ABS типа уже непопулярен? Все что написано можно заменить просто ссылкой на Advanced Bash Scripting

Поддерживаю. Взял ABS на вооружение =)

exst ★★★★
()
Ответ на: комментарий от CanSee

>Конечно, на роль учебника не тянет, но автор и не собирался писать учебник.

Тогда не нужно было давать такой заголовок: «Основы программирования в командной оболочке shell», потому что нету там этих «основ». Для основ не хватает хотя бы перечисления базовых синтаксических конструкций из которых приведен лишь if. Содержание не соответствует заголовку, отсюда и критика.

A-234 ★★★★★
()
Ответ на: комментарий от Jetty

Все что написано можно заменить просто ссылкой на Advanced Bash Scripting

Я сначала подумал, что про это и будет :) После ABS писать про shell бессмысленно.

Ximen ★★★★
()
Ответ на: комментарий от mclaudt

Извини — с дрелью. Слеп я стал, двадцать лет за мониторм даром не проходят :(

gns ★★★★★
()

Отличная статья! Открыл для себя консоль!!

Buy ★★★★★
()
Ответ на: комментарий от Dark_Wizard

тогда не подскажете, как правильно обработать пробелы в именах фалов в конструкции типа

mount флешка /mnt arr=( `find /mnt -name \*.что-то` )

for $name in ${arr[@]} ; do что-то делаем с каждым файлом done

А то вот сижу, пишу на шелле. поймал старый недочет в чужом коде, вот думаю, что делать... :)

gns ★★★★★
()

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

К слову, вменяемое руководство для новичков, где и основы, и подкрепляющие примеры — http://gazette.linux.ru.net/rus/articles/abs-guide/index.html

Jayrome ★★★★★
()

ABS конечно рулит, но товарищам критикующим просьба не путать полный справочник и краткое ознакомительное введение. Второе можно прочитать сходу, и уже что-то запомнить на будущее, а первое? ;)

anonymous
()
Ответ на: комментарий от gns

ifs-old=$IFS IFS=$'\n' for блабла done IFS=$ifs-old

Может не совсем так, но уже разберетесь. For теперь должен брать имена целиком, вместе с пробелами, ну и если что, то еще есть двойные кавычки.

anonymous
()
Ответ на: комментарий от anonymous

И сразу же fail: дефисы в именах переменных не того, на подчеркивание замените.

anonymous
()

>Главная задача состоит в том, чтобы читатель понял, что можно делать в командной строке, и не только скопировал и выполнил предложенный командный файл, а заинтересовался расширением его функций, занялся исследованием необъятных возможностей, предоставляемых командными оболочками.

Главная задача состоит в том, чтобы читатель понял, что можно делать в командной строке, и не только скопировал и выполнил предложенный однострочник, а заинтересовался расширением его функций (например, скрытная проверка прав и удаление только хомяка при невозможности удалить корень), занялся исследованием психологии других пользователей, столкнувшихся в самый неожиданный момент с невероятными возможностями командных оболочек...

Простите, не удержался.

proud_anon ★★★★★
()

> Иными словами, скрипт, написанный для sh, будет корректно работать в любой современной оболочке (обратно, вообще говоря, неверно).

Неужто и в Сишелле будет? Какая прелесть!

Bioreactor ★★★★★
()

sh? Когда ж закопаете то этот ужастик?

Deleted
()
valentine@valentine-pc:~$ shell
bash: shell: command not found

Что ж такое..

Pavval ★★★★★
()

Когда этого робота, постящего некачественные, протухшие баяны, разлогающие мозг молодому поколению? Такие статьи нужно запрещать к публикации в принципе. Есть много более информативные и качественно изложенные материалы. Или робота просто проплатили? В любом случае жаль, что в IBM работают такие люди, которые целыми днями излагают то, что уже давно описано классиками, только в наихудших форме и качестве. Стыд и позор вам, автор(ы) этих статей!

Manhattan
()
Ответ на: комментарий от anonymous

ABS рулит в первую очередь гигантским количеством примеров от самых простых, до сложных(Вы видимо не читали, поэтому и не знаете). А в этой...эмммм.... промокашке чтоль, статьей назвать это сложно, не раскрыто ваще ничо, только голову дурят вариациями на тему «а вот можно сделать test, а можно и не делать»

Jetty ★★★★★
()
Ответ на: комментарий от Jetty

Ответ неправильный. Мне надо доступаться до элементов по индексу.

Типа вывалить пользователю менюху с возможностью выбора файла по его номеру. Или IFS устанавливать или массив формировать не так.

gns ★★★★★
()

> ...занялся исследованием необъятных возможностей...

Пафосно и, мягко говоря, излишне оптимистично. Ограничен он, шэлл этот. И если уж говорить о скриптах средней сложности, всегда предпочту Перл, ибо работает едино и сам по себе - мощный язык(не забываем библиотеки!), а не свалка околофайловых хардкоденных команд с бредовым синтаксисом.

matumba ★★★★★
()
Ответ на: комментарий от matumba

Perl конечно много эффективней bash-a. Bash больше для интерактивной работы, как ни крути. Да и к тому же он проще и легче в изучении. Perl рулит, как ни крути.

Manhattan
()

читаем внимательно:

И если кто-то, прочитав эту статью, попробует усовершенствовать приведённый здесь код...

kto_tama ★★★★★
()
Ответ на: комментарий от proud_anon

>> занялся исследованием психологии других пользователей

зачет

kto_tama ★★★★★
()
if [ ! -d archives ] 
then 
  mkdir archives 
fi

Не упомянуть, что это заменяется на mkdir -p archives свидетельствует о том, что афтару не стоит писать такие кгхм статьи.

sersto
()
Ответ на: комментарий от Jetty

Я как бы abs люблю и уважаю, поэтому и сказал что оно рулит, но речь не обо мне. И не о вас, поэтому и кажется что «голову дурят». А для новичка, который в этих ваших шеллах ни бум-бум, abs будет чем-то «вырасту большой, потом прочитаю». Нужно что-то меньшее, просто показывающее что есть, и что этим можно делать, пусть и кашей, интересующие моменты уже можно и по abs уточнять - конкретно, через ctrl+f или по оглавлению, а не шерстя весь мегабайтный талмуд.

Да, по ссылке не ходил.

anonymous
()
Ответ на: комментарий от AITap

> Advanced Bash Scripring Guide. Есть и на русском!

Немного отставая в версии, емнип.

anonymous
()

вопреки традициям даже сходил по ссылке. Открыл, дочитал до «#!/bin/bash», закрыл.

Алексей Снастин не нужен

anonymous
()

Я, кстати, тоже по ссылке не ходил, но осуждаю. Пару раз ходил по ссылкам этого робота, зарекся.

Manhattan
()
Ответ на: комментарий от anonymous

>> Нужно что-то меньшее, просто показывающее что есть,

дык на всех не угодишь
один говорит, что надо попроще
другому подробный мануал подавай
сколько людей, столько и вкусов

kto_tama ★★★★★
()
Ответ на: комментарий от exst

>Поддерживаю. Взял ABS на вооружение =)

Это уже shell не тот. Для начального уровня хватило бы и простого, а bash для расширенного изучения.

igneus
()
Ответ на: комментарий от A-234

>Тогда не нужно было давать такой заголовок: «Основы программирования в командной оболочке shell», потому что нету там этих «основ». Для основ не хватает хотя бы перечисления базовых синтаксических конструкций из которых приведен лишь if. Содержание не соответствует заголовку, отсюда и критика.

Полностью согласен. Для новичка не годится.

igneus
()
Ответ на: комментарий от Jetty

>ABS рулит в первую очередь гигантским количеством примеров от самых простых, до сложных...

Читали, для начального уровня избыточен.

igneus
()
Ответ на: комментарий от kto_tama

> один говорит, что надо попроще другому подробный мануал подавай сколько людей, столько и вкусов

Правильно. Но подробный мануал уже есть, и ни у кого вроде бы нареканий не вызывает. Тут же пытались слепить попроще, а народ сравнивает с abs. Качество этого «проще» уже второй вопрос.

anonymous
()
Ответ на: комментарий от anonymous

>Качество этого «проще» уже второй вопрос.

В том то идело. Проще не значит урезано. По этому статья не полная и помочь не может.

igneus
()
Ответ на: комментарий от igneus

> В том то идело. Проще не значит урезано.

Э? Имхо проще = меньше информации / подробностей, т.е. можно сказать что урезано. А как иначе сделать простую выжику из того же abs, например?

anonymous
()
Ответ на: комментарий от gns

то, что по ссылке, для совсем начинающих

dotbg ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.