Консоль у маси

маси

Вступ

План втечі

  1. Менеджери терміналів Частина перша
  2. Менеджери терміналів Частина друга
  3. Скрипти на bash
  4. Автоматизація рутинних завдань

Важливий момент.Передбачається, що читач має досвід роботи з терміналом на *nix OS. У прикладах використовується багато утиліт, таких як grep, find, xargs, echo, sed та інші. На цих утилітах я не зупинятимуся докладно. Також немає завдання розглянути все та вся.

У нас велика команда і я часто бачу як одне й те саме завдання люди виконують по-різному. Це також стосується роботи в терміналі. Знайомтеся - це IE6.

screen

Уявіть собі ситуацію, що ваш улюблений браузер не вміє працювати із вкладками. Більше того, коли він закривається в невідповідний момент, ви не можете відновити сесію і продовжити роботу.

А ось так більшість користувачів уявляють собі термінал. Чорний екран, білі символи.

маси

А тепер уявіть, що ваш улюблений браузер додали можливість працювати в терміналі. У ньому ви можете виконувати команди git, npm, node та багато інших. Звучить як щось нереальне із майбутнього. А ось і ні.

screen

І в цій серії статей я хочу показати, що термінал може бути зручним і багатофункціональним, тільки потрібно знати, як це все приготувати.

І так, приступимо. Які теми розглянемо? Розглянемо менеджери терміналів. Потім скрипти на bash. І останнє, це як автоматизувати рутину за допомогою скриптів на bash.

Репозиторій

Для зручності я створив репозиторій на github з усіма прикладами та темами, які розглядатимемо протягом всієї серії статей. Так що можнаскачати та попрактикуватися.

Доступні за цим посиланням. Презентація зроблена на движку shower.

Де це все працює

Все це працює на Windows 10 stable, Mac OS X, Ubuntu. Перевага надається Ubuntu. Всі приклади я показуватиму в Ubuntu. Також є класний емулятор терміналу – це ConEmu. Щоправда, у ньому не вдасться спробувати менеджери терміналів.

Менеджери терміналів Частина перша. Screen

Почнемо зі screen'у. Познайомився я з ним випадково. Колега допомагав мені у вирішенні одного завдання. І він побачив, що я не користуюсь менеджером терміналів. Тоді він сказав: Хм, давай поправимо це. Встановив мені screen, допоміг налаштувати і показав кілька базових поєднань клавіш.

Щоб встановити screen, достатньо виконати першу команду. Після цього можна буде запустити його, набравши команду screen в терміналі.

Базові сполучення клавіш

Чому я не виводив весь список до статті, а додав посилання? Все просто. По-перше, вони є в мануалі (man screen). По-друге, їх не потрібно вчити, запам'ятовувати чи ще щось там, просто треба почати використовувати.

За замовчуванням screen настроєно не дуже зручно. У нього навіть немає рядка стану. Виводиться повідомлення про ліцензію та ще деякі незручності. Все це можна виправити за допомогою конфігураційного файлу. Розмістити його потрібно в домашній директорії користувача.

screen у справі

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

консоль

  1. Робоча область. Layout.
  2. Рядок стану. На ній розміщуються вкладки та інші елементи.
  3. Вкладка за промовчанням.

Ми розглянули вихіднестан screen'а. Давайте тепер розглянемо його на прикладі складнішого завдання.

маси

Для цього нам знадобиться репозиторій, про який згадував вище. Давайте його схиляємо собі на комп'ютер:

Далі запустіть screen. Нам знадобиться 2-3 вкладки. Щоб створити нову вкладку, потрібно натиснути такі клавіші:

Наступним кроком буде перейменування вкладок. Для цього використовуйте:

Щоб переключатися між вкладками, скористайтеся цими клавішами:

Із вкладками трохи попрактикувалися. Тепер давайте розіб'ємо наш поточний регіон на два незалежні регіони. Робиться це за допомогою клавіш:

Щоб у другому регіоні була можливість працювати, потрібно перейти і активувати явно. Зробити це можна за допомогою:

Тепер давайте запустимо в тому регіоні, що ліворуч, наприклад, midnight commander (будь-яку іншу утиліту) за допомогою команди:

А в тому регіоні, що праворуч, запустимо наш тестовий додаток. Це простий чат, написаний на node.js та socket.io. Цей приклад взятий із офіційного сайту socket.io. Єдине, що я додав — це трохи логування, щоб ми бачили, що воно працює. Для цього потрібно перейти до директорії %repoName%/screen/chat-example . І виконати команди:

%repoName% — ім'я директорії, в яку був схильний репозитою.

Якщо все добре, то ви повинні побачити на екрані рядок:

маси

І тепер найцікавіше. Давайте зімітуємо обрив зв'язку. Закриємо термінал через хрестик. Але при цьому не закривайте браузер. І спробуйте надіслати ще кілька повідомлень. Як бачите, все продовжує працювати. Це при тому, що ми щойно закрили термінал.

маси

Це говорить про те, що screen зберіг сесію та всі процеси, які були запущені. Давайтепідключимося до цієї сесії назад. Запустіть термінал та виконайте команду:

screen

Як ви могли помітити, той layout, який ми створювали раніше, він не зберігся. Це досить неприємний сюрприз. У налаштуваннях screen'a є команди, які дозволяють налаштувати збереження раніше створеного layout'у. Але скільки я не пробував, у мене не завелося. І це ситуація, коли у нас дві-три вкладки. А уявіть собі картину, коли маємо шість-десять вкладок. Layout розбитий на регіони як по вертикалі, так і по горизонталі. І в невідповідний момент у нас відбувається обрив зв'язку. Єдиний плюс — те, що всі запущені процеси збережуться.

Я довгий час працював без менеджерів терміналів із однієї простої причини. Я про них не знав! Вважав, що це нормально відкривати кілька вікон putty (windows + підключення до віддаленого сервера) і перемикатися між ними за допомогою клавіш Alt + Tab . І якось намагатися у всьому цьому хаосі працювати.

Тепер про погане. screen не вміє створювати layout для кожної вкладки. Також screen не вміє зберігати layout, якщо обірвався зв'язок або ще щось там. До версії 4.1 не вмів розбивати по вертикалі (для мене це критично). Коли ви створюєте новий регіон, то окремо потрібно створювати нове вікно ( Ctrl+a, c ), виконати перехід у потрібну директорію тощо. Щоб видалити регіон теж потрібно помучитися Ctrl + a: remove. Для мене screen був як ковток свіжого повітря посеред мегаполісу. Але щоби його налаштувати «під себе», потрібно витратити чимало часу. І деякі хотівки так і не вдалося запиляти через обмеженість реалізації screen.

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

Забігаючи трохи наперед, у наступній статті ми розглянемо більш сучасний менеджер терміналів, а саме tmux. Також порівняємо screen та tmux.

На цьому все. Дякую за увагу. Хто дочитав до кінця окреме спасибі. До зустрічі у наступній статті.