@stasretrovv

Стоит ли учиться писать скрипты на bash?

Здравствуй тостер. Я веб-разработчик, в свободное время читаю много разного.
Прочитав литературу про linux/unix, недавно наткнулся на туториалы про bash.

Делая аналогию между bash и ruby я не вижу что можно делать такого на bash-скрипте что нельзя сделать на ruby. На ruby можно спокойно выполнить системные команды через функцию system(), можно запуская скрипт в консоле, взять введенные пользователям параметры через массив ARGV и etc.
Также иногда слышал, что в какой-то конторе требуется сис-админы со знанием ruby или python.

Поэтому появился вопрос: стоит ли сейчас уделять внимание написания скриптов на bash или такие языки как ruby и python вытеснили его?
Если я где-то ошибся, то поправьте меня.
  • Вопрос задан
  • 3883 просмотра
Решения вопроса 2
AlekseyNemiro
@AlekseyNemiro
full-stack developer
Конечно стоит изучать bash. В системах Linux многое на нем сделано, так что в любом случае придется с ним сталкиваться.

Я не учил bash намеренно. В какой-то момент просто взял и начал на нем писать код :-) Могу сказать, что язык ужасный, привередливый, местами крайне неудобный, перенасыщен подводными камнями (точнее морским ежами и минами). Но в то же время bash достаточно мощный язык.

Для небольших скриптов будет проще использовать bash. Для чего-то сложного лучше использовать нормальный язык программирования.

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

В основе идеологии Unix-подобных систем лежит простота. Так что с чем-то сложным скорее всего придется сталкиваться редко. Знаний программирования или даже основ программирования, должно вполне хватить для понимания скриптов bash, с которыми придется сталкиваться. Но пару недель его хорошенько поковырять, лишним не будет, главное мотивацию найти.
Ответ написан
Комментировать
@jaxel
Время на целенаправленное изучение тратить наверное не стоит. Достаточно понимать, что он из себя представляет и какие задачи решает. Крупные скрипты на нём писать не стоит, а простенькие, при первом знакомстве, пишутся по мануалам за пару часов.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
aminought
@aminought
Далеко не всегда на машине может стоять интерпретатор руби. Так что да, стоит.
Ответ написан
azrail_dev
@azrail_dev
Хардкорные скрипты по 1000 строк писать не стоит и учиться этому тоже не стоит, но баш нужен, пригодится. Бывает простой скрипт на 30 - 50 строчек спасает пару часов свободного времени.
Ответ написан
Комментировать
@res2001
Developer, ex-admin
В никсах часть системных функций выполнено на bash скриптах, они там сплошь и рядом. Поэтому хотя бы понимать его надо.
Ответ написан
@abcd0x00
Скриптов не так много, их как-то неудобно хранить и бэкапить.
Зато много функций, которые закидываются в инициализационный файл.
И вот они-то и используются постоянно.

Когда внешний интернет пропадает
Код
# Print popup message
# Say(message, seconds)
Say()
{
    kdialog --passivepopup "$1" ${2:-3}
}

# Ping server until it wakes up
# Connect([site="www.yandex.ru"
#         [, count=1
#         [, interval=3
#         [, message="connected"]]]])
Connect()
{
    local site="www.yandex.ru"
    local count=1
    local interval=3
    local message="connected"

    [ "$1" = "--help" ] && {
        echo "usage: $FUNCNAME [site[, count[, interval[, message]]]]"
        echo "       $FUNCNAME $site $count $interval $message"
        return 1
    } 1>&2
    [ -n "$1" ] && site="$1"
    [ -n "$2" ] && count="$2"
    [ -n "$3" ] && interval="$3"
    [ -n "$4" ] && message="$4"

    while ! ping -c $count "$site"; do
        sleep $interval;
    done
    Say "$message"
}



Когда надо клип с YouTube скачать
Код
# Download YouTube video in selected format
# Ytf(url, ofile[, fmt=18])
Ytf()
{
    [ $# -eq 0 -o "$1" = "--help" ] && {
        echo "usage: $FUNCNAME url ofile [fmtn=18]"
        echo "       $FUNCNAME http://youtube 12345.flv"
        echo "       $FUNCNAME http://youtube 12345.flv 19"
        return 1
    } 1>&2
    n=${3:-18}
    youtube-dl -c -f "$n" "$1" -o "$2"
}



Иногда нужно размер файла узнать
Код
# Check access to url like a browser
# SpiderB(url[, agent])
SpiderB()
{
    agent=${2:-Wget}
    wget --spider --user-agent="$agent" "$1"
}

Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы