- Online Linux Terminal
- Online Linux Terminal (GNU Bash v4.4)
- How to give program Input?
- Keyboard Shortcuts
- Save Unixterm Project
- Share Unixterm Project
- Запуск и тестирование Linux прямо из браузера
- Рабочий стол Linux в браузере
- Запуск Unix-процессов внутри браузера
- ▍ Компоненты Browsix
- Зачем это нужно?
- ▍ Примеры
- Консоль в браузере
- Десктоп на JavaScript
- Браузер — это операционная система
Online Linux Terminal
We provide you an easy interface to Linux operating system CentOS 8 where you can play with all the Linux commands with a simple user privilege. Linux is a variant of Unix liked operating systems. Following is a list of few important Linux/Unix commands. cat — Display File Contents cd — Changes Directory to dirname chgrp — Change file group chmod — Changing Permissions cp — Copy source file into destination file — Determine file type find — Find files grep — Search files for regular expressions. head — Display first few lines of a file ln — Create softlink on oldname ls — Display information about file type. mkdir — Create a new directory dirname more — Display data in paginated form. mv — Move (Rename) a oldname to newname. pwd — Print current working directory. rm — Remove (Delete) filename rmdir — Delete an existing directory provided it is empty. tail — Prints last few lines in a file. touch — Update access and modification time of a file.
Online Linux Terminal (GNU Bash v4.4)
Online Linux Terminal (GNU Bash v4.4) helps you to Edit, Run and Share your Unixterm Code directly from your browser. This development environment provides you version GNU Bash v4.4.
How to give program Input?
The latest version of Coding Ground allows to provide program input at run time from the termnial window exactly the same way as you run your program at your own computer. So simply run a program and provide your program input (if any) from the terminal window available in the right side.
Keyboard Shortcuts
Shortcut | Description |
---|---|
⌘ + Enter | Run the program |
⌘ + S | Save Project (Login Required) |
⇧ + ⌘ + S | Save As Project |
⌘ + P | New Project |
⌘ + G | Share Project |
⌘ + Z | Undo Editing |
⌘ + Y | Redo Editing |
⌘ + A | Select All Text |
⌘ + X | Cut Selected Text |
⌘ + C | Copy Selected Text |
⌘ + V | Paste Copied Text |
⌘ + F | Search Text |
⌘ + ⌥ + F | Replace Text |
Shortcut | Description |
---|---|
Ctrl + Enter | Run the program |
Ctrl + S | Save Project |
Shift + Ctrl + S | Save As Project |
Ctrl + G | Share Project |
Ctrl + Z | Undo Editing |
Ctrl + Y | Redo Editing |
Ctrl + A | Select All Text |
Ctrl + X | Cut Selected Text |
Ctrl + C | Copy Selected Text |
Ctrl + V | Paste Copied Text |
Ctrl + F | Search Text |
Ctrl + H | Replace Text |
Save Unixterm Project
You can save your Unixterm Project with us so that you can access this project later on. To save a project you will need to create a login Id with us. So before you save a project, please create a login Id using a link given at the top right corner of this page.
Share Unixterm Project
You can use this feature to share your Unixterm Code with your teachers, classmates and colleagues. Just click Share Button and it will create a short link, which can be shared through Email, WhatsApp or even through Social Media. A shared link will be deleted if it has been passive for almost 3 months.
Запуск и тестирование Linux прямо из браузера
Еще не используете ОС на базе Linux и хотите попробовать, либо немного устали от Windows, то следующие онлайн-сервисы помогут вам попробовать Linux без всяких установок прямо через ваш браузер.
Как уже было сказано, преимущество состоит в том, что не нужно ничего устанавливать на компьютер. Все сервисы представляют собой эмуляторы, в точности копирующие настоящую Linux.
Webminal — уникальная платформу онлайн-обучения, где вы можете узнать о Linux, попрактиковаться и поиграть с Linux. Сервис позволяет практиковать команды Linux, писать сценарии bash, создавать таблицы MySQL и обращаться к ним, изучать программирование на Python, C, Ruby, Java, Rust и выполнять основные задачи пользователя root на виртуальной платформе.
DistroTest — предлагает множество операционных систем, которые вы можете протестировать прямо в режиме онлайн без установки. Для операционной системы нет ограничений: вы можете использовать все функции системы, удалять и устанавливать программы и даже удалять или форматировать жесткий диск или системные файлы.
JSLinux — это полнофункциональный эмулятор Linux, разработанный на JavaScript и полностью работающий в любом браузере.
copy.sh — позволяет запустить эмулятор как Linux, так и множества других операционных систем, таких как Windows, React OS и многие другие.
JS/UNIX — это простой терминал Unix-подобной системы, где с помощью гостевого логина вы можете практиковаться в различных командах.
WebVM — виртуальная среда Linux, полностью работающая через браузер. Используется модифицированный дистрибутив Debian, включающий множество инструментов разработки.
Конечно же это далеко не все эмуляторы операционных систем. Однако описанных в данной статье может быть достаточно, чтобы протестировать Linux или любую другую систему.
Рабочий стол Linux в браузере
Первый в мире браузер (1993 года) выполнял две функции:
- рендеринг HTML;
- переход по гиперссылкам (навигация, браузинг — отсюда и название «браузер»).
Современный браузер эволюционировал в сложнейшую мета-систему, которая по объёму кода превосходит ядра многих ОС. Более того, браузер де-факто может работать как операционная система. И не только в Linux-виртуалке (как ChromeOS), но как реальная платформа для запуска настоящих приложений, в том числе нативных программ на C, C++, Go и Node.js.
Запуск Unix-процессов внутри браузера
Для доказательства этой концепции был разработан экспериментальный проект Browsix. Мотивы создания Browsix и архитектура системы описаны в научной статье (doi: 10.1145/3037697.3037727). Очень странно, но этот уникальный проект 2017 года ни разу не упомянут на Хабре.
Если в двух словах, Browsix запускает оригинальные, немодифицированные программы C, C++, Go и Node.js в браузере клиента как процессы Web Workers в окружении POSIX, работающие параллельно друг с другом и с основным браузерным потоком, который рендерит страницы.
Browsix перехватывает системные вызовы и обеспечивает программам доступ к стандартным сервисам ОС, таким как общая файловая система и процессы. Есть также ограниченная поддержка синхронного I/O и сокетов TCP/IP.
В отличие от интерпретаторов типа Cygwin, сам Browsix не выполняет интерпретацию кода. Он предоставляет общее ядро и примитивы вроде системных вызовов для существующих интерпретаторов и режимов выполнения, ориентированных на JavaScript.
Основные модули Browsix написаны на TypeScript (первые три строки в таблице).
▍ Компоненты Browsix
Компонент | Строк кода |
---|---|
Ядро | 2249 |
Модификации BrowserFS | 1231 |
Общий модуль syscall | 421 |
Интеграция с Emscripten (поддержка С/С++) | 1557 |
Интеграция с GopherJS (поддержка Go) | 926 |
Интеграция с Node.js | 1742 |
Всего | 8126 |
Например, разработчики расширили компиляторы GopherJS и Emscripten, чтобы они могли работать с их общим ядром, так что процессы, написанные на C и Go, могут работать параллельно (в отдельных веб-воркерах) и взаимодействовать через каналы, сокеты и файловую систему в браузере (как в стандартной среде Unix).
Зачем это нужно?
В современной концепции разработки интерактивные веб-приложения обычно разделяются на серверную и клиентскую части:
Вместо того чтобы поддерживать серверную часть приложения из существующих Unix-программ, разработчик просто переносит их в браузер клиента. Кроме всего прочего, это устраняет целый класс проблем безопасности (программы явно будут иметь доступ только к данным текущего пользователя на вкладке браузера) и масштабирования.
▍ Примеры
Посмотрим на примеры приложений, которые работают внутри Browsix.
- Терминал даёт доступ к внутренностям Browsix через стандартную консоль POSIX (по крайней мере, так было задумано, в реальности многое сейчас не работает):
(скриншот с офсайта)
Сейчас редактор запускается не во всех браузерах (у нас не загрузилось в Firefox Nightly 105.0a1 и Chrome 104.0.5112.81). Но по старым скриншотам видно, что его функциональность сравнима с коммерческими веб-редакторов LaTeX, таких как Overleaf:
Overleaf
Теоретически, в Browsix можно загрузить любую программу. Хотя разработчики давно не обновляли движок и он сейчас немного глючит. Но это эксперимент, который демонстрирует, что запуск произвольных бинарников в принципе возможен.
Консоль в браузере
Терминал Browsix — не единственная реализация консоли Unix в браузере. Из известных разработок вспоминается утилита GoTTY, которая отправляет выдачу консоли в браузер клиента:
А если объединить этот инструмент с эмулятором операционной системы в браузере, то получается нечто такое.
Десктоп на JavaScript
JavaScript позволяет реализовать в браузере вполне правдоподобное десктопное окружение. Это отличная демонстрация современных веб-технологий. Хотя понятно, что JS работает на порядок медленнее, чем любой нативный код.
Если развернуть на весь экран и пощёлкать по иконкам, то создаётся смутное впечатление обычного десктопа Windows, только на очень старом железе (из-за больших лагов). А так тут есть меню «Пуск», папки, рабочий софт, игры.
Ещё один похожий проект — Puter, тоже сделанный за год одним человеком. Только здесь GUI рабочего стола больше напоминает macOS или Linux, и кажется немного симпатичнее. Создаётся ощущение, что здесь лаги поменьше. Например, изменение размера окон и перемещение их по экрану вообще не тормозит. Правда, встроенный набор приложений гораздо более скудный. Ни игр, ни другого софта, только консоль.
В отличие от разработчиков консоли Browsix, здесь автор реально принимает баги, извиняется и исправляет ошибки. Десктоп нормально работает во всех основных браузерах последних версий.
Браузер — это операционная система
Примеры создания полноценных десктопных окружений внутри браузера демонстрируют в том числе невероятную сложность современного браузера. То есть браузер — это альтернативная (универсальная) платформа для разработки приложений. Там можно реализовать все функции нативных программ Linux, Windows или macOS.
В принципе, в браузере можно запустить эмулятор конкретной операционной системы — и уже в нём запускать все нативные программы, в том числе другие браузеры, а в них другие операционные системы и так далее. Как шутят на реддите, главное — не гуглить Google, запустив браузер внутри браузера, и не вешать чужие терминалы командой rm -rf / .
Ещё в далёком 2012 году JSLinux от Фабриса Беллара стал первым эмулятором, способным загружать в браузер произвольные операционные системы. Он изначально поддерживал следующие ОС:
CPU | ОС | Интерфейс | Доступ к VFsync | Ссылка на загрузку | Конфигурация TEMU | Комментарий автора |
---|---|---|---|---|---|---|
x86 | Alpine Linux 3.12.0 | Консоль | Да | нажмите здесь | url | |
x86 | Alpine Linux 3.12.0 | X Window | Да | нажмите здесь | url | Правая кнопка мыши вызывает меню. |
x86 | Windows 2000 | Graphical | Нет | нажмите здесь | url | Дисклеймер о снятии ответственности |
x86 | FreeDOS | Текстовый VGA | Нет | нажмите здесь | url | |
riscv64 | Buildroot (Linux) | Консоль | Да | нажмите здесь | url | |
riscv64 | Buildroot (Linux) | X Window | Да | нажмите здесь | url | Правая кнопка мыши вызывает меню. |
riscv64 | Fedora 33 (Linux) | Консоль | Да | нажмите здесь | url | Предупреждение: долгое время загрузки. |
riscv64 | Fedora 33 (Linux) | X Window | Да | нажмите здесь | url | Предупреждение: долгое время загрузки. Правая кнопка мыши вызывает меню. |
Более современная версия этого эмулятора — виртуальный x86, на который можно загрузить 25 разных операционных систем, включая Arch Linux и Damn Small Linux. Всё это работает чисто в браузере.
Для удалённого управления другим компьютером тоже не требуется ничего, кроме браузера — см. Apache Guacamole, который поддерживает все стандартные протоколы типа VNC, RDP и SSH.
В принципе, через Guacamole можно управлять «настольными компьютерами», которые физически даже не существуют, а живут в облаке или в контейнере на каком-нибудь хостинге, то есть виртуальными системами.
Кстати, из этой невероятной функциональности современного браузерного движка следует вывод, что разработать с нуля ещё одну махину, сравнимую с Chromium, очень трудно. И если исчезнет единственный на платформе x86 альтернативный движок Gecko (Firefox, FirefoxOS), то уже никто не сможет составить ему конкуренцию.
Ну а по сути современный браузер — уже сам по себе операционная система. Программы любой сложности при желании можно переписать на WebAssembly, asm.js или скомпилировать в JavaScript — и они будут работать в браузере.