Покоряй и Властвуй: Советы по работе в терминале. Часть 8 Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
fullcircle:32:советы_ч_8 [2010/06/18 22:35]
fullcircle:32:советы_ч_8 [2010/06/22 20:03] (текущий)
Строка 1: Строка 1:
-====== Покоряй и Властвуй:​ Советы по работе в терминале. Часть ​7======+====== Покоряй и Властвуй:​ Советы по работе в терминале. Часть ​8======
  
 <style right> <style right>
Строка 13: Строка 13:
   - [[..:​31:​советы_ч_7|Советы по работе в терминале - Часть 7]]   - [[..:​31:​советы_ч_7|Советы по работе в терминале - Часть 7]]
   - [[..:​32:​советы_ч_8|Советы по работе в терминале - Часть 8]]   - [[..:​32:​советы_ч_8|Советы по работе в терминале - Часть 8]]
 +  - [[..:​33:​советы_ч_9|Советы по работе в терминале - Часть 9]]
 +  - [[..:​34:​советы_ч_10|Советы по работе в терминале - Часть 10]]
 +  - [[..:​35:​советы_ч_11|Советы по работе в терминале - Часть 11]]
 +  - [[..:​36:​советы_ч_12|Советы по работе в терминале - Часть 12]]
  
 +Прежде,​ чем мы начнём,​ я вынужден признать ошибку. Читатель Stefan Eike указал на то, что в прошлом выпуске я пропустил символ «t» в команде:​
 +
 +<​code>​sudo smartctl -H /​dev/​sda</​code>​
 +
 +Поэтому спасибо Stefan за подсказку,​ и простите все, кто столкнулся с проблемами из-за этой команды.
 +
 +15 ноября я получил письмо от корректора Brian Jenkins. Он написал,​ что хотел бы увидеть статью,​ посвящённую GNU Screen, так как он начал её использовать и считает очень полезной. Brian, вот твоя статья! Я снова хочу поблагодарить его за напоминание о Screen, ведь я всё время собирался написать о ней, когда думал о новой статье. После того, как он посоветовал эту тему, я решил, что это отличная идея написать одну-две статьи. Я наверняка напишу ещё одну статью в следующем месяце и расскажу о Screen больше. Я решил, что буду использовать Screen по максимуму все эти недели и настрою её так хорошо,​ как смогу. В конце концов,​ нельзя писать о приложении,​ с которым никогда не работал.
 +
 +В этой статье я расскажу про установку,​ использование (горячие клавиши и т.д.), настройку .screenrc, а также о плюсах и минусах Screen. В следующем месяце я сосредоточусь на продвинутом использовании Screen (мультисессии,​ Screen поверх SSH и др.). Таким образом,​ читатель будет иметь необходимые знания для понимания следующей части, а я смогу рассказать не о том, как использовать программу,​ а почему. Так что же такое GNU Screen? GNU Screen — это терминальный мультиплексор. Если это ни о чём вам не говорит,​ терминальный мультиплексор,​ по сути дела, создаёт серию «виртуальных» терминалов внутри другого терминала или tty-экрана. Эти виртуальные терминалы можно присоединять к новому терминалу или другой учётной записи,​ отсоединять их и т.д. Вы можете спросить себя: «Почему просто не открыть несколько терминалов?​». Так можно поступить,​ и я сам привык использовать несколько терминалов,​ но Screen предлагает вам возможность работы со множеством виртуальных терминалов в одной экранной сессии,​ подобно вкладкам (да, я знаю, что есть эмуляторы терминалов с поддержкой вкладок). Однако Screen также позволяет вам передать всю сессию,​ включая вкладки,​ в новый терминал,​ другую учетную запись или tty экран.
 +
 +Конечно,​ лучший способ понять,​ что такое Screen — установить и попробовать его. Для установки Screen на компьютер введите команду:​
 +
 +<​code>​sudo apt-get install screen</​code>​
 +
 +После установки вы можете протестировать Screen, просто набрав:​
 +
 +<​code>​screen</​code>​
 +
 +Вы увидите,​ что открылся... пустой терминал! Screen выглядит в точности как терминал,​ если запускать его без аргументов,​ хотя вы можете увидеть,​ что это действительно Screen, нажав C-a d (т.е. «CTRL + a», затем «d»). Вы увидите терминал,​ который вы открыли прежде,​ со строкой:​
 +
 +<​code>​[detached]</​code>​
 +
 +Это значит,​ что экранная сессия,​ запущенная раньше,​ была отсоединена,​ но не закрыта.
 +
 +Чтобы посмотреть полный список горячих клавиш в Screen, воспользуйтесь ссылкой в секции «Читайте также». Вот некоторые из них, которые я часто использую:​
 +
 +  * Ctrl + a, d — отсоединяет экран
 +  * 
 +  * Ctrl + a, 0-9 — переключает на соответственный виртуальный терминал в сессии экрана
 +  * 
 +  * Ctrl + a, Ctrl + a — переключает на предыдущее окно
 +  * 
 +  * Ctrl + a, Ctrl + c — создаёт новое окно с оболочкой и переключается на него
 +  * 
 +  * Ctrl + a, k — закрывает текущее окно ​
 +
 +Отсоединив свой экран, возможно,​ вы захотите узнать,​ как вернуть его обратно. Если вы введёте следующую команду в терминале,​ вы получите список экранов:​
 +
 +<​code>​screen -ls</​code>​
 +
 +Мой список выглядит так:
 +
 +<​code>​There is a screen on:
 +
 +17153.pts-0.lswest-netbook (Detached)
 +
 +1 Socket in /​tmp/​screens/​S-lswest.
 +
 +Или, если ввести команду из этой экранной сессии:​
 +
 +There is a screen on:
 +
 +17153.pts-0.lswest-netbook (Attached)
 +
 +1 Socket in /​tmp/​screens/​S-lswest.</​code>​
 +
 +После просмотра этого списка вы, возможно,​ запутаетесь. По сути, здесь приводится список файлов,​ которые созданы каждой экранной сессией в /​tmp/​screens/​S-<​username>/​. Также тут отображается статус этого экрана (присоединён,​ отсоединён и т.д.). Чтобы переподключиться или «присоединить» экранную сессию,​ нужно выполнить следующую команду:​
 +
 +<​code>​screen -r <name of screen></​code>​
 +
 +Для примера выше команда будет:
 +
 +<​code>​screen -r 17153.pts-0.lswest-netbook</​code>​
 +
 +Конечно,​ все мы ленивы,​ поэтому мы будет использовать только числовой ID (в данном случае 17153). ID достаточно для доступа к локальной сессии экрана,​ однако,​ если вы захотите подключиться к удалённой сессии,​ вам нужно указать ID полностью.
 +
 +
 +Можно предложить небольшую настройку,​ которая может оказаться полезной,​ — писать номер экрана в приглашении Bash или Zsh. Это можно сделать,​ добавив переменную «$WINDOW» в строку приглашения,​ после чего она покажет значение текущего открытого окна. Если у вас 3 открытых окна в экранной сессии,​ и вы в командной оболочке в экране 1 (нумерация начинается с 0, поэтому 1 означает второй экран),​ вы увидите значение 1. Текст из моей настройки приведён ниже.
 +
 +Это приглашение в Z-Shell, оно не будет работать в Bash, но вы поймёте,​ как его использовать. Файл проверяет,​ есть ли значение в $WINDOW, и если есть, он отображает его в приглашении. В комментариях видно, как выглядят приглашения в обоих случаях. Мне это показалось очень полезным при работе с Screen.
 +
 +Последнее,​ о чём я хочу рассказать в этом месяце — создание файла .screenrc, который содержит настройки Screen. Мой файл .screenrc выглядит как текст справа,​ на странице 7 (основанный на .screenrc пользователя rson с форумов ArchLinux).
 +
 +Комментарий «hardstatus alwayslastline» — это пример того, как это выглядит в результате. Все другие команды хорошо документированы. В результате экран выглядит так: (Рис 1.)
 +
 +Это начальный .screenrc. Потребуется несколько статей,​ чтобы рассказать хотя бы про половину того, что можно настроить. Я просто оставлю .screenrc как он есть с комментариями. В разделе «Читайте также» вы найдёте ссылку на сайт, который расскажет о всех возможных настройках файла .screenrc.
 +
 +И самое последнее,​ о чём мне нужно рассказать в этой статье — как выйти из screen. Есть два способа:​
 +
 +  - Ctrl + a, \ — выходит из screen и закрывает все окна;
 +  - закрыть все окна кроме оболочки,​ а затем набрать.
 +
 +<​code>​exit</​code>​
 +
 +Если у кого-то остались ещё вопросы,​ или он хочет попросить рассказать о конкретном аспекте Screen, просто напишите мне на lswest34@gmail.com. То же самое касается тех, кто может предложить идеи статей любого вида, или вопросы о CLI. Желаю всем приятных выходных и хорошего нового года.
 +
 +-----------------------
 +Читайте также:
 +Описание горячих клавиш http://​www.gnu.org/​software/​screen/​manual/​html_node/​Default-Key-Bindings.html#​Default-Key-Bindings ​
 +
 +краткий список настроек .screenrc файлов и Screen в целом http://​www.math.utah.edu/​docs/​info/​screen_9.html ​
 +
 +---------------------------------------
 +
 +<style center>
 +//​[[..:​32|К содержанию номера]]//​
 +
 +//​[[:​fullcircle|К архиву журналов]]//​
 +</​style>​
 +
 +{{tag>​Система Администрирование Full_Circle BASH}}