Юникс Кунг-Фу

За что мы любим Юниксоподобные ОС? Ну, за всякое, но не в последнюю очередь за их отличные командные строки. Конечно, можно писать скрипты или даже небольшие програмки на Перле али Питоне, но если надо быстро что-то автоматизировать, то лучше всего писать какой-нибудь one-liner типа:

cat file | grep something | sed ‘s/thing/otherthing/’ | awk -F “|” ‘{print $1}’ | sort | uniq | wc -l

И всё тут прекрасно, но здесь совершенно отсутствует условное ветвление — а это иногда полезно.

Например, можно сказать вот так:

cd directory; rm -rf *

Что будет, если cd directory обломится, потому что этой директории нет? Начнёт выполняться rm -rf в ТЕКУЩЕЙ директории — что может иметь катастрофические последствия.

Как этого избежать? Очень просто. Надо сказать вот так:

cd directory && rm -rf *

В данном случае rm -rf выполнится ТОЛЬКО если cd directory будет успешно выполнен.

Работает это очень просто — если понять, что данное выражение представляет собой не больше, чем условие с Сишным синтаксисом. && — это оператор AND. Любая команда при завершении работы выдаёт код возврата (exit status). Если команда завершилась успешно, возвращается код 0, он же является TRUE. Оператор && подразумевает что ОБЕ части условия должны возвращать TRUE, поэтому если первое условие вернуло TRUE, надо проверять второе. Если же первое вернуло FALSE, то нет смысла проверять второе (принцип минимализации проверки условий https://en.wikipedia.org/wiki/Short-circuit_evaluation).

Соответственно, можно вывернуть это наизнанку, если использовать оператор || (сиречь OR) между командами. В таком случае вторая часть выражения будет выполнена только в том случае, если первая вернёт FALSE — ибо в соответствии с принципом минимализации нет смысла проверять вторую часть условия, где условия объеденины через OR — ибо первая уже вернула TRUE.

Например, вот так:

cd test|| mkdir test

Директория test будет создана только в том случае, если её нет (cd вернёт ошибку).

Также можно объединять условия, используя тот же Сишный синтаксис.

(cd directory && rm -rf *) || echo “Cannot delete files”

Если можно зайти в директорию и удалить там файлы, то ничего не высветится. Но если нельзя, будет сказано, что нельзя.

Данные команды работают в bash и C-shell. BSD-шный sh не проверял, но думаю, что там тоже будет работать.

Ответка

В ответ на бан антивируса Касперского на компьютерах, принадлежащих МО США (https://experimenter.org/2017/06/29/kaspersky_banned_in_dod/) российские законодатели предложили послать всё нероссийское антивирусное ПО в том же направлении?

“Ко второму кварталу 2019 года чиновники намерены законодательно обеспечить предустановку отечественных антивирусных программ на все персональные компьютеры, ввозимые и создаваемые на территории Евразийского экономического союза.”

Подробнее на РБК:
http://www.rbc.ru/technology_and_media/03/07/2017/5958d9c29a7947e1a748af1a

Не вполне понятно, чем всё это закончится. “Обеспечить предустановку” не значит ведь запрета пользованием других антивирусов?

А то как-то слишком нагло получается. “Слушайте свои “Валенки” и не выпендривайтесь”. И плевать, что антивирь Касперского написан настолько криво, что раз в два дня аккуратнейшим образом вешал мне комп так, что тремя пальцами он не поднимался. Что там ещё есть? Дохтур Веб? Ничего про него не скажу — не пользовался.

Или это просто в Касперском занесли куда надо? Чтобы обеспечить продажи своего кривого продукта?

И вообще, это какие-то полумеры. Виндоуз-то не забанили. Как не забанили Ворд, Эксель, и проч.

Касперского забанили в США

В акт о военном бюджете США на 2018 год внесен запрет на использование продукции “Лаборатории Касперского” на оборудовании, принадлежащему МО США. Озвученная причина — “работники компании потенциально подвержены давлению со стороны правительства России”.

https://www.bleepingcomputer.com/news/government/senate-gets-ready-to-ban-kaspersky-products-as-fbi-interviews-companys-us-employees/

О том, что примерно такое и будет, я уже догадывался, когда сам перешёл на американский антивирус “Симантек” http://nlothik.livejournal.com/797195.html

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