Регулярка для проверки IPv4
Проверить на корректность IP четвёртой версии можно таким регулярным выражением
/ ((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) /g
Проверить работоспособность можно здесь.
Проверить на корректность IP четвёртой версии можно таким регулярным выражением
/ ((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) /g
Проверить работоспособность можно здесь.
Количество Linux- и Windows-хостов в сети можно с помощью следующих команд:
$ sudo nmap -F -O 192.168.1.1-255 | grep "Running: " > /tmp/os; \ echo "$(cat /tmp/os | grep Linux | wc -l) Linux device(s)"; \ echo "$(cat /tmp/os | grep Windows | wc -l) Window(s) devices"
Вместо 192.168.1.1-255 нужно подставить параметры своей сети. Для выполнения требуется установленный в системе пакет nmap и пользователь должен иметь возможность получать привилегии рута.
P. S. В источнике приведён однострочник, но я разбил строку на три для удобства и читаемости.
Являясь ярым поклонником игры Kerbal Space Program, оставлю для истории список модификаций, которые использую в версии 1.3.1. Перечислил множество модов, некоторые несовместимы между собой, если описание мода выделено красным — для меня мастхэв.
Последнее обновление: 24.06.2018
Показать
| Название мода и ссылка | Функционал | ||
![]() |
CKAN | Менеджер модов | |
![]() |
Module Manager | Требуется для работоспособности других модов | |
![]() |
Манёвры и управление | ||
![]() |
MechJeb 2 | Система автоматического пилотирования | |
![]() |
MechJeb and Engineer for all! | Автопилот, интегрированный во все командные модули | |
![]() |
Precise Node | Точный планировщик орбит | |
![]() |
kRPC | Управление игрой из внешних скриптов на различных языках программирования | |
![]() |
kOS: Kerbal Operating System | Скриптовый автопилот | |
![]() |
kOS for All | Добавление встроенного kOS во все командные модули | |
![]() |
Astrogator | Помощник по навигации | |
![]() |
Trajectories | Предсказание траектории спуска в атмосфере | |
![]() |
Внутренний вид кабины | ||
![]() |
RasterPropMonitor | Многофункциональные дисплеи в кабине в режиме IVA | |
![]() |
VesselView | Добавляет экран, отображающий текущий внешний вид аппарата | |
![]() |
kOSPropMonitor | Работа с kOS из IVA-вида (в треде есть ссылка для 1.3.1) | |
![]() |
Картографирование, Спутники, Связь | ||
![]() |
Remote Tech | Система спутниковой связи и управления (не работает с ScienceRelay) | |
![]() |
SCANsat | Картографирование небесных тел — биомы, аномалии, карта высот, полезные ископаемые | |
![]() |
Сбор науки | ||
![]() |
ForScience! | Автоматический сбор научных данных | |
![]() |
[x] Science! | Помошник по сбору научных данных | |
![]() |
DMagic Orbital Science | Проведение научных экспериментов беспилотными спутниками и роверами | |
![]() |
Science Relay | Передача научных данных между аппаратами (не совместим с Remote Tech) | |
![]() |
ScienceAlert | Предупреждение о возможности сбора научных данных | |
![]() |
Внешний вид и управление игры | ||
![]() |
Toolbar | Набор настраиваемых кнопок быстрого доступа | |
![]() |
Docking Port Alignment Indicator | Вспомогательная индикация по выравниванию/направлению в процессе стыковки | |
![]() |
Kerbal Engineer Redux | Выводит важные данные о корабле в полете и во время постройки | |
![]() |
Alternate Resource Panel | Альтернативная панель показа ресурсов | |
![]() |
Kerbal Alarm Clock | Напоминания о запланированных событиях | |
![]() |
Crowd Sourced Flags | Набор прикольных флагов, созданных сообществом | |
![]() |
Fusebox Continued | Отображение уровней потребления и генерации электроэнергии | |
![]() |
RCS Build Aid | Помощник по балансировке аппарата при проектировании | |
![]() |
KerbalStats | Вывод дополнительной информации о кербонавтах в игре | |
![]() |
Portrait Stats | Отображение типа и уровня членов экипажа во время полета | |
![]() |
Real Time Clock 2 | Вывод внеигрового времени | |
![]() |
TextureReplacerReplaced | Персонализация и улучшение вида кербонавтов | |
![]() |
Probe Control Room | Центр управления непилотируемых аппаратов | |
![]() |
NavUtilities | Посадочная навигационная информация | |
![]() |
Navball docking alignment indicator | Навбол как указатель правильного направления на стыковочный агрегат | |
![]() |
Better Burn Time | Отображение точного времени выполнения манёвра | |
![]() |
Kronal Vessel Viewer | Создание чертежей и схем аппаратов | |
![]() |
Who Am I? | Отображение имени текущего кербонавта в режиме IVA | |
![]() |
DockSafe | Блокировка включения двигателей при стыковке | |
| CommunityTraitIcons | Значки для отображения типа членов экипажа | ||
![]() |
Critical Temperature Gauge | Отображение имени и температуры самой нагретой детали | |
![]() |
Landing Height | Показывает расстояние от нижнего края аппарата до поверхности земли | |
![]() |
Docking camera (KURS) | Стыковочная камера, интегрируемая во все детали | |
![]() |
Telemachus | Отображение данных телеметрии в браузере | |
![]() |
Изменение игровой механики | ||
![]() |
Sensible Pumps | Выключение тяги движков при их отделении | |
![]() |
Oh Scrap! | Отказы, ремонт и проверки надёжности агрегатов и узлов | |
![]() |
Kerbal Launch Failure Revived | Случайные аварии и нештатные ситуации во время старта | |
![]() |
BARIS | Реалистичная система наработки надёжности деталей (вместо TestFlight и DangIt!) | |
![]() |
HyperEdit | Плагин для перемещения любого объекта в любое место | |
![]() |
Kerbal Krash System | Реалистичные нештатные ситуации, поломки частей при столкновениях | |
![]() |
Kerbal Joint Reinforcement | Правдоподобная жёсткость соединения деталей и конструкций | |
![]() |
Connected Living Space | Реалистичная механика перехода кербонавтов из отсека в отсек | |
![]() |
USI Life Support | Система жизнеобеспечения для кербонавтов (совместим с EPL и MKS) | |
![]() |
Kerbal Construction Time | Постройка аппаратов в течение некоторого времени | |
![]() |
Kerbal R&D | Улучшение функционала узлов и агрегатов за очки науки | |
![]() |
Deadly Reentry | Реалистичный нагрев в плотных слоях атмосферы при сверхзвуковых скоростях | |
![]() |
Ferram Aerospace Research | Правдоподобная аэродинамика | |
![]() |
KRASH | Симуляция полёта с восстановлением предыдущего состояния | |
![]() |
Crew R&R | Реалистичный набор членов экипажа | |
![]() |
Dang It! Continued | Случайные аварии и нештатные ситуации (заменяется BARIS) | |
![]() |
TestFlight | Увеличение надёжности деталей посредством лётных испытаний (заменяется BARIS) | |
![]() |
EvaFuel Continued | Реалистичная трата монотоплива при ВКД | |
![]() |
Улучшение звукового сопровождения | ||
![]() |
Docking Port Sound FX | Добавляет реалистичные звуки стыковки и расстыковки | |
![]() |
Water Sounds | Добавляет звук воды и подводные звуковые эффекты | |
![]() |
Music Mute Continued | Отключение и включение фоновой музыки горячей клавишей | |
![]() |
Chatterer | Добавляет звуки радиопереговоров в процесс игры | |
![]() |
RCS Sound Effects | Звуки работы маневровых двигателей | |
![]() |
Реалистичная визуализация | ||
![]() |
Stock Visual Enhancements | Реалистичные облака и атмосферы планет | |
![]() |
Reentry Particle Effect | Отображение плазмы и искр при торможении в атмосфере | |
![]() |
Distant Object | Удалённые объекты реалистично выглядят на больших расстояниях | |
![]() |
Collision FX | Добавляет искры, свето-звуковые эффекты при столкновениях | |
![]() |
Through the Eyes | Вид от первого лица во время ВКД | |
![]() |
Real Plume | Добавляет реалистичный выхлоп двигателей | |
![]() |
Engine Lighting | Добавляет реалистичные отблески выхлопа двигателя | |
![]() |
Рекомендованные моды | ||
![]() |
Дополнительные детали и наборы | ||
![]() |
ALCOR | Усовершенствованная капсула ALCOR | |
![]() |
Kerbal Attachment System | Прикрепляемые детали, стойки, трубы и лебедки | |
![]() |
Kerbal Inventory System | Реалистичная система хранения деталей | |
![]() |
Ground Construction | Постройка аппаратов в любом месте, где есть ресурсы и условия | |
![]() |
Extraplanetary Launchpads | Возможность создания аппаратов в полёте | |
![]() |
Modular Kolonization System | Набор модулей для создания длительных самодостаточных колоний | |
![]() |
SnapDock | Установка стыковочных агрегатов под углом | |
![]() |
OLDD (8К82К) | РН «Протон-К» | |
![]() |
Smart Parts Сontinued | Набор интеллектуальных деталей и контроллеров с настраиваемыми функциями | |
![]() |
Pathfinder | Оборудование для организации лагерей и поселений (включает Buffalo) | |
![]() |
Buffalo | Модульные транспортные средства для поселений | |
![]() |
Изменение игровой механики | ||
![]() |
Kerbal Star Systems | Другие звёздные системы вблизи Кербола | |
![]() |
Real Solar System | Преобразование системы Кербола в Солнечную систему | |
![]() |
Realism Overhaul | Приближение игры к реальности | |
![]() |
Real Fuels | Реальные типы топлива, ограниченное количество зажиганий двигателей | |
![]() |
SETI-Unmanned before Manned | Улучшенный игровой баланс деталей, технологий, контрактов | |
![]() |
Kerbalism | Продвинутая система жизнеобеспечения | |
![]() |
TAC Life Support | Система жизнеобеспечения для кербонавтов (несовместим с EPL и MKS) | |
![]() |
WarpEverywhere | Улучшенный варп | |
![]() |
Editor Extensions Redux | Новые уровни симметрии, режимы привязки, горячие клавиши | |
![]() |
TAC Fuel Balancer | Удобный перелив топлива, обмен ресурсов между деталями | |
![]() |
WorldStabilizer | Предотвращает подпрыгивание крафтов в момент прогрузки | |
![]() |
Реалистичная визуализация | ||
![]() |
Environmental Visual Enhancements | Реалистичные облака и огни городов | |
![]() |
Scatterer | Зффект рассеяния в атмосфере | |
![]() |
Stock Part Revamp | Более правдоподобные текстуры деталей | |
![]() |
Antenna Helper | Отображение возможностей связи антенн крафта | |
![]() |
Всякий хлам | ||
![]() |
Community Resource Pack | ||
![]() |
Orbital Colony | ||
![]() |
Contract Configurator |
Всё время забываю, как установить и настроить гуй в BSD-системах. Процесс такой...
Ставим пакеты xfce4-session, xfdesktop, xfwm4:
$ sudo pkg_add -v xfce4-session xfdesktop xfwm4
Пакет вытянет вместе с собой GTK, Glib, cairo, d-bus, некоторые компоненты среды и все необходимое для их работы (кроме X.Org, он идет в комплекте базовой системы).
Показать
Добавляем Xfce в автозагрузку:
$ echo 'LC_CTYPE="ru_RU.UTF-8"' > ~/.xinitrc $ echo 'setxkbmap "us,ru" ",winkeys" "grp:caps_toggle" &' >> ~/.xinitrc $ echo 'exec xfce4-session' >> ~/.xinitrc $ ln -s ~/.xinitrc ~/.xsession $ startx
Для графического входа в систем ставится менеджер входа SLIM:
$ sudo pkg_add -v slim
Автозапуск SLIM при старте системы реализуется добавлением в /etc/rc.local строки:
[ -x /etc/rc.d/slim ] && /etc/rc.d/slim start
Для автологина добавляем в /etc/slim.conf строки:
default_user [имя_юзера] auto_login yes
$ sudo pkg install xorg xfce slim slim-themes
и в /etc/rc.conf дописал
dbus_enable="YES" hald_enable="YES" slim_enable="YES"
а в .xinitrc
exec startxfce4
(ставил по этому мануалу).
Извраты были такие:
$ sudo dbus-uuidgen > /var/lib/dbus/machine-id
чтобы иксы стартовали без ошибок, а в /etc/rc.conf дописал
moused_enable="YES" moused_nondefault_enable="YES" hald_enable="YES" dbus_enable="YES"
и выполнил
$ sudo /etc/rc.d/moused start
Комитет ISO по стандартизации языка C++ единогласно утвердил спецификацию C++1z в качестве международного стандарта «C++17». Представленные в спецификации возможности уже полностью поддерживаются в компиляторах GCC и Clang, а также частично реализованы в Intel C++ и Visual C++. Поддерживающие C++17 стандартные библиотеки реализованы в рамках проекта Boost.
Показать
В следующие два месяца утверждённая спецификация будет находиться на стадии подготовки документа к публикации, на которой будет проведена работа по редакторской правке орфографических ошибок и опечаток. В начале ноября результирующий вариант документа будет направлен в ISO для публикации под формальным именем ISO/IEC 14882:2017. Тем временем, комитет уже начал работу над следующим стандартом C++20 (C++2a) и рассмотрел на последнем совещании возможные новшества.
Основные особенности C++17:
Сел как-то я на диету...
И у меня вошло в привычку каждое утро взвешиваться. Сначала результаты взвешивания я просто записывал в блокнот, затем начал периодически дублировать эти записи в Гугель Таблицах. Затем данные из этой таблицы визуализировал на
страничке своего сайта.
Показать
Затем я ещё более разнообразил свой быт, купив Xiaomi Mi Band 2. Понятно, что теперь я начал вводить вес и в Mi Fit. А дня три назад поискал на 4PDA какую-нибудь апликуху под ОС Андроид. Первой поиск мне выдал некую
Just Weight – Контроль Веса, довольно молодую прогу, весь функционал которой сводится ко вводу данных и рисованию графика изменения веса. В общем целевая аудитория проги — фитнес–тёлки и старпёры, к которым отношу и себя. Поставил я ознакомительную версию проги на свой телефон, пару дней утром повводил результаты взвешивания, и тут у меня запоздало созрела весьма здравая мысль: — А как же предыдущие дни/месяцы/годы!? Казалось бы — знай себе выбирай дату и вводи соответствующий вес, прога это позволяет, но дело в том, что вести записи я стал с 16 сентября 2014 года, а это 1085 измерений! В меню приложения есть пункты "Импорт" и "Экспорт", но в обычной версии они не доступны, предлагается купить полную версию за $0.99.
У меня как раз на QIWI было рублей 150 (плюс-минус 50), поэтому решил заодно проверить надёжность санкций для жителей Крыма. Выпустил виртуальную QIWI-карту, получил её срок действия и CVC, указал их в Гугель Кошельке (через VPN, так как я живу на полуострове, которому весь «цивилизованный» мир помогает выжить с помощью санкций). Затем из проги перешёл на страницу покупки полной версии, и с помощью того же VPN оплатил её.
Настала пора потрошения файла экспорта...
У меня уже были введены результаты взвешивания за два последних дня. Я сохранил данные, указав путь к создаваемому экспорт-файлу, скопировал его на компьютер и просмотрел содержимое. Вот оно:
[{"date":1504558800000,"unit":"kg","value":1146,"tableName":"WEIGHT"},{"date":1504645200000,"unit":"kg","value":1135,"tableName":"WEIGHT"}]
Очевидно, что числа 1146 и 1135 представляют собой данные веса в десятых долях колограмма (мой вес тогда был 114,6 и 113,5 кг соответственно). Об это также говорят наименования параметров "unit" и "value". Тег "date" сразу понятен человеку, знающему что такое timestamp и UNIX-время. Здесь оно указано с точностью до миллисекунд.
N.B. Интересно, зачем такая точность в проге, рисующей график веса человека?
Последний тег "tableName" предполагает, что разработчики хотят в дальнейшем (или хотели ранее) вести графики с другими данными.
N.B. Или (чисто в порядке бредового предположения) им попались исходники проги, анализирующей, к примеру, JSON-файл с разными параметрами, и они выдрали алгоритм работы оттуда практически без изменений, сократив количество параметров до одного 
Но вернёмся к созданию импортируемых данных...
Вот в таком формате я веду табличку:

Я создал на этом же листе таблицы рядом с первой записью о весе (в ячейке H2) такую формулу:
=CONCAT(((D2-DATE(1970;1;1))*86400)-10800;"000")
Пользователям русского Экселя вероятно нужно так:
=СЦЕПИТЬ(((D2-ДАТА(1970;1;1))*86400)-10800;"000")
Общий смысл формулы такой — считаем число дней от 1 января 1970 года до указанной даты [D2-DATE(1970;1;1)], переводим дни в секунды [*86400]. Так как программа не учитывает временные пояса, а я, как и весь Крым, живу по московскому времени, то из полученного значения необходимо вычесть 3 часа = 10800 секунд [-10800]. Команда сцепки строк используется для добавления в конец полученного числа трёх символов "0", повышая "точность" до миллисекунд [CONCAT(UNIX-time;"000")].

Затем в соседней ячейке I2 написал следующую конструкцию:
=CONCAT("{'date':";CONCAT(H2;CONCAT(",'unit':'kg','value':";CONCAT(E2*10;",'tableName':'WEIGHT'},"))))
Здесь всё просто — последовательно сцепляем строки:
"{’date’:" + число секунд из ячейки H2 + ",’unit’:’kg’,’value’:" + значение веса из ячейки E2, умноженное на 10 + ",’tableName’:’WEIGHT’},".

Протянув полученные формулы до конца введённых данных, я сформировал текст, необходимый для импорта в Just Weight.

Копирую все строки вида
'date':1504558800000,'unit':'kg','value':1146,'tableName':'WEIGHT'},
в любой текстовый редактор (вставляю как текст, если редактор слишком навороченный), ставлю в начале и в конце символы открытия и закрытия квадратных скобок ([мой текст]), убираю явно лишнюю запятую в последней строке, и — Voi la!
Подтягиваю полученное творение на телефон, импортирую и наслаждаюсь графиком.

P. S. Я на свой страх и риск использовал в формуле получения строк апостроф ' вместо двойных кавычек ", чтобы не нарушать визуальную целостность формул. Прокатило 
Привожу BASH-скрипт получения оператора номера сотового
(используется сервис http://rosreestr.subnets.ru).
Показать
Допустим, мы хотим получить информацию о мобильном номере +7 900 555-55-50 (или 8 900 555-55-50)... При выполнении команды
curl -s "http://rosreestr.subnets.ru/?get=num&format=xml&num=9005555550" | sed -e 's/<[^>]*>//gm' | sed '/^$/d' | tr -d '\t'
получим в консоли вывод
900 260823 5555550 5555550 1 ООО "СИМ ТЕЛЕКОМ" 5418 Москва и Московская область 1880
где:
900 — DEF-код (мобильные номера всегда начинаются с цифры 9)
260823 — ID диапазона номеров с данным DEF-кодом в реестре Российской системы и плана нумерации
5555550 — начальный номер диапазона номеров
5555550 — конечный номер диапазона номеров
1 — Общая номерная ёмкость в данном диапазоне
ООО "СИМ ТЕЛЕКОМ" — наименование оператора, обслуживающего мобильный номер
5418 — ID оператора
Москва и Московская область — наименование региона, в котором оператор обслуживает мобильный номер
1880 — ID региона в реестре Российской системы и плана нумерации
Разоблачение фокуса...
Командой
curl -s "http://rosreestr.subnets.ru/?get=num&format=xml&num=9005555550"
в вывод консоли сервис возвращает ответ в формате XML:
<?xml version="1.0" encoding="utf-8"?> <response> <row> <code>900</code> <codeID>260823</codeID> <from>5555550</from> <to>5555550</to> <capacity>1</capacity> <operator>ООО "СИМ ТЕЛЕКОМ"</operator> <operatorID>5418</operatorID> <region>Москва и Московская область</region> <regionID>1880</regionID> </row></response>
Команда
sed -e 's/<[^>]*>//gm'
по конвейеру убирает все подстроки, заключённые в угловые скобки < ... >
900 260823 5555550 5555550 1 ООО "СИМ ТЕЛЕКОМ" 5418 Москва и Московская область 1880
Затем с помощью команды
sed '/^$/d'
удаляются пустые сроки, оставшиеся после удаления <тегов>:
900 260823 5555550 5555550 1 ООО 'СИМ ТЕЛЕКОМ' 5418 Москва и Московская область 1880
а команда
tr -d '\t'
убирает символы табуляции в получившемся выводе
900 260823 5555550 5555550 1 ООО 'СИМ ТЕЛЕКОМ' 5418 Москва и Московская область 1880
N. B.: Скрипту нужен установленный пакет curl, можно заменить wget’ом:
wget -q -O - "http://rosreestr.subnets.ru/?get=num&format=xml&num=9005555550" | sed -e 's/<[^>]*>//gm' | sed '/^$/d' | tr -d '\t'
N. B.: В принципе, можно получать вывод не в формате XML, при опускании в урле параметра
&format=xml
сервис выдаёт plain text.
В планах написать веб-версию, использующую данный сервис.
Слизано с Хабра.
В дополнению к первому посту о переменной окружения PS1, для себя определился, что у моего пользователя она такая:

а у рута будет лиловенькая:

Показать
И вообще, на всякий случай привожу краткие выдержки конфигурационных файлов моего BASH’a:
Мой ~/.bashrc
PS1='\[\e]0;`if [[ $? = 0 ]]; then echo "\[\033[1;34m\]"; else echo "\[\033[1;31m\]"; fi`\t \[\033[1;32m\]\u\[\033[0;37m\]@\[\033[1;32m\]\H\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' alias sus='sudo -s' if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi if ! shopt -oq posix; then if [ -f /usr/share/bash-completion/bash_completion ]; then . /usr/share/bash-completion/bash_completion elif [ -f /etc/bash_completion ]; then . /etc/bash_completion fi fi export PHANTOMJS_EXECUTABLE=/usr/local/bin/phantomjs
Мой ~/.profile
if [ -n "$BASH_VERSION" ]; then if [ -f "$HOME/.bashrc" ]; then "$HOME/.bashrc" fi fi if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" fi export LANG=ru_RU.UTF-8 export LANGUAGE=ru_RU.UTF-8 export LC_ALL=ru_RU.UTF-8 export PAGER=/usr/bin/most if [ -f /etc/bash_completion ]; then . /etc/bash_completion fi
/root/.bashrc
PS1='${debian_chroot:+($debian_chroot)}`if [[ $? = 0 ]]; then echo "\[\033[1;34m\]"; else echo "\[\033[1;31m\]"; fi`\t \[\e[0;95m\]\u\[\033[0;37m\]@\[\033[1;32m\]\H\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' export LANG=ru_RU.UTF8 export LC_ALL=ru_RU.UTF8 export PAGER=/usr/bin/most if [ -f /etc/bash_completion ]; then . /etc/bash_completion fi
/root/.profile
if [ "$BASH" ]; then if [ -f ~/.bashrc ]; then . ~/.bashrc fi fi mesg n || true
Когда Bash вызывается как интерактивная оболочка входа в систему, первым делом он читает и вызывает команды из файла /etc/profile, если этот файл существует. После чтения этого файла, он смотрит следующие файлы в следующем порядке: ~/.bash_profile, ~/.bash_login и ~/.profile, читает и вызывает команды из первого, который существует и доступен для чтения. При выходе bash читает и выполняет команды из файла ~/.bash_logout.
Когда запускается интерактивная оболочка, но не для входа в систему, bash читает и исполняет команды из файлов /etc/bash.bashrc и ~/.bashrc, если они существуют. Это может быть отменено опцией -norc. Опция -rcfile file заставит Bash использовать команды из файла file вместо /etc/bash.bashrc и ~/.bashrc.
После четырёх лет обсуждений чернового варианта утверждена новая версия лицензии EUPL 1.2 (European Union Public Licence), используемой при разработке открытого программного обеспечения для государственных учреждений в Евросоюзе. Лицензия доступна на 23 языках, используемых в странах Евросоюза и опубликована в официальном журнале Европейского союза, что обозначает вступление правового акта в силу. Лицензия признана организацией Open Source Initiative (OSI) открытой и соответствующей требованиям «Open Source Definition».
Показать
В лицензии EUPL 1.2 решены многие ранее наблюдаемые проблемы с совместимостью с другими открытыми и свободными лицензиями, в том числе обеспечена совместимость с лицензиями GPLv3, AGPLv3, LGPLv2, LGPLv3 и MPLv2. Версия EUPL 1.1 позволяла перелицензировать код в GPLv2, но была включена Фондом СПО в список лицензий, несовместимых с GPL. Наиболее ожидаемым эффектом от принятия EUPL 1.2 стала возможность использовать код продуктов, выпускаемых для госучреждений Евросоюза, в проектах, развиваемых независимым сообществом под лицензией GPLv3. Совместимость с GPLv3 является значительным шагом в сторону улучшения переносимости кода, который упростит смешивание в одном проекте кода под лицензиями GPLv3 и EUPL 1.2, а также сделает возможным перелицензирование EUPL-кода под лицензией GPLv3 без необходимости дополнительных согласований.
Напомним, что по сравнению с GPLv2 лицензия GPLv3 обладает такими особенностями, как запрет тивоизации (привязки программного обеспечения к оборудованию), противодействие заключению дискриминационных патентных соглашений (патент может быть лицензирован для GPLv3 кода только на условиях повсеместного и бесплатного использования) и предоставление защиты от патентных исков со стороны поставщика GPLv3-продукта (если фирма поставляет GPLv3 компоненты, то она не может предъявить судебный иск против пользователей данных компонентов, обвинив их в нарушении патентов в данном ПО или в обходе средств защиты интеллектуальной собственности).
Необходимость поддержания Евросоюзом собственной свободной лицензии вместо использования уже существующих лицензий обусловлена необходимостью приведения лицензии в полное соответствие с требованиями законодательства всех стран Евросоюза. У существующих лицензий наблюдаются несостыковки с особенностями трактовки авторского права в некоторых странах Евросоюза. Кроме того, лицензия EUPL изначально утверждается в переводе на 23 европейских языках. Независимо от того на каком официальном языке используется текст лицензии, все варианты считаются юридически идентичными.
Всегда хотел узнать, почему у переменной окружения $PS1 (prompt string) в конце цифра 1.
Оказывается — таких переменных аж четыре штуки ($PS1, $PS2, $PS3, $PS4), и все они отображают приглашения ко вводу в различных ситуациях.
Показать
Далее речь идёт о системной оболочке bash.
В моих системах $PSx выглядят так:

$PS1 — приглашение командной строки, используется в оболочке для отображения запроса ввода и отображается тогда, когда консоль готова считать команду.
Значение по умолчанию:
"\u@\h:\w\$ "
или
"\s-\v\$ "
(расшифровку значений спецсимволов bash см. внизу заметки).
$PS2 — вторичное приглашение командной строки, отображается, когда консоль нуждается в дополнительном вводе для завершения команды, которую уже начала считывать.
Значение по умолчанию:
"> "
Очень длинную команду можно разбить с помощью символа ’\’ в конце строки, при этом приглашение изменится на $PS2, ожидая ввода продолжения команды.

$PS3 — третичное приглашение, выводится тогда, когда оператор select ожидает ввода значений.
Значение по умолчанию:
""
хотя в bash’е вроде как
"#?"

$PS4 — приглашение четвертого уровня, выводится в начале каждой строки вывода во время трассировки выполнения (вызывается с ключом -x).
Значение по умолчанию:
"+ "

Во всех переменных можно использовать следующие спецсимволы (напомню, речь идёт об оболочке bash):
\a | символ Bell (звонок) (код 07) | \d | дата в формате «ДеньНедели Месяц Число» (т. е. «Tue May 26») | |
\\ | символ обратного слеша (обратная косая черта) | \e | символ Escape (код 033) | |
\h | имя хоста до первой точки | \H | полное имя хоста | |
\j | количество заданий, выполняемых оболочкой в фоне | \l | базовое имя наименования терминального устройства оболочки (в случае входа через ssh-клиент возвращает не полное имя, например pts/3, а только 3) | |
\n | символ перевода строки | \r | символ возврата каретки | |
\s | имя оболочки, базовое имя от переменной $0 (после последнего символа /) | \t | текущее время в 24-часовом формате (HH:MM:SS) | |
\T | текущее время в 12-часовом формате (HH:MM:SS) | \@ | текущее время в 12-часовом формате (am/pm) | |
\A | текущее время в 24-часовом формате (HH:MM) | \u | имя текущего пользователя | |
\v | версия оболочки bash (например, 2.00) | \V | версия и номер релиза bash (например, 2.00.0) | |
\w | полный путь текущей директории | \W | базовое имя текущей директории | |
\! | номер истории зтой команды | \# | номер зтой команды | |
\$ | если UID == 0, то символ ’#’, иначе ’$’ | \nnn | символ, соответствующий восмеричному числу nnn | |
\[ | начало последовательности невыводимых символов. Может использоваться для осуществления управления терминалом в приглашении | \] | конец последовательности невыводимых символов | |
\D{format} | строка format передаётся в strftime(3), результат вставляется строку приглашния оболочки, пустой формат приводит к выводу локального времени. Скобки необходимы. | |||
Ну и напоследок бонус — скрипт генерации таблицы цветов в bash
