Я проводжу в терміналі багато часу, тому хочеться, щоб все було красиво, швидко і зручно.
З цього народжується постійне бажання його налаштовувати, пробувати різні плагіни.
Шеллом я вибрав для себе zsh років 5 назад, пару років тому знайшов oh-my-zsh для його зручного налаштування.
Згодом до цього конфіг додалися деякі збоку стирчать частини у вигляді powerline і percol.
Нещодавно я вирішив зібрати все так, щоб позбавитися від непотрібних плагінів, додати потрібні зробити легку установку і оновлення. У результаті з'явилася роль ansible-role-zsh, яка повністю налаштовує термінали на локалці і на моїх серверах.
Особливості:
  • встановлюється однією командою (крім шрифту і теми вашого термінального клієнта)
  • завантажується швидко, швидко працює
  • повністю налаштовується через ansible,
    ~/.zshrc
  • повністю локальна (в систему нічого не ставиться, все зберігається в
    ~/.oh-my-zsh
    )
  • залишає можливість юзеру вносити свої налаштування через
    ~/.zshrc.local
  • однаково працює на macOS, старому Debian, Ubuntu
  • нормально виглядає на різних колірних схемах (але краще всього на Solarized Dark)
  • вбудоване підсвічування синтаксису (допомагає рідше помилятися і краще читати довгі команди)
  • автодоповнення з історії команд (допомагає рідше натискати
    Ctrl+R
    )
  • відображення часу для довго виконуваних команд (допомагає рідше використовувати
    time
    )
Демонстрація фіч за 1 хвилину:

Читати далі →

Automount afuse

Я хотів розповісти про своє відкриття afuse — автомонтирование файлових систем на вимогу, автоматично.

Хіба не здорово просто зробити:
ls /mnt/remote/web.example.com/var/lib/www/

і відразу побачити файли web-сервера, ніяк не встановлюючи за ним з'єднання спеціально?

Я цим користуюся вже давно, а головне:
  • Це працює з будь-якого джерела: Не важливо, робите ви зазначений висновок в консолі, зберегли посилання в MC або переходите з favorites вашого улюбленого менеджера такого як nautilus або dolphin
  • Ви можете переходити на будь-який хост, куди у вас є доступ по ключам (налаштувати запит пароля теж можна, але це не цікаво)
  • Ви можете запросто вказати під яким користувачем входити на сервер, традиційно використовуючи @:
    cd /mnt/remote/apache@web.example.com/var/lib/www/
    




Читати далі →

Продовжуємо перевіряти проекти Microsoft: аналіз PowerShell


Для корпорації Microsoft останнім часом стало 'доброю традицією' відкривати вихідні коди своїх програмних продуктів. Тут можна згадати про CoreFX, .Net Compiler Platform (Roslyn), Code Contracts, MSBuild та інші проекти. Для нас, розробників статичного аналізатора PVS-Studio, це можливість перевірити відомі проекти, розповісти людям (і розробникам в тому числі) про знайдені помилки і потестувати аналізатор. Сьогодні мова піде про помилки, знайдених у ще одному проекті Microsoft — PowerShell.

Читати далі →

0day уразливості в lshell

lshell — це оболонка, яка обмежує команди та шляхи файлової системи, доступні користувачеві. Її готують як альтернативу складної настройки chroot:
і так далі, є безліч джерел, пропонують її до використання.

Додаток доступний в репозиторіях Ubuntu, Debian та EPEL.
Читати далі →

Сопроцессы: -що, -як-навіщо?

Багато користувачів Bash знають про существании з-процесів, що з'явилися в 4-й версії Bash'a. Дещо менша кількість знає про те, що сопроцессы Bash не якась нова фіча, а древній функціонал KornShell'a з'явився ще в реалізації ksh88 в 1988 році. Ще менша кількість користувачів shell'ів вміють сопроцессить знають синтаксис і пам'ятають як це робити.
Ймовірно, я ставлюся до четвертої групи — знають про сопроцессах, періодично вміють ними користуватися але так і не розуміють «навіщо?». Я кажу «періодично», так як іноді я освіжую в голові їх синтаксис, але до того моменту, коли мені здається що «ось той випадок коли можна застосувати co-proc» я вже геть забуваю про те як це робити.
Цією заміткою я хочу звести воєдино синтаксисы для різних шелл щоб на випадок, якщо таки придумаю навіщо вони мені потрібні, я якщо й не згадаю як це робити, то принаймні буду знати де це записано.
У заголовку статті у нас 3 питання. Підемо по порядку.

Що?
Що ж таке co-process?
З-процесинг — це одночасне виконання двох процедур, одна з яких зчитує висновок інший. Для його реалізації необхідно попередньо запустити фоновий процес виконує функціонал каналу. При запуску фонового процесу його stdin stdout присвоюються каналах пов'язаними з користувацькими процесами. Відповідно, один канал для запису, другий для читання.
Пояснювати це простіше на прикладах, тому відразу перейдемо до другого питання.

Читати далі →

PowerShell, AWS CLI і json

При роботі з хмарою Amazon, часто доводиться виконувати багато рутинних операцій через Веб-консоль. Але хочеться їх автоматизувати.
AWS CLI, інтерфейс командного рядка, добре для цього підходить. Звичайно, можна написати і додаток на Scala, але в повсякденних завданнях краще обойться без «важкої артилерії».
Команди AWS вміють повертати дані в різних форматах, в тому числі і в json. Можна скористатися bash і jq, але останнього немає в репозитарії cygwin, а руками встановлювати лінь. Між тим в PowerShell є прекрасна підтримка json! Правда виявилося, що скористатися цим не зовсім просто.
Читати далі →

Повний переклад Unix-коанов на російську мову



Представляю на ваш суд ще один переклад коанов про Майстра Фу на російську мову. У даний збірник увійшли всі коани, на даний момент опубліковані на сайті Еріка Реймонда. Треба сказати, що сам Ерік особистість вельми неординарна, але згадки в даній статті стоїть. Крім холиваров у списках розсилки всіляких проектів за його авторством також кілька серйозних праць про Unix — в тому числі і про співтоваристві, без якого екосистема сучасних відкритих проектів не була б можливою (повний список книг). Ідея перевести коани в черговий раз прийшла мені в голову під час читання одного з таких праць, а саме «The Art of Unix Programming», оскільки багато з прихованого сенсу коанов стає ясно тільки після прочитання чергової глави звідти.

Ну і звичайно ж, дисклеймер: всі коментарі і специфіка перекладання є плід уяви вашого покірного слуги.
Я публікую цей переклад в надії на те, що він може комусь сподобатися, але не надаю на нього ніяких гарантій, у тому числі відповідності канонам перекладу або придатності для цитування де б то не було.


Читати далі →

Різнокольорові термінали



У цій публікації я розповім про деякі трюки, які прикрасять будні будь-якого системного адміністратора Linux (і не тільки). Всі вони пов'язані із змінною PS1 оболонки bash. Змінна PS1 визначає, як буде виглядати запрошення для введення нових команд. І кожен користувач може змінити її, як забажає, наприклад, у файлі ~/.bashrc (який виконується при запуску bash і використовується в тому числі для конфігурації).

Для початку розглянемо простий варіант, мій улюблений формат командного рядка.

Читати далі →

Позбавляємося від «історичних причин» cmd.exe більш легким і стандартним способом

Всім привіт! Сьогодні я хочу поділитися з вами більш легким і правильним, з моєї точки зору, способом досягнення аналогічного описаному в статті користувача NikitaTrophimov результату.
Думаю, немає сенсу повторно писати вступну частину — автор оригінальної статті це зробив до мене — і, так як моя стаття навряд чи побачила б світ, не напиши він свою, і є всього лише альтернативним баченням способу вирішення завдання, то я зупинюся на головному.

Як і автору оригінальної статті, мені здавалося дуже дивним поведінка команди «cd» (або «chdir») cmd.exe. Здавалося нелогічним, що для зміни активного диска потрібно щоразу виконувати додаткові дії. Будучи прихильником інтерфейсу командного рядка, я не раз пробував покращувати зовнішній вигляд і можливості стандартного командного інтерпретатора Microsoft Windows, але про можливості змінити поведінку команди «cd» раніше навіть не замислювався. Після прочитання вищезгаданої статті на Хабре мені не давало спокою відчуття надмірної нестандартності та складності описаного способу… а бажання створити свій власний велосипед і скоріше вже почати ним користуватися призвело до купці парі-трійці годин витраченого в найближчий вихідний часу на розбір польотів. Отже, кому цікаві мої вишукування — ласкаво просимо під кат!

Читати далі →

Об'єкти і трохи про класах в Powershell 5.0

image

Напередодні випуску Windows 10 і нової, п'ятої, версії Powershell, хочу поговорити з вами про одному з найбільш серйозних нововведень цієї мови — про класах. Розпочати нашу розмову мені бачиться доречним з екземплярів класу — об'єктів — є безумовно кілер-фичей мови сценаріїв для Powershell. Простота і лаконічність спрощеного об'єктно-орієнтованого підходу в мові автоматизації завдань підкорила не лише велику, здавалося б, черству, подібно 16-bit legacy, корпорації, але і користувачів альтернативних операційних систем.

«Спрощеним» об'єктно-орієнтованим я його назвав навмисне і хочу звернути на це вашу увагу. Об'єктно-орієнтовані мови програмування припускають ряд сутностей, таких як клас(тип), екземпляр класу, властивості і методи цього примірника, частіше званого об'єктом. Powershell ж, вправно оперуючи об'єктами та їх властивостями, практично повністю позбавлений методів і абсолютно повністю користувацьких типів об'єктів (класів). З часто використовуваних методів у голову приходять мабуть лише .trim() так .ToString(). Якщо дати ще хвилинку на парсинг дампа досвіду написання скриптів на Powershell, спливе ще щось про Get-WMIObject.

Пропоную освіжити в пам'яті створення об'єкта в Powershell, хоча і для першого знайомства буде відмінно.

Читати далі →