Краткое введение в tmux для программистов


Оглавление (нажмите, чтобы открыть):

Краткое введение в tmux для программистов

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1

tmux — это менеджер терминалов, к которому удобно подключаться и отключаться, не теряя при этом процессы и историю. Как screen, только лучше (в первую очередь потому, что использует модель клиент—сервер).

Вашему вниманию предлагается минималистическая шпаргалка, позволяющая быстро начать использовать tmux, а уж тонкую настройку, продвинутые команды и бесконечные хот-кеи желающие найдут, набрав man tmux.

Очень хороший способ запустить tmux:

tmux attach || tmux new — делая так, вы сперва пытаетесь подключиться к уже существующему серверу tmux, если он существует; если такого ещё нет — создаёте новый.

После этого вы попадаете в полноценную консоль.

Ctrl+b d — отключиться. (Точно так же вы отключитесь, если прервётся соединение. Как подключиться обратно и продолжить работу — см. выше.)

В одной сессии может быть сколько угодно окошек:

Ctrl+b c — создать окошко;

Ctrl+b 0. 9 — перейти в такое-то окошко;

Ctrl+b p — перейти в предыдущее окошко;

Ctrl+b n — перейти в следующее окошко;

Ctrl+b l — перейти в предыдущее активное окошко (из которого вы переключились в текущее);

Ctrl+b & — закрыть окошко (а можно просто набрать exit в терминале).

В одном окошке может быть много панелей:

Ctrl+b % — разделить текущую панель на две, по вертикали;

Ctrl+b « — разделить текущую панель на две, по горизонтали (это кавычка, которая около Enter, а не Shift+2);

Ctrl+b →←↑↓ — переходить между панелями;

Ctrl+b x — закрыть панель (а можно просто набрать exit в терминале).

Недостаток — непривычным становится скроллинг:

Ctrl+b PgUp — вход в «режим копирования», после чего:

Информационный портал по безопасности

Краткая шпаргалка по tmux (менеджеру терминалов)

Автор: admin от 24-08-2011, 16:22, посмотрело: 1410

tmux — это менеджер терминалов, к которому удобно подключаться и отключаться, не теряя при этом процессы и историю. Как screen, только лучше (в первую очередь потому, что использует модель клиент—сервер).

Вашему вниманию предлагается минималистическая шпаргалка, позволяющая быстро начать использовать tmux, а уж тонкую настройку, продвинутые команды и бесконечные хот-кеи желающие найдут, набрав man tmux .

Очень хороший способ запустить tmux:
tmux attach || tmux new — делая так, вы сперва пытаетесь подключиться к уже существующему серверу tmux, если он существует; если такого ещё нет — создаёте новый.

После этого вы попадаете в полноценную консоль.
Ctrl+b d — отключиться. (Точно так же вы отключитесь, если прервётся соединение. Как подключиться обратно и продолжить работу — см. выше.)

В одной сессии может быть сколько угодно окошек:
Ctrl+b c — создать окошко;
Ctrl+b 0. 9 — перейти в такое-то окошко;
Ctrl+b p — перейти в предыдущее окошко;
Ctrl+b n — перейти в следующее окошко;
Ctrl+b l — перейти в предыдущее активное окошко (из которого вы переключились в текущее);
Ctrl+b & — закрыть окошко (а можно просто набрать exit в терминале).

В одном окошке может быть много панелей:
Ctrl+b % — разделить текущую панель на две, по вертикали;
Ctrl+b « — разделить текущую панель на две, по горизонтали (это кавычка, которая около Enter, а не Shift+2);
Ctrl+b →←↑↓ — переходить между панелями;
Ctrl+b x — закрыть панель (а можно просто набрать exit в терминале).

Недостаток — непривычным становится скроллинг:
Ctrl+b PgUp — вход в «режим копирования», после чего:
PgUp, PgDown — скроллинг;
q — выход из «режима копирования».

Мир микроконтроллеров

Популярное

  • Устройство и программирование микроконтроллеров AVR для начинающих — 143
  • Трехканальный термостат, терморегулятор, таймер на ATmega8 — 70
  • Двухканальный термостат, терморегулятор на ATmega8 — 66

Введение в язык программирования С (Си) для микроконтроллеров

В этой статье будут рассмотрены основные сведение о языке С, структура программы на языке С, дано понятие о функциях, операторах и комментариях данного языка программирования.

История создания языка C (Си)

Язык программирования C (Си) появился «стихийно» – ни одна компания не заказывала создания подобного языка. Его первая версия появилась на свет в 1972 г. в фирме Bell Laboratories, написал ее теперь уже всемирно известный программист Деннис Ритчи (Dennis MacAlistair Ritchie).

Ритчи рассчитывал, что созданный им язык программирования будет востребован в операционной системе UNIX, которая тогда была еще новинкой. Конечно, создавать новый язык Ритчи помогали и другие его коллеги программисты, но именно он внес наибольший вклад в становление этого языка. К новому языку первоначально не выдвигалось никаких требований, перед ним не ставилось никаких задач, фактически он возник как результат дружеского соревнования между небольшим кругом программистов.

Название C (Си) появилось так же стихийно, как и сам язык. Фактически, он стал преемником ранее созданного языка В (Би), разработанного автором операционной системы UNIX Кеном Томпсоном. В свою очередь, язык Би во многом был похож на языке BCPL, разработанный в Кембриджском университете. А язык BCPL основывался на идеях «старого как мир» Алгола-60.

Первым неформальным стандартом языка Си стало издание в 1978 г. книги Брайана Кернигана и Денниса Ритчи с названием «The ‘C’ Programming Language». Первоначально книга была издана в США, но потом была переведена и многократно переиздавалась во многих других странах мира. В 1989 г. язык Си был стандартизован ANSI (American National Standards Institute – американский национальный институт стандартов) и ISO (International Standard Organization — международная организация по стандартизации).

Но время шло и у пользователей языка Си появилась потребность в реализации новых функций, не поддерживавшихся языком. Учитывая все это, Бьерн Страуструп в начале 80-х (работавший все в той же самой Bell Laboratories) принял решение о расширении возможностей языка Си, который первоначально назвали как «Си с классами». Но в дальнейшем за его модификацией языка закрепилось другое название — Си++. Это название сохранилось за ним вплоть до настоящего времени.

Общие сведения о языке C (Си)

В настоящие дни C (Си) является многофункциональным языком программирования высокого уровня, подобным таким языкам как Pascal или Python, но в отличие от них он имеет возможность работы с командами низкого уровня, подобно языку ассемблера. Программу на языке С можно скомпилировать в машинный код практически для любого известного микропроцессора. Не исключением стали и микроконтроллеры – сейчас по популярности использования (особенно для начинающих) язык Си обогнал в них доминировавший до этого язык ассемблера. Программирование на языке С поддерживает и самая популярная в настоящее время программная платформа Atmel Studio (. ) для микроконтроллеров семейства AVR.

Сейчас уже можно с уверенностью сказать, что язык С стал своеобразным фундаментом, на котором строится все современное программирование – чего стоят хотя бы «Visual C» и «C Sharp». Основанные на нем языки программирования сейчас занимают доминирующее положение в мире программирования. А все началось с удачной структуры языка, разработанной в 1972 г. Деннисом Ритчи.

Файлы программ на языке Си имеют расширение .C, а простейшая структура программы выглядит следующим образом.

int main (void) /* главная функция: начало программы */

оператор программы;
оператор программы;

оператор программы;

> /* закрывающая скобка в конце программы */

Комментарии являются необязательным элементом программы, но они крайне желательны для лучшего понимания ее сути.

Назначение основных элементов программы на языке C (Си)

Заголовки

Символ # указывает на то, что представленная инструкция должна быть обработана препроцессором, который выполняет предварительную обработку текста программы перед началом компиляции и подключает внешние библиотеки.

Какие заголовки (управление портами ввода/вывода, функции задержки и т.д.) следует подключить определяется потребностями конкретной программы. Если вы забыли подключить необходимый заголовок, то программа не скомпилируется – компилятор выдаст сообщение об ошибке. К слову сказать, эти ошибки легко устраняются – ведь компилятор сам подсказывает какие заголовки следует подключить.

Функции

По сути программа на языке С представляет собой набор функций, каждая из которых может вызывать для выполнения любые другие функции. Функций в программе может быть много, но обязательной является только одна из них, называемая «main» («главная»). Выполнение программы на языке С начинается всегда с нее. Программист не может изменить название главной функции «main», но названия для всех других функций программы он может выбирать произвольно.

Функции в языке С легко узнать по их отличительному признаку – круглым скобкам после их имени. В общем случае в скобках содержится набор параметров, которые могут передаваться в функцию для ее работы, а также набор переменных, через которые функция может передавать результаты ее работы во внешнюю функцию (которая ее вызвала). Если скобки пустые, как например, в представленном примере с функцией main(), то это значит что у функции нет ни входных, ни выходных параметров.

Идущая следом за названием функции фигурная скобка <отмечает начало последовательности операторов, образующих тело функции. Закрывающая фигурная скобка > отмечает конец этой последовательности операторов. На этой скобке выполнение функции завершается.

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

Операторы

Как правило, тело функции в языке Си представляет собой набор операторов, в конце каждого из которых стоит точка с запятой ;. Можно размещать каждый оператор на своей строке или несколько операторов на одной строке – компилятору это неважно, главное чтобы они разделялись точкой с запятой (этот символ свидетельствует о конце оператора). Но для восприятия человеком, конечно, удобнее чтобы каждый оператор располагался на отдельной строке. Допускается использование и пустых строк чтобы визуально отделить структурные элементы программы.

Операторы выполняются последовательно в том порядке, в котором они записаны. Но структура программы не обязательно должна быть линейной – при наличии циклов и условий возможны пропуски выполнения отдельных операторов (условия) или многократное выполнение одних и тех же операторов (циклы).

Комментарии

Комментарии — это примечания, помогающие понять смысл программы. В языке Си текст комментариев записывается между значками /* */ . То, что написано между этими значками, компилятору совершенно неважно – он все это игнорирует. Это важно только для человека, который анализирует текст программы.

Комментарии можно размещать как на одной строке с операторами, так и на разных (обычно ниже или выше строки с оператором). Комментарии могут занимать несколько строк и для них не обязательно наличие в конце точки с запятой.

Наличие комментариев считается хорошим стилем программирования поскольку позволяет лучше понимать смысл программы не только ее автору (особенно по прошествии некоторого времени, в течение которого он над ней не работал), но и другим людям, которые в дальнейшем будут работать с этой программой.

Внутри комментариев нельзя использовать символы, определяющие начало и конец комментариев. К примеру, неправильная запись внутри комментария:

/* комментарии к программе /* управления электродвигателем */ */

/* комментарии к программе управления */ электродвигателем */

Язык Си для микроконтроллеров AVR поддерживает и другой метод записи комментариев — строка, начинающаяся с символов //. К примеру

// Это комментарий в одну строку

В качестве итога можно отметить, что для написания хорошо читаемой программы целесообразно придерживаться следующих правил:

  • размещайте один оператор на строке;
  • применяйте пустые строки для «отделения» одной логической части программы от другой;
  • используйте комментарии.

KAZARIN OnLine

Blog about IT, Me, My travels, vacations, etc…

Обживаемся в консоли: Tmux + Vim

Это не полноценная статья, скорей краткая заметка, которая является наброском сценария для будущего скринкста.

И хоть про оба этих, несомненно замечательных инструмента в сети уже есть не мало материала, я добавлю еще немного от себя — как обычно это будет краткая выжимка с ссылками на куда более подробные источники. Итак, поехали!

Что это

Это терминальный мультиплексор. Он позволяет создавать несколько терминалов (или окон), каждый из которых выполняет отдельную программу, а так же управлять этими терминалами на одном экране. Tmux может быть отвязан от экрана и продолжать свою работу в фоновом режиме, а позже — привязан вновь.

Откуда взялось

Пришел к нам из мира openbsd как и много чего хорошего, где был разработан как замена screen.

Зачем это

позволяет работать с несколькими сессиями в 1 окне. Вместо нескольких окон терминала к серверу — вы можете использовать одно. Позволяет подключаться/отключаться к текущему состоянию сессии. Запущенные программы и процессы продолжают работать.

Теперь подробней

Философия tmux — при запуске, tmux запускает сервер с 1 или более сессий. В каждой сессии может быть одно и боле окон, из 1 и более областей. Итого у нас парадигма сессия-окно-область:

Мастер Йода рекомендует:  Redis — всё по этой теме для программистов

Если проводить аналогию с миром GUI:

  • сессия — для Вас как отдельное рабоче место, Ваш компьютер
  • окно — аналог рабочего стола (или набора виртуальных рабочих столов)
  • панель- окно приложения

Что вы можете делать с tmux:

  • Одновременно держать несколько запущенных задач на одном экране. причем это не обязательно будет ваша локальная машина
  • Оставлять задачу запущенной в фоне,
  • Отключаться и подключаться к ней запускать в фоне задачу, которую обычно сложно перевести в формат фоновой, например регулярно чт-то выводящей на экран
  • Составлять свой собственный консольный рабочий стол, собственную IDE и т.д.
  • Кооперативно подключаться к одной сессии несколькими пользователями

Основные моменты

0. Prefix-key или управляющая комбинация клавиш. По умолчанию это Ctrl+B. Нажатие этой комбинации уведомляет tmux о том что дальше пойдет ввод управляющей клавиши, означающей команду. Короче это способ послать команду в tmux.

Команды и конфигурация. Следует различать два вида команд:

  • Команды отдаваемые внутри tmux сессии — это Prefix комбинация + клавиша —
  • Внешние команды — набираются вместе с командой Tmux —
  • Конфиг — просто набор внешних команд, записанных в файл и выполняемых при старте tmux.

Кстати по дефолту конфига нет. Сгенерировать можно так: tmux show -g | cat >

1. Сессии

Основная единица измерения. При простом запуске вы запускаете свою первую сессию с именем 0. Можно и сразу ее поименовать:

  • tmux new-session -s’my rails project’
  • tmux rename-session -t 1 «my session»

Для сессии же вы задаете глобальные настройки. Управлять сессией просто:

  • tmux new — создать новую сессию с окном
  • prefix + d — отсоединиться
  • tmux list-session — список сессий с числом окон
  • tmux attach -t 0 или 1 — присоединиться к той или иной сессии вместо номера можно начать вводить имя, если сессия поименованная

можно и переключаться на ходу:

  • pefix + s — список сессий с переключениями

2. Окно

Каждая сессия делится на окна и запускается уже с одним окном по умолчанию.

  • prefix + c — создать еще окно

создаются они с номером и их так же можно именовать:

В строке статус бара у вас показан список всех окон в рамках сессии. активное отмечено * :

  • prefix + w — список окон с переключением
  • prefix + 0-9 переключиться на окно
  • prefix + n/p — следующее или предыдущее окно

3. Панели

Каждое окно может быть разделено на несколько панелей. По сути одно окно это уже и есть одна панель. Панель- это экземпляр шела или любой другой запущенной программы ( по умолчанию просто запускается шел):

  • prefix + q (Показать номера панелей; перейти в область по нажатии клавиши, соответствующей номеру)
  • prefix + % (Разделить окно вертикально)
  • prefix + « “split-window” (Разделить окно горизонтально)

перемещаться по панелям

Вы можете сразу задавать сессию с одним пред настроенным окном. Пред настройка включает в себя указание числа панелей, их размещения и то, что в них будет запущено:

# Create pane horizontally, $HOME directory, 50% width of current pane

tmux split-window -h -c $HOME -p 50 vim

#Сreate new pane, split vertically with 75% height

tmux split-window -p 75

Скроллинг внутри панели

  • prefix + PgUp — вход в «режим скролинга», после чего:
  • PgUp, PgDown — скроллинг;

Все это лишь базовые возможности Tmux. Очень базовые. на самом деле он может куда больше- например вы можете создавать пред настроенные конфигурации, добавлять плагины, изменять внешний вид.

Список домашнего чтения

Что это

Если кратко — это командно-ориентированный консольный текстовый редактор, с довольно высоким порогом вхождения, который позволяет Вам редактировать произвольный текст или код не отрывая руки от клавиатуры. И нет, сеть не в огромном сочетании «горячих клавиш» ( хотя тут вы их можете запрограммировать сколько душе угодно), это именно команды и их сокращения, что повышает производительность при работе с текстом. В чем же отличие от горячих клавишь, спросите Вы? Нельзя нажать сразу несколько горячих клавиш, а вот отдать сразу несколько команд — можно. Плюс возможности этого редактора расширяются огромным числом плагинов.

Звучит не очень убедительно но тут лучше просто попробовать, чем слушать и читать.

Откуда взялось

Пришел к нам как дальнейшая эволюция редактора Vi, а тот вообще из эпохи динозавров)

Зачем это

Как я уже говорил, он позволяет очень удобно и быстро (естественно при наличии некоего навыка) работать с любым текстовым файлом- просто текст, код, конфиг, верстка и т.д. Помимо этого, этот текстовый редактор входит в базовый состав утилит почти любого Linux дистрибутива, от Ubuntu Server до OpenWRT. Поэтому умея работать с ним ( любить при этом не обязательно) — вы точно будете во всеоружии!

Теперь подробней

Философия vim — для начало нужно уяснить себе, что этот редактор работает в нескольких режимах последовательно. Для начала это режим редактирования и режим команд. В первом — вы пишете текст, во втором Вы работаете с файлом. В том числе и с текстом.

Чтобы не уподобляться 100500 мануалам в духе «как выйти из Vim перед этим сделать то и то». Вы можете пойти и почитать на эту тему, благо есть тонна отличных учебных пособий, например:

  • OpenVim — интерактивный онлайн учебник.
  • Vim Adventures — приключенческая игрушка.

Плюс на Youtube есть куча всевозможных обучающих видео. Но на мой взгляд (чисто ИМХО), есть два более простых и удобных способа:

  • Vimtutor — Не интерактивный а наоборот, очень простой учебник, который представляет собой приложение к vim. Если вы пользователь linux/unix, просто введите эту команду и выполняйте то что там написано.
  • Найдите какой нибудь сборник основных команды в виде картинки (например такой) и начните использовать!

Для начала, давайте соберем основные комбинации клавиш и команды, чтобы быть «в теме». Я буду совмещать отдельные команды и их наиболее часто (опять же, ИМХО) встречающиеся комбинации.

  • i / insert — вход в режим редактирования
  • Esc — выход в режим команд
  • х в режиме команд — удалит букву под курсором
  • d — удаление:
    • dw, de — удалит следующее за курсором слово. «w» — включая пробел и «e» — не включая его
    • d$ — удалить все от курсора и до конца строки
    • d^ — от начала строки идо курсора
    • d*число* или *число*d — сколько раз повторить команду удаления, например d4w — удалить 4 слова от курсора и далее вправо.
    • dd в начале строки — удалить строку, 2dd — удалить две строки
  • r*символ которым заменяем* — набираем, установив курсор над заменяемым символом.
  • Для строки:
    1. dd — в начале вырезаемой строки
    2. p — в конце строки, после которой надо вставить
  • Для слова:
    1. dw / d$ — в начале слова/ подстроки которые вырезаем.
    2. p — после слова/подстроки куда вставить
  • u — отменить последнюю операцию
  • Ctrl+R — вернуть последнюю операцию
  • U -отменить все изменения в строке
  • h, j, k, l — Перемещение вверх/вниз, вправо/влево. Их можно заменить стрелками, но Vim-гуру рекомендуют привыкнуть именно к этим клавишам перемещения, чтобы не убирать пальцы с основной клавиатурной панели.
  • /*регулярное выражение* — поиск выражения/строки.
  • %*скобка* — поиск парной скобки относительно введенной

Все эти команды набираются в командном режиме (как неожиданно, не правда ли!), просто по ходу пьесы. Однако есть еще один тип команд — внешние. Имеется ввиду по отношению к редактируемому тексту. Эти команды начинаются с символа»:» и вводятся либо целиком, либо сокращенно:

  • :edit / :e *filename* — открыть файл
  • :quit / :q — выйти
  • :write / :w *filename* — сохранить. Если не указать имя, сохранит файл под текущим именем. Если имени нет, попросит ввести.

Так же мы можем выполнить команды из операционной системы, используя конструкцию :!*commandname*

Расширение функционала

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

По умолчанию, для Vim не создается конфигурационный файл. Но мы можем сделать его — создайте в корневом каталоге файл «.vimrc» и заносите туда настройки. Ряд настроек можно почерпнуть из документации. Вот пример очень простого файла настройки:

set number
set showcmd
set incsearch
set hlsearch

set expandtab
set tabstop=4
set softtabstop=4
syntax on

  1. включает нумерацию строк в редакторе
  2. Включается история команд
  3. Включает инкрементальный поиск (поиск по мере ввода строки)
  4. Включить подсветку поиска
  5. Заменить табуляцию на отступы пробелами
  6. Отступ табуляцией теперь будет = 4 пробелам
  7. Включается подсветка синтаксиса

Плагины

Для начала, нам необходим менеджер плагинов. Среди прочих равных я для себя выбрал vim-plug. там же, на странице есть и инструкция по установке. Ставится одной командой в консоль + добавляется секция в конфигурационный файл, позволяющая автоматически устанавливать и подключать плагины:

Из приглянувшихся мне (как не разработчику) плагинов, я бы выделил следующие:

  • nerdtree — позволяет открывать дерево каталогов / дерево файлов и папок вашего текущего проекта прямо в окне vim
  • тема оформления gruvbox. Кстати, еще больше тем и конфигов по оформлению можно найти вот тут.
  • YouCompleteMe— автодополнение для популярных языков программирования (мне как минимум интересен Python)
  • Auto Pairs — автоматическая добавка и удаление таких парных элементов как различные скобки
  • CtrlP— быстрый поиск по вводимой строке.

Шпаргалка по tmux

Tmux — это терминальный мультиплексор или иными словами, вы можете в одном терминале запустить несколько терминальных сессий и переключаться между ними или даже разместить их в одном окне, а также отключиться от сессии оставив её работать в фоне, а затем вернуться и посмотреть результат, это может быть очень удобно при работе по SSH. Если вы раньше пользовались утилитой screen, то tmux — это её аналог, который имеет намного больше функций.

Эта статья — небольшая шпаргалка по Tmux, в которой мы разберем установку программы, основные её возможности и команды, а также некоторые приемы использования. После прочтения статьи вы сможете полноценно пользоваться утилитой.

Установка Tmux

Здесь все просто. Для установки программы в Ubuntu выполните следующую команду:

sudo apt install tmux

А для установки в CentOS:

sudo yum install tmux

Синтаксис и опции команды Tmux

Синтаксис команды предельно простой, для создания новой сессии достаточно запустить утилиту без параметров. Для подключения к уже существующей придется использовать дополнительные опции. Вот основной синтаксис:

tmux команда опции

Что касается опций, то в большинстве вам придется использовать только две — это -t (target) — которая указывает цель, к которой будет применяться команда, например, идентификатор сессии или подключенного клиента, а также -s (session) — который обычно используется для обозначения источника, над которым будет выполняться действие.


Команды tmux для управления сессиями, которые вы можете использовать:

  • attach-session (attach) — подключиться к уже существующей сессии. В параметре необходимо передать опцию -t и идентификатор сессии;
  • detach-session (detach) — отключить всех клиентов (или переданного с помощью опции -t) от сессии, переданной в опции -s;
  • has-session — проверить существует ли сессия, аналогично, надо передать идентификатор сессии;
  • kill-server — остановить все запущенные сессии;
  • kill-session — завершить сессию переданную в параметре -t;
  • list-clients — посмотреть клиентов, подключенных к сессии -t;
  • list-sessions (ls) — вывести список всех запущенных сессий;
  • new-session — создать новую сессию, можно передать имя сессии в опции -s и стартовую директорию в опции -c;
  • rename-session — переименовать сессию, нужно передать идентификатор сессии и новое имя;

Конечно, у tmux намного больше команд, но мы не будем рассматривать их в этой статье. В основном, команды будут использоваться для подключения и отключения от сессий, все остальные действия выполняются с помощью горячих клавиш и их тут тоже достаточно.

По умолчанию для активации сочетания клавиш нужно нажать Ctrl+B, отпустить, а потом нажать нужную клавишу. Вот основные сочетания клавиш tmux, которые вам понадобятся:

  • Ctrl+b c — создать новое окно;
  • Ctrl+b w — выбрать окно из списка;
  • Ctrl+b 0-9 — открыть окно по его номеру;
  • Ctrl+b , — переименовать текущее окно;
  • Ctrl+b % — разделить текущую панель по горизонтали;
  • Ctrl+b « — разделить текущую панель по вертикали;
  • Ctrl+b стрелка — перейти на панель, находящуюся в стороне, куда указывает стрелка;
  • Ctrl+b Ctrl+стрелка — изменить размер текущей панели;
  • Ctrl+b o — перейти на следующую панель;
  • Ctrl+b ; — переключаться между текущей и предыдущей панелью;
  • Ctrl+b x — закрыть текущую панель;
  • Ctrl+b [ — войти в режим копирования (подробнее ниже);
  • Ctrl+b ] — вставить из внутреннего буфера обмена tmux;
  • Ctrl+b d — отключится от текущей сессии;
  • Ctrl+b : — открыть командную строку.

Для начала работы этих горячих клавиш будет достаточно. Шпаргалка tmux завершена, теперь перейдем к примерам работы с программой.

Как пользоваться tmux

1. Создание сессии

Чтобы создать новую сессию достаточно выполнить команду без параметров:

Также можно создать сессию командой new-session и задать ей удобное имя:

tmux new-session -s losst

2. Разделение окна на панели

Окно сессии можно разделить на несколько панелей. Чтобы выполнить разделение по горизонтали нажмите Ctrl+b отпустите, а затем нажмите Shift+»:

Аналогично можно разделить панель по вертикали, нажав Ctrl+b, а затем Shift+%:

Размер активной панели можно менять нажав Ctrl+b, а потом Ctrl и стрелка:

А для переключения между панелями используйте клавиши Ctrl+b и стрелка. Сначала не привычно, но потом удобно.

3. Поддержка мышки

По умолчанию поддержка мышки отключена, но если вы работаете в графическом окружении, вы можете её включить. Это даст несколько преимуществ: вы сможете выбирать активную панель мышкой, копировать текст во внутренний буфер обмена, менять размер панелей, использовать прокрутку для просмотра истории вывода и так далее. Для этого откройте файл

/.tmux.conf и добавьте туда следующие строки:

set-option -g -q mouse on
bind-key -T root WheelUpPane if-shell -F -t = «#» «send-keys -M» «select-pane -t =; copy-mode -e; send-keys -M»
bind-key -T root WheelDownPane if-shell -F -t = «#» «send-keys -M» «select-pane -t =; send-keys -M»

Мастер Йода рекомендует:  Project Rider — новая IDE для .NETC# от JetBrains — доступна для загрузки

Сохраните изменения, нажмите Ctrl+b :, а потом выполните такую команду чтобы перезагрузить tmux:

Настройка tmux завершена, теперь мышь будет работать.

4. Копирование и вставка

Одна из достаточно важных операций при работе с терминалом — это возможность что-то скопировать и куда-то перенести. После активации поддержки мышки вы можете просто выделить участок текста мышкой и он автоматически скопируется во внутренний буфер tmux.

Если вы хотите иметь возможность скопировать в системный буфер обмена, перед тем как выполнять действия мышкой зажмите Shift:

Кроме того, в tmux есть управление копированием и вставкой с помощью клавиш. Для перехода в режим копирования нажмите Ctrl+B [, затем переместите курсор к нужному месту с помощью стрелок. Кстати, этот режим можно использовать также для прокрутки. Потом нажмите Ctrl+пробел для начала выделения, выделите нужный фрагмент стрелками и нажмите Ctrl+w для копирования.

Чтобы вставить текст из внутреннего буфера обмена нужно нажать сочетание клавиш Ctrl+b ]. Для выхода из режима копирования используйте q или Esc.

5. Окна tmux

Кроме панелей в tmux можно открывать окна. Это аналог рабочих столов в Linux. Каждое окно привязано к определенной цифровой кнопке и имеет свой набор панелей. Для создания нового окна нажмите Ctrl+b c:

Список окон выводится внизу окна терминала. Для переключения на нужное окно нажмите Ctrl+b и номер окна.

6. Отключение от сессии

Чтобы отключиться от текущей сессии достаточно нажать сочетание клавиш Ctrl+b d.

После отключения все запущенные в сессии программы продолжат работать и вы всегда сможете снова подключиться и посмотреть их вывод. Это удобно при подключении по SSH, которое всегда может разорваться.

7. Подключение к сессии

Посмотреть список сессий можно командой ls:

А для подключения используйте attach:

tmux attach -t losst

Ещё можно посмотреть список клиентов, подключенных к сессии:

Выводы

В этой статье мы разобрали основные команды tmux, а также как пользоваться этой утилитой. Я для себя открыл tmux не давно. Слышал о программе довольно давно, но никак не доходили руки попробовать, а потом попробовал и уже не могу без неё обойтись.

Обзор терминальных мультиплексоров: Tmux и Dvtm

Терминал принадлежит к числу наиболее часто используемых инструментов администратора. Нередко во время работы приходится одновременно держать открытыми несколько вкладок терминала: одну — для управления веб-сервером, другую — для управления базой данных, третью — для копирования файлов и т.п. Когда открытых вкладок очень много, отслеживать одновременно все процессы становится трудно, и это существенно усложняет работу. Существуют специальные программы, c помощью которых можно решить проблему множественных терминалов. Они называются терминальными мультиплексорами.

Терминальные мультиплексоры позволяют одновременно работать с несколькими терминальными сессиями в одном окне. Принцип их работы заключается в следующем: терминал с множественными вкладками создается на удаленной машине; на локальной машине окно терминала делится на несколько частей, и в каждой из них могут быть запущены любые приложения и процессы. От удаленной машины можно отключиться (текущая сессия будет сохранена), а затем снова подключиться к ней и продолжать работу.

Самым известным и распространенным терминальным мультиплексором является, конечно же, GNU Screen. При всех своих преимуществах он отличается некоторым неудобством в работе. Неудачно реализована, например, операция разделения экрана на части: при отключении от текущей сессии и последующем ее возобновлении порядок расположения частей не сохраняется.

В последнее время широкое распространение получили и другие терминальные мультиплексоры, более наглядные и удобные в работе — например, tmux и dvtm, которым и посвящена эта статья.

Tmux работает под Linux и под MacOS; он включен в официальные репозитории большинства современных Linux-систем и может быть установлен при помощи стандартного менеджера пакетов.

Запустим tmux при помощи следующей команды:

В нижней части экрана появится строка состояния:

Управление всеми терминальными мультиплексорами осуществляется так: сначала нажимается так называемая префиксная комбинация клавиш, а после нее — клавиша, управляющая той или иной функцией. В tmux по умолчанию в качестве префиксной установлена комбинация Ctrl+B. Чтобы разделить экран терминала на две половины вертикальной чертой, нужно сначала нажать Ctrl+B, а затем — % (т.е. Shift+5):

Каждую из получившихся вкладок можно также разделить на две части горизонтальной чертой при помощи комбинации клавиш Ctrl+B ” (сначала нажимаем Ctrl+B, а затем — “).

Разделить окно на две части можно также при помощи команд:

(разделить на две части горизонтально)

(разделить на две части вертикально)

Чтобы перейти из одной части окна в другую, нажимаем сначала Ctrl+B, а затем — клавиши ←, ↑, → и ↓.

Чтобы создать новое окно, нажмем комбинацию клавиш Ctrl+B+C. В рамках одной сессии может быть задействовано неограниченное количество окон; каждое из них может быть в свою очередь разделено на части. Переключение между окнами осуществляется при помощи следующих комбинаций:

  • Ctrl+B+ 0…9 — перейти в указанное окно;
  • Ctrl+B P — перейти в предыдущее окно;
  • Ctrl+B N — перейти в следующее окно;
  • Ctrl+B L — перейти в предыдущее активное окно (т.е. в то, из которого ранее был осуществлен переход в текущее окно);
  • Ctrl+B X — закрыть окно (это можно также сделать при помощи команды exit).

Текущую сессию tmux можно прервать, нажав комбинацию клавиш Ctrl+B+D. Чтобы возобновить прерванную сессию, нужно ввести команду:

Прерванная сессия будет восстановлена; при этом все данные и процессы будут сохранены.
Эту команду можно ввести и в сокращенном виде:

Чтобы вывести на экран список сессий, нужно выполнить следующую команду:

Завершение открытой сессии осуществляется при помощи команды:

Чтобы завершить все открытые сессии одновременно, нужно ввести команду:

Рекомендации по настройке

Отображение строки состояния в нижней части экрана можно отключить. Для этого введем следующую команду:

А чтобы отключенная строка состояния отображалась снова — команду:

Можно изменить положение строки состояния и сделать так, чтобы она находилась не в нижней, а в верхней части экрана:

Цвет строки состояния изменяется при помощи следующей команды:

Dvtm (dynamic virtual terminal manager) представляет собой терминальный мультиплексор, по функциональности во многом близкий к tmux.
Он также включен в официальные репозитории большинства современных Linux-систем и устанавливается при помощи стандартного менеджера пакетов.
После запуска dvtm в верхней части экрана будет отображена строка состояния:

Управление dvtm организовано по тому же принципу, что и управление tmux. В качестве префиксной используется комбинация клавиш Ctrl+G. Понятие окна в dvtm интерпретируется совершенно иначе по сравнению с tmux. Для создания нового окна используется комбинация клавиш Ctrl+G C. При нажатии этой комбинации экран будет разделен на две части; при этом каждая из них является отдельным окном:

При помощи той же самой комбинации клавиш можно создавать дополнительные окна:

Порядок расположения окон можно изменять. Выделяются следующие варианты расположения:

  • вертикальное (Ctrl+G T) — текущее окно расположено в левой половине экрана; все остальные окна расположены в правой половине;
  • горизонтальное (Ctrl+G B) — основное рабочее окно занимает верхнюю половину экрана, все остальные окна располагаются внизу;
  • режим сетки (Ctrl+G G) — экран делится на части одинакового размера по количество созданных окон;
  • полноэкранный режим (Ctrl+G M) — текущее окно занимает весь экран.

Переходить от одного режима расположения окон к другому можно, нажимая омбинацию Ctrl+G+пробел.

Для управления окнами используются следующие клавиатурные комбинации:

  • Ctrl+G X — закрыть текущее окно;
  • Ctrl+G J — перейти в следующее окно;
  • Ctrl+G K — перейти в предыдущее окно;
  • Ctrl+G 0…9 — перейти в указанное окно (цифры обозначают номер окна);
  • Ctrl+G L — увеличить ширину текущего окна;
  • Ctrl+G H — уменьшить ширину текущего окна;
  • Ctrl+G Q — закрыть все окна и выйти из dvtm.

В dvtm имеется одна интересная функция, которой больше нет ни в одном из известных нам терминальных мультиплексоров: нажатие клавиш в текущем окне могут автоматически воспроизводиться во всех остальных открытых окнах. Нажмем комбинацию клавиш Ctrl+G+A. Если после этого нажать на какую-нибудь клавишу, нажатие сработает во всех окнах сразу.(UPD. Наши читатели сообщают, что аналогичная функция имеется и в tmux: tmux set synchronize-panes on).

Если ввести в текущем окне какую-либо команду, она также будет одновременно выполнена во всех открытых окнах. С помощью этой функции можно, например, осуществлять одновременную настройку нескольких удаленных серверов по одинаковой схеме.

В отличие от tmux, dvtm не поддерживает сохранения и возобновления сессий. Для этого используется dtach — вспомогательная утилита, которая обеспечивает возможность отключения от текущей сессии и последующего подключения к ней для любых консольных приложений. Устанавливается при помощи стандартного менеджера пакетов.

Чтобы получить возможность отключать сессии и снова подключаться к ним, нужно запустить dvtm под dtach:

При работе с dtach нужно явно указывать сокет, с помощью которого идентифицируется сессия. Доступ к сессии целиком и полностью определяется доступом к сокету.

Чтобы покинуть dtach, нужно нажать комбинацию Ctrl+\. Подключение к существующей сессии осуществляется при помощи команды:

Более подробная информация о dtach представлена на официальной man-странице .

В заключение приведем небольшую шпаргалку — таблицу основных команд и клавиатурных комбинаций, используемых в screen, tmux и dvtm.

Сравнительная таблица команд и клавиатурных комбинаций

Управление сессиями

Операция screen tmux dvtm
Запустить новую сессию screen tmux
tmux new-session
tmux new-session -s [имя сессии]
Возможность сохранения и возобновления сессий не поддерживается — для этого нужно устанавливать утилиту dtach, реализующую такую возможность для всех консольных приложений. Запуск dvtm под dtach осуществляется при помощи команды:
dtach -c /tmp/dvtm-session -r winch dvtm
Подключиться к уже созданной сессии screen -r tmux attach
tmux attach-session -s [имя сессии] tmux -a
dtach -a /tmp/dvtm-session -r winch
Отсоединиться от текущей сессии Ctrl+A D tmux detach ИЛИ Ctrl+B D Ctrl+\
Просмотреть список активных сессий screen -ls tmux ls ps aux | grep dtach
Удалить сессию screen -r [имя сессии] -X quit tmux kill-session -t [имя сессии]
Удалить все сессии Ctrl+A \ tmux kill-server

Управление окнами

Операция screen tmux dvtm
Cоздать новое окно Ctrl+A C Ctrl+B C Ctrl+G C
Перейти в указанное окно Ctrl+B 0….9 Ctrl+G 0….9
Перейти в предыдущее окно Ctrl+A P Ctrl+B P Ctrl+G J
Перейти в следующее окно Ctrl+A N Ctrl+B N Ctrl+G K
Перейти в последнее активное окно Ctrl+A L Ctrl+B L
Показать список всех открытых окон Ctrl+A «
Увеличить ширину окна Ctrl+B+Ctrl N→ или Ctrl+B Alt → (увеличивает с большим шагом) Ctrl+G L
Уменьшить ширину окна Ctrl+B Ctrl+← Ctrl+G H
Воспроизводить нажатия клавиш во всех открытых окнах tmux set synchronize-panes on Ctrl+G A
Закрыть текущее окно Ctrl+A X Ctrl+B X Ctrl+G X

Вглубь ядра: знакомство с LTTng

Продолжаем цикл публикаций на тему трассировки и профилирования ядра Linux. Сегодня мы хотели бы поговорить об одном интересном инструменте для трассировки ядра — LTTng, разработанном канадским программистом и исследователем Матьё Денуайе. С его помощью можно получать информацию о событиях как в пространстве ядра, так и в пользовательском пространстве. LTTng уже давно включён в официальные.

IPMI ― обзор технологии

Чтобы удаленно управлять состоянием серверной платформы, системные администраторы и инженеры пользуются технологией IPMI, которая значительно упрощает им жизнь. Теперь не надо каждый раз бежать к серверу, чтобы нажать на кнопку перезагрузки ― своевременно реагировать на критические неполадки можно сидя дома в уютном кресле. В этой статье рассмотрим основные компоненты IPMI и детали работы технологии. Что такое.

Краткое введение в tmux для программистов

Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.

tmux — консольный оконный менеджер, похожий на GNU Screen, но отличающийся от него рядом серьёзных усовершенствований.

Основные преимущества tmux в сравнении с GNU Screen:

  • Ясная и прозрачная клиент-серверная модель (например, можно без проблем подключать разные окна к разным сеансам);
  • Простой интерфейс командной строки;
  • Единый синтаксис команд в конфигурационном файле, в командной строке оболочки и в командной строке tmux;
  • Простота написания скриптов;
  • Множество буферов вставки;
  • Комбинации клавиш vi/emacs;
  • Простой синтаксис командной строки, поддерживающий вывод внешних команд shell.

Содержание

[править] Управление окнами

Очень похоже на то, как это сделано в screen.

ctrl-b c (tmux new-window) создать новое окно ctrl-b 0-9 (tmux select-window -t 0-9) перейти на окно с заданным номером ctrl-b , (tmux rename-window) переименовать текущее окно ctrl-b n перейти на следующее окно ctrl-b f найти окно по имени ctrl-b w выбрать окно в меню

[править] Управление панелями

[править] .tmux.conf

Удобные настройки (особенно при переходе со Screen), добавляются в

[править] Шпаргалка

[править] Возможности Screen не поддерживаемые в tmux

Функции, которые не поддерживает tmux, но поддерживает screen:

  • zmodem transfers. в screen можно передавать файлы по zmodem. Для этого надо нажать ctrl-a :zmodem catch и sz на том конце. Tmux так не умеет (скриптами можно заставить).
  • подключение к serial-интерфейсу. Screen может работать на последовательном порту (screen -r /dev/ttyS0 115200), tmux — нет.
  • Автоматическое логгирование сеанса tmux тоже не может делать (скриптами можно заставить, см. ниже).

[править] Приятные дополнения и навороты

[править] Как сделать максимизацию текущей панели?

В самом tmux такой возможности нет, но её легко реализовать самому [1]:

[править] Как включить прокрутку по shift pgup/pgdn?

Вообще прокрутка доступна по prefix [ или prefix pgup (автоматически включается режим прокрутки и прокручивается один экран), но если хочется именно по shift pgup/pgdown, то нужно добавить в tmux.conf [2]:

[править] Как послать текст в окно tmux?

Здесь мы посылаем в панель 2 окна 0 текст echo hi и нажимаем Enter.

[править] Как копировать текст между окнами/буферами tmux?

[править] Дополнительная информация

  • tmux is sweet as heck (англ.) — некоторые преимущества tmux по сравнению с GNU Screen
  • tmux: Productive Mouse-Free Development (англ.) — интересная книга про tmux из серии Pragmatic Programmer
  • Multiplexers: Screen, Tmux — Hyperpolyglot (англ.) — основные комбинации клавиш и команды tmux и screen; хорошее введение для пользователей screen чтобы быстрее перейти на tmux
  • screen and tmux (англ.) — сравнение основных комбинаций клавиш и команд screen и tmux
  • tmux and mouse mode (англ.) — вопросы использования мыши в tmux
  • A Tmux Crash Course (англ.) — небольшая подборка советов по работе с tmux
  • TMUX – The Terminal Multiplexer (англ.) — короткое, но хорошее введение в tmux; освоение можно начать с него
  • Run command in detached tmux session (англ.) — как выполнить команду в отключенном сеансе tmux
  • Automatically start tmux on SSH login (англ.) — автоматический запуск tmux при входе в систему
  • Is there an equivalent of GNU Screen’s “log” command in tmux? (англ.) — как автоматически записывать всё, что происходит в консоли tmux
  • tmux — unlimited history? (англ.) — как сделать неограниченную историю в tmux (почти неограниченную)

Терминальный оконный менеджер Tmux

Последнее время screen завоевал себе довольно большую популярность. Почти каждый уважающий себя linux‘оид, знаком с этой замечательной утилитой, но многие почему-то забывают что у неё тоже есть альтернатива со своими плюсами, и минусами. Ещё очень давно, когда я только знакомился со screen, то натыкался на упоминание утилиты — tmux. Пару дней назад я решил поближе познакомиться с ней, и описать её в блоге 🙂

Итак. Tmux — это терминальный оконный менеджер, и мультиплексор. Т.е. позволяет использовать несколько терминалов в одном. Tmux так же как и screen можно легко увести в фон, и так же легко вернуться к нему.

Первая версия tmux вышла вместе с OpenBSD 4.6, где заменяет собой screen. Отличительными особенностями являеются:

  • Мощный, последовательный, хорошо задокументированный и простой скриптовый командный интерфейс.
  • Окно может быть разбито вертикально и горизонтально на подокна (регионы).
  • «Подокна» (регионы, фреймы) можно легко двигать, изменять размер и помещать в один из четырёх «макетов».
  • Поддержка UTF-8, и 256 цветов.
  • Копирование и вставка с несколькими буферами (несколько независимых буферов обмена).
  • Интерактивные меню для выбора окон, сессий или клиентов.
  • Блокировка терминала. Ручная, или по таймауту.
  • Чистая, и легко расширяемая база кода под BSD лицензией, находящаяся в активной разработке.
  • Экономное расходование оперативной памяти.
  • Высокая скорость работы.
  • Два варианта комбинаций клавиш: стиль vi и emacs.
  • Клиент-серверная архитектура, при которой окна выполняют роль объектов, которые могут одновременно подключаться к нескольким сессиям, перемещаться между ними и просматриваться с разных клиентов (терминалов).

После запуска, tmux выглядит примерно так:

Сразу же видно первое отличие: строка статуса ( в screen она называется hardstatus) включена по умолчанию, и работает без лишних «телодвижений». Следующее что станет заметно, это другая комбинация клавиш по умолчанию — Ctrl-B , которая при желании меняется крайне просто.

На мой взгляд основное, и главное преимущество tmux перед screen — это «фреймы». Работа с ними похожа на работу в tiled wm. Конечно, в screen тоже есть, но не столь удобное на мой взгляд. К тому же, отсутствует возможность вертикального разбиения окна (патч который добавляет такой функционал, ещё не в стабильной ветке, и когда будет неизвестно). В каждом окне независимые фреймы. В каждом фрейме независимая программа, которая не является ещё одним окном как к примеру screen. Например запустим в окне top. Затем разделим окно вертикально на два фрейма ( Ctrl-» ). В первом фрейме всё так же остаётся top, и есть второй фрейм с шеллом, но окно по прежнему одно! Можно так его и оставить, а можно присоединить уже существующее окно. Это кстати, тоже одно из достойных преимуществ tmux перед screen: более продуманая клиент-серверная архитектура. Внутри окна фреймы можно выравнивать с помощью четырёх различных слоёв ( Ctrl-b Space ).

Теперь немного о стандартных комбинациях клавиш. Как я уже писал, стандартная комбинация — ctrl-b , которая легко меняется, но об этом чуть ниже 😉 Команды следует вводить после префикса (в данном случае Ctrl-b ):

Функция Клавиша
Справка по командам ?
Командная строка :
Увести tmux в фон d
Создать новое окно c
Следующее окно n
Предыдущее окно p
Выбрать окно под соответствующим номером 0-9
Предыдущее окно l
Выбрать окно из списка w
Выбрать сессию s
Разделить окно вертикально «
Разделить окно горизонтально %
Листать «слои» Space(пробел)
Удалить фрейм !
Переместить фрейм вверх <
Переместить фрейм вниз >
Следущий фрейм o
Изменить размеры фрейма Alt + Стрелки
Удалить окно &
Обновить клиент r
Часы t
Найти окно f
Переименовать окно ,
Изменить номер окна .
Перейти в режим копирования [
Вставить содержимое буфера обмена ]

Этого набора клавиатурных сочетаний должно хватить на первых, и не только порах.

После «детача», вернуть tmux на родину можно передав ему параметр attach :

В случае если сессий несколько, то можно посмотреть их список с помощью ls , и выбрать нужную передав к attach ещё и аргумент в виде номера сессии:

Теперь мой файл конфигурации tmux’а. Находиться он должен в $HOME/.tmux.conf :

Думаю, из комментариев понятно что к чему, но хочу уделить особое внимание назначению комбинаций клавиш, и статусбару.

Как видно действия клавишам назначаются с помощью bind-key , которому передаётся ключ -n (новая комбинация), затем клавиша, и выполняемое действие. Помимо внутренних команд tmux’а, можно так же выполнять внешние команды. Вот небольшой пример:

При составлении своих комбинаций клавиш можно использовать дополнительные (не буквенные) клавиши : Ctrl — C, Alt — M, Up, Down, Left, Right, BSpace, BTab, DC(Delete), End, Enter, F$(где $ число от 1 до 20), Home, IC(Insert), NPage(PageUp), PPage(PageDown), Space (пробел), Tab.

Основной префикс так же можно установить так:

Немного о статус баре tmux

Статус бар в tmux делится на две части: левую, и правую. В каждую из частей можно вывести желаемую информацию. Формат довольно простой. Используются специальные символы:

  • #(shell-command) — Любая внешняя команда
  • #[attributes] — Изменение цвета, или атрибута статус бара
  • #H — Имя хоста локального компьютера
  • #F — Текущий флаг окна
  • #I — номер текущего (активного) окна
  • #P — Список всех фреймов
  • #S — Имя сессии
  • #T — Заголовок текущего окна
  • #W — Имя текущего окна
  • ## — Символ решётка — ‘#’

Снова небольшой пример:

Для левой части задётся зелёный цвет, имя хоста и значение по умолчанию. Для правой жёлтый цвет, внешняя команда с аргументами, снова значение по умолчанию, и время в собственном формате с помощью внешней команды date. В примере комбинируются собственные спец. символами, с теми, что по умолчанию.

И последнее о чём хочу сегодня написать — использование в скриптах. В самом начале, я писал что в tmux предоставляет большие возможности для использования его из различных скриптав. Контролировать из командной строки можно почти всё: начиная от перерисовки определённого окна, и кончая изменением размеров фрейма. Я же приведу простой пример, как можно запускать заранее несколько окон с разным набором программ:

Кстати в tmux просто отличный man, который я советую почитать всем заинтересованным в этой программе.

Введение в язык программирования C

C — это достаточно «древний» язык программирования, он сформировался в начале 70-х. Не смотря на это, C — живой язык в том смысле, что он активно применяется в настоящее время. Он был придуман, использовался и используется для написания существенных частей программного кода Unix-подобных операционных систем. Также на нем пишут утилиты, компиляторы и реже прикладные программы. Поэтому C называют системным языком программирования.

Его живучесть можно объяснить тем, что принципы работы операционных систем относительно универсальны, они не подвержены тому прогрессу и разнообразию, которые можно наблюдать в среде десктопного и мобильного ПО, Web-приложений. C не является языком достаточно высокого уровня, он ближе к архитектуре компьютера. В результате программы на C получаются компактными и быстрыми.

C не поддерживает объектно-ориентированного программирования. Поддержка ООП реализована в C++. Хотя последний возник на основе языка C, он не является его «продолжением», а представляет собой отдельный язык, который можно изучать, не зная C. Однако изучение C полезно перед знакомством с его «продвинутым младшим братом», т.к. синтаксис языков похож, C не перегружает мозг начинающего программиста сверхвозможностями и приучает к пониманию сути происходящего.

Подходит ли C для первого знакомства с программированием? Если вы не обучаетесь в вузе по специальности, связанной с IT, то нет. C предполагает понимание организации и принципов работы аппаратного обеспечения, в частности – памяти. Здесь многое делается с помощью указателей, они играют ключевую роль; эта тема достаточно сложная для понимания и обычно не изучается в школе.

Конечно, с помощью C можно изучать основы программирования и не изучать при этом указатели. Однако человек будет думать, что знает C, мало зная о нем по существу. Язык C был создан разбирающимися в устройстве «железа» профессиональными программистами для написания операционной системы UNIX. Его не задумывали как язык для обучения начинающих.

Среды и компиляторы для программирования на C

Если вы пользуетесь одним из дистрибутивов GNU/Linux, вам подойдет любой текстовый редактор с подсветкой синтаксиса, также понадобятся GCC и терминал.

Существуют редакторы для программистов, включающие различные дополнения, в том числе терминал, просмотр каталогов и др. Например, Geany или Atom.

C – компилируемый язык программирования. В GNU/Linux для получения исполняемых файлов используется GCC – набор компиляторов, включающий в том числе компилятор для C. Чтобы из исходного файла (обычно таким файлам дают расширение *.с) получить исполняемый, надо выполнить в терминале команду примерно следующего вида:

, где gcc — команда, запускающая программу, выполняющую компиляцию и иные действия; -o – ключ, сообщающий, что мы вручную указываем имя исполняемого файла; hello – имя получаемого исполняемого файла; hello.c – имя файла с исходным кодом. Имя исполняемого файла можно не указывать:

В этом случае исполняемый файл будет иметь имя по умолчанию a.out.

Для Windows существует свой набор компиляторов – MinGW. Его можно использовать самостоятельно, однако он входит в состав простой среды разработки Dev-C++, которая может оказаться хорошим выбором для обучения программированию на языках C и С++.

При сохранении выбирайте тип файла «C source files (*.c)». Компиляция и запуск программы выполняется при нажатии клавиши F9. После исполнения программа сразу закрывается и результат невозможно увидеть. Чтобы этого не происходило, прописывают две дополнительные строки: #include и getch(). (Возможно это не актуально для более новой версии Dev-C++.)

«Hello World» в GNU/Linux:

«Hello World» в Windows:

С другой стороны, существует большое количество кроссплатформенных сред разработки. Например, Eclipse + модуль CDT, KDevelop, CLion. Последняя платна, выпускается компанией JetBrains – лидером в разработке IDE, однако имеет 30-ти дневный триальный период, чего может быть достаточно для обучения. CLion удобнее других IDE.

«Hello World» на C

На примере простейшей программы сразу отметим некоторые особенности языка программирования C.

В языке C роль основной ветки программы берет на себя функция main(). Эта функция всегда должна присутствовать в законченной программе на языке C, и исполнение программы начинается именно с нее. Однако объявленные внутри нее переменные не являются глобальными, их область видимости простирается только на main(). Тем не менее в языке программирования C почти весь программный код заключается в функции, и функция main() является главной и обязательной.

По умолчанию функция main() возвращает тип данных int, поэтому можно не указывать тип возвращаемых данных. Однако компилятор в этом случае выносит предупреждение.

Функция printf() предназначена для вывода данных. Ее назначение аналогично процедуре write() языка Pascal и функции print() в Python. Функция printf() после вывода не выполняет переход на новую строку. Поэтому для перехода используется специальный символ, который обозначается комбинацией \n. Законченные выражения на языке C разделяются точкой с запятой.

В языке C функции ввода-вывода не являются частью языка. Например, в Python нам не надо импортировать никакой модуль, чтобы пользоваться функциями print() и input(). В C же мы не можем просто вызвать функцию printf(), т.к. в самом C ее просто нет. Эту функцию, а также ряд других, можно подключить с помощью заголовочного файла stdio.h. Именно для этого в начале программы прописана строка #include . Include с английского переводится как «включить», а stdio есть сокращение от «стандартный ввод-вывод (input-output)».

В заголовочных файлах (они оканчиваются на *.h) обычно содержаться объявления тех или иных функций. Объявление — это просто описание функции: какие параметры она принимает и что возвращает. Сам код функции (определение) находится не в заголовочном файле, а в библиотеках (других файлах), которые могут быть уже скомпилированы и расположены в системных каталогах. Перед компиляцией программы запускается препроцессор языка C. Помимо прочего он включает в начало файла программы содержимое указанных в ней заголовочных файлов.

Практическая работа

Закомментируйте 1 первую строчку кода программы HelloWorld. Попробуйте скомпилировать программу. Удалось ли получить исполняемый файл? Какое предупреждение выдал компилятор?

1 // — однострочный комментарий на языке C; /* … */ — многострочный комментарий на языке C.

Начало работы с tmux

Что такое tmux?

По мнению авторов tmux:

tmux представляет собой терминал мультиплексора. Что такое терминальный мультиплексор? Это позволяет легко переключаться между несколькими программами в одном терминале, отделять их (они продолжают работать в фоновом режиме) и прикрепить их к другому терминалу. И сделать намного больше.

Установка tmux

Установка очень проста, если у вас есть Ubuntu или Debian, то установить tmux можно с помощью следующей команды:

После установки для запуска tmux запустите tmux в окне терминала.

Конфигурация и ключевой префикс

Глобальный файл конфигурации находится в файле /etc/tmux.conf и специфичный файл конфигурации пользователя находится в файле

/.tmux.conf. П о умолчанию префикс Ctrl-b но если вы хотите изменить его на Ctrl-a (префикс GNU Screen по умолчанию), необходимо добавить следующий код в ваш файл

Управление сессиями

tmux разработан на модели клиент-сервер, который означает, что сеанс хранится на сервере и сохраняются после выхода из системы SSH.

Следующая команда создаст новую сессию под названием mysession:

Для присоединения к сессии запустите:

Чтобы перечислить все выполняемые сессии:

Вы можете убить сессию, используя следующую команду:

Часто используемые команды сессии

Управление окнами (вкладками)

Каждый сеанс может иметь несколько окон. По умолчанию все окна нумеруются, начиная с нуля.

Часто используемые команды окон (вкладок)

Управление панелью

С tmux, вы можете разделить окна на несколько панелей.

Часто используемые команды панели

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Добавить комментарий