Тег bash

hirthwork

Я просто оставлю здесь ссылку на то, как в разные переменные поймать stderr, stdout и return code: https://stackoverflow.com/a/26827443

hirthwork

new test tl;dr: test который не выставляет exit code в 1 если проверка зафейлилась.

AFAIK

Не могу понять, в чем тут разница?
${parameter-default}, ${parameter:-default}
If parameter not set, use default.

${parameter=default}, ${parameter:=default}
If parameter not set, set it to default.

hirthwork

Когда делаешь в shell-скриптах <<<, то создаётся временный файл. Называется он here-document или heredoc. Но это абсолютно неважно, если у тебя в $TMPDIR кончилось место.

hirthwork

AAA: Торчащие на поверхности грибы это половые члены грибницы.
Живите с этим.
BBB: Вот так мой простой грибной нож превратился в церемониальный!

hirthwork

ххх: сестры нужны, чтобы искать себе девушку среди их подружек. ну и чтоб за косы дёргать
ууу: Моя сестра в этом плане совершенно бесполезный человек - и косичек никогда не было, и подружки страшные
ххх: тебе просто повезло иметь очень красивую сестру, никто не мог с ней сравниться
ууу: То, что ты на ней женат, не значит, что ты обязан петь ей оды, когда она не слышит. Или она тебя до такой степени запугала уже?
ххх: нельзя исключить, что у неё есть доступ к моему или твоему девайсу, так что я буду говорить об этой прекраснейшей, умнейшей, добрейшей и справедливейшей из женщин только правду и ничего, кроме правды
© http://bash.im/quote/448785

hirthwork

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

Linda-chan

Чтобы передать параметры скрипта дальше, нужно использовать это:

"$@"

Никакие другие варианты вроде этих:

$
"$
"
$@

не дают ожидаемого результата. Ну, тобишь, ты даёшь три параметра:

byaka.sh 1 2 "3 4"

а он вызывает это:

./other.sh $*

а следующий скрипт получает это:

other.sh 1 2 3 4

=_=

partizan

Пару дней назад пока ждал автокомплита от bash, поставил себе zsh и начал настраивать.

Охуенно, только меня смущало что на всех клевых плагинах написано "автодополнение как в fish", или "подсветка синтаксиса как в fish", и я посмотрел на fish.

Из коробки все что я настраивал в zsh два часа. Настраивается через запуск нормального интерфейса в браузере, где можно посмотреть темы и прочее говно. Охуенно.

Я пока остался на настроенном zsh, но задумываюсь уже нахуй оно нужно если есть fish.

hirthwork

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

© http://bash.im/quote/442587

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

hirthwork

«Hi do you want to play a game?»

RA

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

tname="$1"
if [ $#==0 || $tname=="oauth" ]; then
echo "!!!";
fi

оно не работает. Пишет строка 44: ==oauth: команда не найдена
Думаю для знающих баш ошибка очевидна. Скажите что нужно чтобы исправить

unfalse

И вроде не первого апреля было: https://channel9.msdn.com/Events/Build/2016/C906

greenjoker

curl wttr.in

Linda-chan

Проблему, озвученную в предыдущем посте решила двумя способами. Так:

MY_DP=$( dirname $( realpath "$0" ) )

Или так:

MY_DP=$( dirname $( readlink -e "$0" ) )

В первом нужно устанавливать дополнительную утилиту, а второй работает сразу.
Спасибо поучаствовавшим пойнтожуйкерам!

Linda-chan

Вопрос знатокам баш-скриптинга. Как получить каталог, в котором находится выполняющийся скрипт, чтобы в самом скрипте подставлять его у другим файлам, которые должны искаться в каталоге скрипта?
Например, в Windows я использую конструкцию вида «%~d0%~p0», которая берёт диск и путь к каталогу, в котором лежит выполняющийся BAT файл (его имя получается из переменной %0). В итоге на файлы я ссылаюсь так: «%~d0%~p0SomeDataFile.TXT».
А как это сделать в Баше? Как из $0 вытащить такую же информацию?

hirthwork

Оказывается, trap <fuction name> EXIT работает на scope. Т.е. в одном скрипте можно сделать много вложенных подзадач типа (echo huecho;...) и при выходе из каждого скоупа вызывать какую-нибудь функцию.
Пример для тестирования и игрищ:

function cleanup() {
    flock -u 42 && echo released
}

(
    flock 42
    echo acquired
    trap cleanup EXIT
    set -e
    sleep 10
) 42>/tmp/lock

echo done
sleep 10
echo gone done
INFOMAN

http://bash.im/quote/437886 чуваку явно незнаком термин «техническая девственница»

1010101

Основной IP для системы (считаем основным тот, который висит на интерфейсе, смотрящем на default GW)

iface=$(ip route | awk '{ if ($1 =="default") print $5; }');ip -f inet addr show dev $iface |grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}/[0-9]{1,3}"
1010101

Однострочник, который показывает все порты в системе, которые какие-либо сервисы открыли НАРУЖУ (исключая локальные)
Можно это написать короче, приличнее и есть ли ошибки?

sudo netstat -46lnpn | sed '1,2d;/127.0.0.1/d;/ ::1:/d' | awk '{if ($1 == "tcp") {print $7,$1,$4} else {if ($1 == "tcp6") {print $7,$1,$4} else {print $6,$1,$4}}}' | sed 's/^[0-9]*\///'| sed -r 's/ [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}:/ /' |sed -r 's/ tcp6 .*:/ tcp6 /' | sed -r 's/ udp6 .*:/ udp6 /' |sort -u

Добавить пост

Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Для форматирования текста используется Markdown.