Профиль пользователя заблокирован сроком с 10 апреля 2022 г. и навсегда по причине: систематические нарушения правил сервиса
Ответы пользователя по тегу bash
  • Как сравнить даты в BASH?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    1. гуглим как в баше перевести дату в метку времени юникс
    2. (опционально) гуглим как получить текущую метку метку времени юникс
    3. вычитаем одно из другого, получаем разницу в секундах
    4. как получить минуты из секунд, я очень надеюсь что вы сможете осилить самостоятельно
    Ответ написан
    Комментировать
  • Возможен ли Парсинг данных от POST внутри nginx?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Господи, пока коммент писал, уже спецов-то набежало. "extending", "openresty".
    Вот и выросло поколение, которое никогда не слышало слова CGI (не в значении "компьютерная графика")...
    Ответ написан
  • Как написать команду на bash, переименующую все файлы в каталоге в 0.bmp 1.bmp 2.bmp...?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    насчет питония не знаю, но на пхпе это одна строчка,
    php -r 'foreach(glob("*.bmp") as $i=>$file) rename($file, "$i.bmp");'
    Ответ написан
    Комментировать
  • Изучения языка BASH в 2022. Книги 2003 подходят?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    подходят.
    не изменился
    Ответ написан
    Комментировать
  • Как в BASH работают логические операторы?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Как всегда, в заголовке "Как в работают логические операторы?", а на самом деле вопрос "почему код ошибки 0 интерпретируется как true". "Где логика, где разум?" :)

    В то время как озвученный вопрос и на самом деле интересный.
    Так работают логические операторы не только в баше. В РНР точно так же можно написать
    true /*false*/ and print "Success" or print "Failed";
    и получать тот же самый результат.
    Суть тут в том, что логические операторы делаются "ленивыми". Они не вычисляют тот операнд, который не влияет на конечный результат.
    Соответственно:
    • если операция вернула true, то мы должны выполнить тот операнд, который стоит после and, потому что иначе не сможем получить общий результат операции and. который будет true только если оба операнда вернули true
    • если операция вернула true, то нет смысла выполнять тот операнд, который стоит после or, поскольку его результат ни на что не повлияет - итоговый результат в любом случае будет true, поскольку для or важно чтобы истинным был только один результат. получаем "Success"
    • если операция вернула false, то нам не нужно выполнять тот операнд, который стоит после and, потому что в любом случае результатом будет false
    • если операция вернула false, то мы должны выполнить тот операнд, который стоит после or, поскольку он будет определяющим для всего выражения. получаем "Failed"
    Ответ написан
    Комментировать
  • Почему для скриптинга в шелле используется bash а не более современный язык программирования?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Вопрос одновременно дебильный и нормальный.
    Автор просто не может нормально словами написать, чего хочет.
    Для современного поколения, воспитанного ютубой, это нормально.
    Если бы вопрос можно было задать с помощью слов "гы-гы", "круто, чувак" и смайликов, то у него бы все получилось.
    А пока приходится использовать интеллект на принимающей стороне, чтобы понять, что он там мычит.

    А мычит он не про сам шелл, а про используемый в нем скриптовый язык.
    И ответ получается очень простой - для некоторых задач Bash scripting language тупо подходит лучше. Не говоря уже про интеграцию скриптового языка баш в командную оболочку баш, какой никогда не добиться с помощью "обёрток".

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

    Так что да - или легаси, или тупо адекватность задаче.

    Апд. В ходе этой дискуссии я сообразил одну очень важную вещь. Язык программирования по определению является вторичным по отношению к командной оболочке. Главное в баше - это все-таки возможность запускать команды и позволять им взаимодействовать друг с другом. А язык уже построен вокруг этой основной задачи. Если вы попытаетесь вкрячить этот функционал в какой-то из языков программирования общего назначения, вы испортите и оболочку, и язык.
    Ответ написан
    21 комментарий
  • Почему пишет No such file or directory хотя файл есть?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Надо всегда обязательно читать, что написано в сообщении об ошибке.
    Желательно - глазами.
    Оно пишет человеческим языком - где мы сидим и какой файл пытаемся открыть
    /home/ut/Downloads
    /root/Downloads/

    Не наводит ни на какие мысли?

    А что у нас означает буквочка ~?

    Ну и совсем уж риторический вопрос: раз уж мы перешли в папку с файлом, то зачем указывать путь к ней?

    Ну и напоследок - не зря все мудрые руководства рекомендуют не сидеть под рутом
    Ответ написан
    5 комментариев
  • Можно ли полноценно заменить bat или bash другим языком?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Надо сначала определиться, что ты имеешь в виду - язык на котором скрипты пишутся - он вообще может быть любой, лишь бы интерпретатор был в системе. по умолчанию в линуксе можно сразу на десятке писать

    или речь о самой командной оболочке.
    но в этом случае смысл несколько ускользает.
    но в принципе возможно. в линуксе оболочки вообще принято менять как перчатки.
    как минимум есть csh, синтаксис которой напоминает С
    сейчас погуглил - вроде есть Xonsh и ipython

    с виндой думаю сложнее, тем кроме цмд и АС вряд ли можно что-то прикрутить
    Ответ написан
    6 комментариев
  • Что означает на Linux скрипте перед командой символ $?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    В общем я добился от автора объяснения, что ему нужно

    например при использовании значении переменной например good=bad далее выполнив команду echo $good


    То о чем ты говоришь, называется не команда, а переменная. Это и сбило всех с толку.

    Объяснение очень простое.
    Поскольку в баше ОЧЕНЬ нестрогий синтаксис, и любой текст воспринимается как строка без всяких кавычек, то нужен способ отличить переменную от просто строки. Если ты напишешь
    good=bad
    echo good

    то как система поймет, ЧТО ты хочешь вывести - строку good или переменную good?
    поэтому тут без вариантов - переменную надо как-то отличать от остального текста. Это и делает знак доллара

    При этом для присвоения значения переменной знак доллара не нужен, поскольку система видит по знаку =, что речь идет о присвоении (и видимо поэтому нельзя ставить проблелы вокруг знака =).
    Да, нелогично. Но не все в нашей жизни поддается логике

    5fb765391d91b496225527.jpeg
    Ответ написан
    1 комментарий
  • Что и как в bash?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    В самом простом варианте, скрипт на баш - это просто комманды, написанные в столбик. примерно как bat файл в винде (если ты конечно настолько хорошо знаком с виндой).
    В общем осваивай пока просто команды баша - ls там, ln, wc, cp, cat, less, sort, grep - и со временем научишься и скрипты писать

    Ну а чтобы редактировать скрипты, сразу осваивай vim.
    Ответ написан
  • Как оставить только текст внутри нужных полей?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    На перечисленных языках не знаю, я бы такую здачу решал на пхп
    preg_match_all("!define\( '(.*?)', '(.*?)' \)!", $data, $m);
    foreach ($m[2] as $i => $value) {
        echo $value;
        echo (($i + 1) % 4) ? ";" : "\n";
    }
    Ответ написан
    Комментировать
  • Как с помощью bash можно копировать содержимое таблицы базы данных MySQL между двумя серверами?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    В общем случае -
    mysqldump -р host -u user -ppassword --add-drop-table db_name table_name | mysql -h host1 -u user1 -ppass1


    Если прямого доступа дб на втором хосте нет, то тут могут быть варианты.
    Ответ написан
    Комментировать
  • Можно ли в bash-скрипте прописать интерактивный ввод логина-пароля для GitHub и вызов MySQL-команды?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Все можно.
    Но если ты уж собрался кого-то поломать или хотя бы запентестить, то потрудись сам, а не будь прокладкой между своей задачей и тостером.
    Ответ написан
    Комментировать
  • Как запускать php скрипт после каждого завершения работы?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    просто в командной строке написать
    while true; do php -f /путь/скрипт.php; done
    остановить - Ctrl-C
    Ответ написан
    5 комментариев