Теперь вкратце про основное программное обеспечение, важное для начала работы с операционной системой, и некоторые базовые понятия и сведения..
Графическая среда rio
В случае успешной установки и перезагрузки мы попадаем в стандартную графическую оболочку rio:
Почти стандартный вид оболочки. Канонически, на скриншотах обязательно присутствует программка часов в виде кота, но было принято решение ломать систему. Отображена консоль, в которой можно заметить команду, с помощью которой этот скриншот и был создан. Итак, при начальных стандартных настройках мы увидим сплошной серый экран и небольшое приложение с системной информацией, дающее нам возможность понять, что система успешно загрузилась. Оболочка рассчитана на активное использование мыши, причем в основном используются ее правая и средняя клавиши. Средней кнопкой является колесо мышки, в случае тачпада ноутбука ее можно эмулировать, нажимая правую и удерживая Shift
. Меню правой кнопки мыши содержит команды управления окнами. Выбрав пункт New
мы можем создать новое окно консоли. Курсор примет форму крестика. Нажав правой мышкой на свободном участке экрана обозначим верхний левый угол будущего окна. Не отпуская мышь ведем ее по диагонали будущего окна в точку, в которой желаем установить правый нижний его угол. Созданное окно потом можно растянуть, зацепив за границу левой мышкой либо командой меню Resize
. Перемещать окно по экрану можно зацепив границу правой мышкой, либо командой меню Move
. Команда Delete
удаляет окно прибивая задачи, запущенные в нем. Команда Hide
позволяет с свернуть окно, список свернутых окон будет присутствовать внизу меню правой мыши. Команда Exit
позволяет указать окно, которое следует закрыть. С этой командой надо быть осторожным - промахнувшись и нажав на свободном участке экрана мы закроем rio со всеми запущенными в нем задачами.
Меню средней кнопки содержит команды операций. Меню не появляется, пока не открыто ни одного окна консоли. Кроме самоочевидных команд Cut
и Paste
в меню присутствует команда Snarf
- это копирование. Команда Plumb
вызывает ассоциированное приложение или команду. Команда Send
оправляет выделенный в консоли фрагмент на исполнение. Команда Scroll
включает прокрутку окна консоли, которая по умолчанию не включена. На постоянной основе это можно настроить, запуская rio с параметром -s, но скроллирование может оказаться неудобным, если к примеру приходится часто читать manpages. Еще присутствует команда Look
, но ее предназначение неочевидно.
Консоль
Основное и пожалуй единственное приложение оболочки rio. Все остальные приложения, запускаемые в оболочке, запускаются из ее окна и отрисовываются в нем же. В консоли также можно запустить и копию оболочки rio, в которой в свою очередь также можно открывать окна консоли и в них другие приложения.
В открывающейся консоли запускается командный интерпретатор rc, позволяющий исполнять команды, запускать программы и составлять скрипты. Говоря о консоли, в первую очередь подразумевается взаимодействие именно с интерпретатором. Владение скриптовым языком критически важно практически в любом взаимодействии с системой, поэтому будет рассмотрен позже в отдельной статье.
Консоль достаточно непривычна и обладает слегка неожиданным поведением. Курсор может находиться в любом месте окна - в истории вывода, внутри приглашения командной строки. В месте расположения курсора возможно редактирование вставка и удаление текста до или после курсора. Нажатие на Enter
в этом случае вводит перевод строки, поэтому вводя команды надо быть внимательным и замечать, где расположен курсор. У консоли есть несколько практически важных клавиатурных команд:
-
Ctrl+A
- переместить курсор в начало набираемой команды -
Ctrl+B
- переместить курсор в точку актуального приглашения командной строки -
Ctrl+E
- переместить курсор в конец набираемой команды -
Ctrl+F
- автодополнение, вывод списка вариантов для него -
Ctrl+W
- удаление слова перед курсором
Стрелки ↑
и ↓
, PageUp
и PageDown
, Home
и End
прокручивают окно консоли вверх или вниз. Удерживая Shift
стрелками ↑
и ↓
можно перемещать содержимое окна построчно.
Как уже упоминалось, по умолчанию прокрутка консоли отключена и ее можно включить для конкретного окна командой меню средней мышки, либо глобально для всех окон - параметром -s при запуске rio. Также полезной опцией запуска rio может оказаться -b - смена фона окна консоли с белого на черный.
Acme
Второе по важности приложение в графической среде rio, после консоли конечно же. В общих чертах об acme говорят как о текстовом редакторе. Однако это полноценная, самодостаточная мультифункциональная рабочая среда, позволяющая проводить не только редактирование текстовых файлов, но и многие другие функции. В зависимости от произведенных настроек acme можно использовать в качестве в качестве файлового менеджера, почтового клиента, интернет браузера, редактора встроенной вики итд. acme даже может заменить rio и исполнять роль графической оболочки.
Интерфейс acme состоит из главного окна, внутри которого располагаются вертикальные колонки. Файлы открываются в окнах, уже внутри этих колонок. Все элементы, включая главное окно изменяют размер и могут перемещаться. Открытое окно можно перетащить в другую колонку, но не в другое окно другой запущенной копии acme.
На скриншоте представлен режим работы с текстовым файлом. При запуске из консоли acme с параметром редактируемого файла он открывается в одной из колонок программы. Справа видна другая колонка, отображающая содержимое домашнего каталога. Ее можно использовать к качестве файлового менеджера, щелкнув правой мышкой на файле или каталоге.
Интерфейс acme традиционно также необычен, причем необычность эта оказывается тем больше, чем больше изучаешь устройство и методы работы с этим редактором. Первой необычностью окажется то, что все элементы интерфейса являются редактируемыми, более того - являются текстовыми. И даже более того, любой элемент интерфейса можно использовать в качестве консольного ввода команды. Выполнение команды осуществляется нажатием правой мышки на написанной команде (если это одно слово без пробелов), либо при выделении правой мышкой нужного участка написанного текста (если к примеру надо запустить команду с параметрами). На скриншоте как раз отображен пример написанной команды создания скриншота, которая при выделении правой мышкой создает его в домашней директории.
Управление мышью и клавиатурой
Подробнее об элементах интерфейса и управлении. По открытому файлу можно перемещаться при помощи стрелок - курсор перемещается вдоль строки клавишами ←
и →
, однако клавиши ↑
и ↓
прокручивают экран, не перемещая курсор. PageUp
и PageDown
также прокручивают экран, но курсор при этом перемещается в видимую часть экрана, однако Home
и End
, прокручивающие файл в начало и конец, курсор не перемещают. Удаление текста проводится клавишей BackSpace
, клавиша Del
текст не удаляет, а печатает управляющий спецсимвол.
Колесо мыши прокручивает окно с редактируемым текстом. Скроллбары колонок находятся слева каждой колонки. Левой и правой мышкой осуществляется быстрая прокрутка вверх или вниз соответственно. Средней мышкой, удерживая ее, можно перемещать ползунок в нужное место.
Левая, правая и средняя клавиши мышки могут использоваться для различающихся режимов выделения. Левая мышь выделяет в режиме редактирования - выделенный текст можно скопировать или удалить. Правая мышь пытается запустить содержимое выделенного фрагмента на исполнение. Средняя мышь пытается определить тип содержимого в выделенном фрагменте и запускает приложение, ассоциированное с данным типом.
Тулбары
Тулбар acme расположен вверху окна и является составным. Самая верхняя часть - глобальный тулбар всего окна acme. На нем расположены команды:
-
Newcol
- создание новой колонки. -
Kill
- прибивает процессы, порожденные acme. -
Putall
- сохранить все открытые файлы. -
Dump
- сохранить состояние рабочей среды - все открытые окна. По умолчанию сохраняется в файл $home/acme.dump. Запуск с опцией -l загружает сохраненную конфигурацию. -
Exit
- закрыть acme полностью.
У каждой колонки есть свой тулбар с командами:
-
New
- создать новое окно. -
Cut
- команда вырезки в текстовом окне выделенного фрагмента. -
Paste
- вставка в активное текстовое окно. -
Snarf
- копирование выделенного фрагмента. -
Sort
- сортировка открытых окон колонки. -
Zerox
- создание копии текущего окна. Работа в нем синхронно отображается и в исходном. -
Delcol
- удаление колонки и закрытие всех ее окон.
Слева от команды New
сиреневый прямоугольник, за который можно тянуть левой мышкой и изменять ширину колонки. Поменять колонки местами можно, потянув прямоугольник левой колонки по горизонтали в крайне правое положение.
У каждого открытого в колонке окна также имеется свой тулбар. Команды в нем:
-
Del
- закрыть окно. -
Snarf
- скопировать выделенный текст. -
Undo
- отмена изменений. -
Put
- сохранить изменения (появляется в тулбаре при изменении открытого существующего файла). -
|
- (в теории) подставляет вместо выделенного фрагмента результат его выполнения. -
Look
- поиск по выделенному фрагменту.
Слева от команды Del
указан полный путь и имя открытого файла. А еще левее - прямоугольник, зацепив мышкой за который можно перемещать окно между колонками или в пределах своей. Прямоугольник светлый, но становится синим при наличии несохраненной модификации файла. Нажимая мышкой можно перелистывать открытые окна и менять их размеры. В свернутом виде тулбары окон размещены вверху или внизу колонки. Их можно совсем скрыть нажав левую мышь на прямоугольник активного окна, а потом снова показать, нажав правой. При нажатии правой мышкой на тулбар свернутого окна оно разворачивается на всю колонку.
Sam
Еще один важный и не менее странный текстовый редактор - sam:
Редактор разрабатывался основываясь на принципах редактора ed, поэтому во многом схож с ним по методам работы и общей концепции. Также как и sam, sam является потоковым редактором с возможностями интерактивной, не интерактивной работы, а также в графическом или текстовом режиме. Редактор умеет исполнять команды с регекспами, редактировать срезу несколько файлов итд. При всех достоинствах редактору не хватает визуальности.
Файл(ы) можно открыть запустив sam из консоли с параметром 1 и более файлов. После чего открывается основное окно редактора. В нем сверху расположено командное окно, а снизу окно с файлами для редактирования. В момент запуска оно пусто. Для явного открытия файла жмем правую мышку и в появившемся меню выбираем опцию с именем подгруженного файла. При этом курсор становится в виде кружка с крестиком. В этом режиме надо щелкнуть мышью в пределах окна sam и протащить ее по диагонали будущего окна с содержимым файла. По аналогии с созданием окна консоли. Для выхода из редактора пишем в командном окне q и нажимаем Enter
.
Ed
ed это один из первых в компьютерном мире текстовых редакторов. Был создан еще в начале 70-х г.г. и сохранился с тех пор практически в неизменном виде. Редактор оперирует строками, работа основана на командах, визуализация работы минимальна, поскольку редактор разрабатывался еще до того, как у компьютеров появились мониторы и вывод осуществлялся на телетайп. Для повседневной работы важность этого редактора спорна, однако научиться владеть им все же стоит. Во первых, это не сложно - редактор простой, даже еще проще чем sam, не говоря уже про acme. Во вторых, может возникнуть к примеру ситуация, когда в результате ошибки в загрузочном файле система прерывает загрузку в самом начале и выбрасывает в чистую консоль. acme без минимальной графической поддержки не запустится, из вариантов только ed и sam. Но ed проще и удобнее.
Описание и методы работы с редактором хорошо и кратко описаны в ed (1), тем не менее дополнительное описание, созданное по результатам личного опыта, лишним не будет. Это лишь более краткая и упрощенная статья по редактору, для более подробного описания следует обращаться к мануалу.
Идея редактора в следующем. Редактор работает с временным буфером, в который загружается файл и весь процесс редактирования происходит в этом буфере. По окончании редактирования необходимо перезаписать исходный файл на диске содержимым буфера. Интерфейс редактора рассчитан на работу со строками и представляет собой поле ввода управляющих команд. Методом перемещения по файлу служит адресация - у каждой строки файла есть номер, начиная с 1го. Удобнее думать об адресации строк, как о положении курсора на той или иной строке, в современных редакторах. При загрузке файла редактор переключается на самую последнюю строку. По умолчанию, вводимая команда применяется к текущей строке. Для того что бы выполнить команду для другой строки, перед командой надо указать номер нужной строки, либо сначала перейти на нее. В редакторе нет разделения для областей ввода команд и отображения редактируемого текста, поэтому в процессе редактирования легко попутать редактируемые строки и введенные ранее управляющие команды. Команды вводятся по одной за раз, но в определенных случаях команды можно комбинировать, например ,n
.
Запуск
Запускается ed с параметром редактируемого файла, либо с именем еще не существующего, либо без параметров и затем указывая команду e filename.txt
. При запуске с параметром существующего файла ed отображает количество символов в файле и в следующей строке ждет ввода команды. Неправильно введенная или непонятая команда отображает знак вопроса.
Список основных команд
-
.
- Точка. Выход из режима редактирования. При успешном выходе отображает последнюю строку. При переходе между строками точкой можно выводить содержимое текущей строки. -
,
- Запятая. Вывод всего содержимого от первой до последней строки. Пронумерованный список строк можно вывести комбинированной командой,n
. -
N
- Переход к строке с определенным номером. Тут N - число, номер строки. Номер можно узнать комбинированной командой,n
. -
!
- Выполнение системной команды. Введенная после!
команда исполнится, но ее вывод не записывается в редактируемый текст. Если нужно добавить в файл вывод команды, можно поступить следующим образом: вводим команду!
с указанием системной команды и с перенаправлением в файл (например так:!ls >filename
), затем командойr filename
уже подгружаем содержимое в редактируемый файл. -
$
- Переход к последней строке файла. -
a
- Переключение в режим ввода. Все что вводится после этого интерпретируется как ввод текста, переход на следующую строку и дальнейший ввод текста. Выход из режима - точка в отдельной строке и нажатиеEnter
(возможно дважды, точку иEnter
). Вставляемая строка запишется после текущей (см. также командуi
). Для вставки строки в определенную позицию, перед буквой команды надо указать адрес строки. Если вместоa
набирать комбинированную командуan
, то после процедуры редактирования строка отобразится вместе со своим номером. -
c
- Замена строки. Перед заменой строки командой.
илиn
можно вывести исходную строку, а затем уже ввестиc
и вводить новое содержимое. -
d
- Удаление текущей строки. Если перед буквой команды ввести число - удаляется строка с этим номером. -
e
- Загрузка файла в редактор. Если в редакторе был открыт другой файл, его содержимое в буфере теряется, поэтому перед открытием нового файла сначала надо сохраниться (командаw
). -
f
- Вывод имени редактируемого файла. Если редактируется несуществующий файл, данная команда присваивает ему имя. Чтобы потом, забыв, не выйти без сохранения результатов, желательно начать с этой команды, указав после пробела имя файла. -
i
- Вставка строки перед текущей (см. также командуa
). Комбинированная командаin
после выхода из редактирования отобразит новую строку и ее номер. -
n
- Отображение номера текущей строки и ее содержимого. Команду можно комбинировать с другими. -
p
- Печать последней строки. -
q
- Выход из редактора. Перед выходом надо ввестиw
, иначе результаты редактирования будут утеряны. -
r
- Добавить содержимое файла, имя которого указывается после команды. Содержимое файла добавится в конец редактируемого, либо если перед буквой указать номер строки - после нее. Для того чтобы не выходить из редактора, можно поступить следующим образом: сначала командой!ls
выводим содержимое каталога, затем командой!cat filename
выводим содержимое файла, и затем командойr filename
можно добавить это содержимое в буфер редактируемого файла. -
s
- Поиск и замена в нотации regexp. -
u
- Отмена последней правки. -
v
- Инверсия поиска - вывод строк, не удовлетворяющих шаблону. -
w
- Запись содержимого буфера в файл на диске.
Процесс редактирования
Для добавления строки вводим a
, жмем Enter
, затем вводим текст строки и снова жмем Enter
. Продолжаем вводить строки, заканчивая их нажатиями на Enter
. Чтобы завершить ввод, в следующей строке набираем точку и жмем Enter
, затем еще раз точку и Enter
- редактор выводит последнюю введенную строку. Можно продолжить ввод, снова введя a
и повторив вышеописанные шаги. Команда p
выводит последнюю строку редактируемого текста, а команда ,
- все его содержимое.
Чтобы перемещаться между строками, сначала надо убедиться, что редактор не находится в режиме ввода. Это можно сделать командой .
. Далее вводим номер строки и жмем Enter
- отобразится строка с введенным номером. Чтобы ориентироваться в тексте, номер текущей строки можно вывести командой n
. Переключаться на другие строки вниз или вверх по тексту можно вводя, соответственно +N
-N
, где N - число строк начиная от текущей. Для перехода к последней строке вводим $
.
Для редактирования строки сначала надо переместиться на нее. Затем командой c
переключаемся в режим замены и вводим новое содержимое строки. Ввод заканчиваем точкой в новой строке. Редактор умеет заменять текст с синтаксисом regexp. Для этого перейдя на нужную строчку набираем конструкцию типа такой: s/было/стало/
.
Результат редактирования хранится во временном буфере редактора, и перед выходом из него надо записать изменения в файл на диске. Это делается командой w
. Редактор отобразит число символов в файле.
Поиск
Редактор осуществляет поиск, используя синтаксис regexp. Находит первую строку и в случае успеха переключается на нее. Для поиска всех вхождений перед первым слешем пишем символ g. В документации оговаривается, что regexp заключенный в прямые слеши делает поиск вниз по файлу, а заключенный в знаки вопроса - от текущей строки к началу файла. Но по факту (по крайней мере в версии редактора, поставляемой с 9front) обе формы ищут по всему файлу.
Как уже упоминалось ранее, редактор может осуществлять поиск с заменой, командой в виде s/было/стало/
- для текущей строки, или Ns/было/стало/
для определенной строки с номером N. Можно вводить несколько шаблонов, по одному в каждой строке, поэтому по окончании ввода шаблонов надо в отдельной строке ввести точку. Замена однократная. Для применения шаблона ко всей строке, в конце применяется модификатор g: s/x/X/g
или Ns/x/X/g
. Поиск и замена всех вхождений по всему файлу: 1,$s/x/X/g
. Тут перед командой указан диапазон строк от первой до последней. Редактор устанавливается на последнюю из модифицированных строк.
Выход
Для выхода надо нажать q
и затем Enter
(возможно, повторить это дважды). Редактор не проверяет перед выходом, производилась ли запись буфера в файл, поэтому перед выходом желательно ввести команду w
. Также команда w
предупредит, если был создан новый файл, а имя ему еще не было присвоено.
Браузеры
Имеются как штатные браузеры, так и разработанные третьими лицами. Вопрос браузеров объемный, поэтому будет рассмотрен позже в отдельной статье.
Nein Commander
Теперь о софте, не являющемся штатной комплектацией, но достаточно важны и крайне рекомендуются к установке и использованию.
Nein Commander - это двух панельный файловый менеджер, очень скромный аналог Midnight Commander в Linux. Предельно простой и созданный, надо полагать, на скорую руку. Функциональные возможности минимальны, стабильность работы тоже оставляет желать лучшего. Однако это все таки файловый менеджер, у которого имеются файловые панели, есть возможность манипуляции с каталогами, файлами, просмотра по F3
и перенаправление в обработчик по F4
. Эти возможности существенно упрощают и ускоряют процесс изучения и работы с операционной системой и ее элементами.
Для установки необходимо скачать исходники, распаковать и скомпилировать. Процесс происходит быстро и без ошибок:
cd /tmp
hget https://github.com/telephil9/nc/archive/refs/heads/front.zip | unzip -s
cd nc-front
mk
mk install
Теперь в консоли набираем nc
и программа готова и использованию. Никаких настроек у него нет, представляет из себя единственный исполняемый файл, размещаемый после сборки в /bin. У программы по F1
есть небольшая справка. Nein Commander умеет обрабатывать вращение колеса мыши, но не любит - иногда в процессе прокрутки программка может зависнуть. Поэтому злоупотреблять колесом мышки не стоит. Также программа плохо отрабатывает права доступа файлов и каталогов - может упасть при попытке открыть файл или зайти в каталог, для которых нет прав. Особенно часто это происходит в примонтированных сетевых ресурсах - там ситуация с правами еще сложнее чем в локальной файловой системе, накладываются системные условия и конфигурация сетевого сервиса.
Drawterm
drawterm - это терминальная программа для подключения к удаленному рабочему столу, если выражаться в терминологии Windows. Тема установки, настройки и использования также достаточно объемна, поэтому тоже будет рассмотрена в отдельной статье.