Ответы пользователя по тегу bash
  • Как сделать git clone в bash скрипте, если путь к репозиторию содержит пробелы?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Вангую, что вот так:
    gitFolder="\"/f/Folder name with spaces/\"";
    git clone $gitFolder $1 && echo "ok"

    заработает
    Ответ написан
    Комментировать
  • Как автоматически запускать MYSQL при падении в UBUNTU?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Много-много лет назад я написал вот такое для проверки падения процесса winbind. Пускается по крону.

    entries=`ps -ax | grep $1 | grep -v grep | grep -v checkwbd | wc -l`
    host=`/bin/hostname`
    _host=${host%%.*}
    _date=`/bin/date "+%b %d %T"`
    
    if [ $entries -eq 0 ]; then
      cd /usr/local/etc/rc.d
      ./$2 start
      /usr/bin/logger -4 -i -t chkservice -p daemon.info $1 crash detected, process restarted
    fi


    checkwbd - это имя самого скрипта
    Ответ написан
    Комментировать
  • Почему глобальные переменные не устанавливаются из скрипта?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Потому что не так надо.

    Вот пример рабочего .bash_profile (часть ессно)
    # L10N
    NLSPATH=/nonexistent; export NLSPATH
    LANG=ru_RU.UTF-8; export LANG
    LC_MESSAGES=ru_RU.UTF-8; export LC_MESSAGES
    LC_TIME=en_GB.UTF-8; export LC_TIME
    LC_NUMERIC=ru_RU.UTF-8; export LC_NUMERIC
    
    # Other
    EDITOR=mcedit; export EDITOR
    PAGER=less; export PAGER
    BLOCKSIZE=K; export BLOCKSIZE
    Ответ написан
    4 комментария
  • Как реализовать автозапуск скрипта bash с пользовательной учетки от имени root?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    как стартовать скрипт из под учетки юзера но с правами рута чтобы init 0 отработала ?

    Никак.

    Нужно:
    - man sudo
    - изменение постановки задачи
    - новый скрипт
    - если что-то пошло не так, перейти к п.1
    Ответ написан
  • Почему не выполняется sh скрипт?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Ну, первое.
    Шебанг - обязателен! Давно-давно уже все скрипты без шебанга вполне могут быть выполнены не там, не так или вообще не выполнены.
    Второе.
    PATH в начале скрипта - обязателен. Не стоит полагаться на умолчания, где-то чем-то установленные - они могут оказаться совсем не такими, как Вы думаете.
    Третье.
    Для подстраховки у каждой команды нужно указывать путь. То есть не "nc" , а "/usr/bin/nc" (ну или где он там у Вас лежит)
    Ответ написан
    1 комментарий
  • Как грамотно перелить файлы с http?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    man wget
    Ответ написан
    Комментировать
  • Как правильно назначить симлинки?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    При выполнении команды шелл выполнит команду pwd и подставит результат ее выполнения в то место, где записано pwd. Допустим я сейчас нахожусь в каталоге /tmp/zhopa. Тогда будет выполнена команда
    ln -sf /tmp/zhopa/bin/casperjs /usr/local/bin/casperjs
    Ответ написан
  • Как интегрировать некоторые команды bash?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Суть в том, что эти заклинания должны где-то храниться, вопрос где?

    /bin, /usr/bin, /sbin, /usr/sbin и прочие каталоги, входящие в общий список поиска исполняемых файлов, который хранится в переменной PATH
    В первом случае некоторые команды (нужные user-у) находятся и выполняются под root-ом

    Далеко не все команды имеет смысл выполнять юзеру - у него банально не хватит прав их выполнить. И далеко не всегда имеет смысл давать юзеру права на выполнение этих команд
    Ответ написан
    Комментировать
  • Как проверить через Bash есть Интернет или нет?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Сначала нужно определиться что такое "есть Интернет". Есть соединение с шлюзом провайдера? С точкой обмена трафика уровня города? С сервером гугла? С сервером котиков, трубой, steam, танками? Наличие связи с одним вовсе не означает наличия связи с другими :) (за исключением роутера провайдера - отсутствие с ним связи есть отсутствие инета вообще).
    Ответ написан
    Комментировать
  • Как определить ip через bash скрипт?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    В самом наипростейшем случае, когда одна сетевуха, никаких наворотов - сначала netstat -in, чтобы получить список интерфейсов и их имен и откинуть lo0, а потом ifconfig по тому интерфейсу, который остался.
    Но это наипростейший случай. Даже у компа с одной сетевухой может быть например виртуальная машина и мост, который обьединяет уже как минимум два интерефейса:
    # netstat -in
    Kernel Interface table
    Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
    br0       1500   850276      0   9811 0        138039      0      0      0 BMPRU
    eth0      1500   859789      0   1739 0        138070      0      0      0 BMRU
    lo       65536     3749      0      0 0          3749      0      0      0 LRU

    Какой вот тут взяли бы? :)
    Ответ написан
    Комментировать
  • При попытке установить nginx на хостинге pythonanywhere выдает ошибку?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Хм. А с чего Вы взяли, что можете там что-нибудь поставить? Это облачная платформа для запуска скриптов на питоне, все необходимое - если Вам нужно запускать скрипты на питоне - там уже должно быть. А ставить туда что-то могут только его (pythonanywhere) админы.
    Ответ написан
    Комментировать
  • Проблема с разрешениями экранов ubuntu?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    man xrandr

    Можно также использовать встроенные в гуй инструменты - их есть даже в старом TDE

    UPD: Можно вручную прописать modeline в xorg.conf но для бубунтоводов это уже настолько черная магия, что советовать не буду :)
    Ответ написан
  • Как осуществлять прокрутку в окошке терминала UNIX?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    В отличие от FreeBSD, загрузочный лог на консоли линуха не посмотреть. От слова совсем. Он куда-то там выводится и пропадает, как только стартовал getty. Его можно увидеть только в dmesg (ну и в /var/log/kernel, если настроили).
    Вообще Shift+PgUp. Но там будет далеко не весь лог...
    Ответ написан
    2 комментария
  • Как положить $HOME/.composer/vendor/bin в $PATH в линукс минте?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    - Не рекомендуется без нужды править системные скрипты (вне домашки). Да, никто этого не запрещал, но система может не рассчитывать на наличие там правок и тупо переписать его например. Правьте .bashrc.
    - Не рекомендуется сшибать предыдущее значение PATH - он может быть уже выставлен и выставлен весьма развесисто системными скриптами. Используйте метод, описанный danwerspb
    - что выдает команда "which laravel"?
    Ответ написан
    Комментировать
  • Почему не работае скрипт?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    "Общие" переменные обычно настраивают один раз - в .bashrc или .bash_profile (первый выполняется только при логине, второй - любым шеллом). Установка переменной порождает ее для текущего сеанса и всех порожденных им процессов, как только шелл завершился - все переменные стерлись :)
    Чтобы этого не происходило, используют команду export:
    PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/local/lib32/pkgconfig:/usr/lib/pkgconfig:/usr/lib32/pkgconfig; export PKG_CONFIG_PATH

    LD_LIBRARY_PATH задается подобным образом. Только крайне не рекомендуется использовать относительные пути - вместо ~ лучше напишите полный путь к домашке
    Ответ написан
    Комментировать
  • Использовать ли Python, когда можно обойтись bash?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Учить /bin/sh
    И вот почему

    На /bin/sh можно реализовать бОльшую часть админских задач, привлекая питон (хотя я вот привлекаю Perl - мне он нравится больше) только тогда, когда реально необходимо, когда скажем реализация на /bin/sh становится громоздкой и самому тебе через месяц непонятной...
    Ответ написан
    7 комментариев
  • Можно ли на bash сделать так, и если да то как?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Суть очень простая.
    Взять текущую дату, высчитать диапазон равный неделе (date это умеет)
    Найти все файлы с датой создания такой-то и датой изменения не больше такой-то (это умеет find)
    И для каждого из них выполнить поиск-и-замену (это умеет sed), ну для эстетства можно сначала grep нужной строки, если нет, sed не вызывать.

    bash тут нужен собственно только чтобы все это в кучку свести.
    Ответ написан
    Комментировать
  • Bash - Как сравнивать время?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Все операции с "временем" - это операции с целым беззнаковым числом, где время выражено в виде числа секунд с 1 января 1970 года.
    _cacrl=`date -r $cadir/$crlfile +%s`
    _oldcrl=`date -r $storedir/$crlfile +%s`
    
    if [ $_cacrl -gt $_oldcrl ]; then
      echo "Banzai"
    fi

    Сравнить время создания двух файлов, если второй новее - сделать что-то
    Ответ написан
    Комментировать
  • Bash как экранировать символы?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Потому что консоль при обработке ввода еще раз обрабатывает экранирование.

    sed 's/5/\\\\n/' - при обработке ввода четыре символа \\\\ превращаются в два (каждый первый - экранирующй, каждый второй - экранируемый). При обработке команды два символа \\ превращаются в один. Вопрос экранирования пожалуй один из самый запутанных - иногда приходится экранировать по два и даже три раза!
    Ответ написан
    1 комментарий
  • Почему bash не видит переменную?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Потому что скриптовые языки очень строги по синтаксису. В tcsh такая конструкция проканала бы. В Bourne-shell based - не канает. Только
    count=20
    и никак иначе
    Ответ написан
    Комментировать