Почему программисты используют linux?

C# Linux Xamarin Development:

We do not develop apps in Linux with the help of Xamarin but we can develop an application for Android using Xamarin.  Android is using the Linux kernel for the operating system.  It also uses the Java Virtual Machine within which the applications run.  It is therefore important for a developer to have good knowledge of Android and Java to be able to write applications for Android.

C# Linux

But the situation has changed in favor of C# Linux.  With the help of Xamarin developers are able to develop applications for Android using C# programming language.  It is very easy to learn and it mostly uses the Microsoft UWP development paradigm.

If you are a new C# developer do not worry that you can not target the largest OS segment, android yet.  With the help of Xamarin, we can easily write applications for Android and iOS from within Windows.

This makes Xamarin have projects compile to Android, iOS, and Windows at the same time.  The result is the ability to develop android applications using C#.  It is a very powerful platform and many large companies use this as the front end technology for large business services.

Компилятор GCC. Первая программа на Windows

Последнее обновление: 18.05.2017

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

При запуске установщика откроется следующее окно:

Нажмем на кнопку Next > и перейдем к следующему шагу:

Если версия ОС 64-битная, то в поле следует выбрать пункт x86_64. Остальные настройки
оставим по умолчанию и нажмем на кнопку Next >. На следующем шаге укажем путь, по которому будет устанавливаться пакет:

Можно оставить настройки по умолчанию. И после перехода к следующему шагу собственно начнется установка.

После завершения установки на жестком диске по пути, которое было выбрано для установки, появятся все необходимые файлы компиляторов.
В моем случае они находятся по пути C:\Program Files (x86)\mingw-w64\i686-7.1.0-posix-dwarf-rt_v5-rev0\mingw32\bin:

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

В частности, файл gcc.exe как раз и будет представлять компилятор для языка Си.

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

И добавим путь к компилятору:

Итак, компилятор установлен, и теперь мы можем написать первую программу. Для этого потребуется любой текстовый редактор для набора исходного кода.
Можно взять распространенный редактор Notepad++ или даже обычный встроенный Блокнот.

Итак, создадим на жестком диске папку для исходных файлов. А в этой папке создадим новый файл, который назовем hello.c.

В моем случае файл hello.c находится в папке C:\c.

Теперь определим в файле hello.c простейший код, который будет выводить строку на консоль:

#include <stdio.h>		// подключаем заголовочный файл stdio.h
int main(void)					// определяем функцию main
{								// начало функции
	printf("Hello World! \n");	// выводим строку на консоль
	return 0;					// выходим из функции
}								// конец функции

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

#include <stdio.h>

Директива include подключает заголовочный файл stdio.h, который содержит определение функции printf, которая нужна для вывода строки на консоль.

Далее идет определение функции int main(void). Функция main должна присутствовать в любой программе на Си, с нее собственно и начинается
выполнение приложения.

Ключевое слово int в определении функции говорит о том, что функция возвращает целое число.
А слово void в скобках указывает, что функция не принимает параметров.

Тело функции main заключено в фигурные скобки {}. В теле функции происходит вывод строки на консоль с помощью функции printf, в которую передается выводимая строка «Hello world!».

В конце осуществляем выход из функции с помощью оператора return. Так как функция должна возвращать целое число, то после return указывается число 0.
Ноль используется в качестве индикатора успешного завершения программы.

После каждого действия в функции ставятся точка с запятой.

Теперь скомпилируем этот файл. Для этого откроем командную строку Windows и вначале с помощью команды cd перейдем к папке с исходным файлом:

cd C:\c

Чтобы скомпилировать исходный код, необходимо компилятору gcc передать в качестве параметра файл hello.c:

gcc hello.c

После этого будет скомпилирован исполняемый файл, который в Windows по умолчанию называется a.exe. И мы можем обратиться к этому файлу, и в этом случае консоль выведет
строку «Hello World!», собственно как и прописано в коде.

НазадВперед

1-е место — Ubuntu

Топ 1 нашего рейтинга —  операционная система Ubuntu, является широко распространенной версией Linux, в свое время основанной на другом дистрибутиве – Debian.

Впервые о выходе Ubuntu заявили в 2004 году. Несмотря на относительную новизну, развиваться он начал стремительно. Пройдя тернистый путь популяризации длинной в 15 лет, Ubuntu занимает место самой популярной версии Linux для настольных компьютеров. Этот проект сделал очень много для разработки простой и удобной в использовании, бесплатной операционной системы для настольных компьютеров. Сегодня дистрибутив Ubuntu успешно конкурирует как со свободными, так проприетарными ОС.

В чем причины потрясающего успеха Ubuntu? Среди главных выделяют Марка Шаттлворта — автора проекта.  Участвовавший ранее до Ubuntu в разработке Debian, Шаттлворт является мультимиллионером, владеющим компанией Canonical Ltd, которая и финансирует проект в настоящее время.

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

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

Фактически, Ubuntu основывается на нестабильной ветке дистрибутива Debian, включив в себя такие распространенные пакеты, как — GNOME, LibreOffice, Firefox и др., обновив их до стабильных версий. Этот дистрибутив Linux выходит с предсказуемым шестимесячным графиком, периодически выпуская версии с долгосрочной поддержкой (LTS), которые поддерживаются обновлениями безопасности на протяжении 5 лет. Выпуск без LTS, в свою очередь, поддерживается 9 месяцев.

Особенности дистрибутива линукс Ubuntu:

  • дистрибутив основывается на Debian;
  • вход под суперпользователем отключен. Для получения полномочий суперпользователя используется утилита sudo;
  • доступны варианты дистрибутивов с разными пакетами графических оболочек — GNOME — по умолчанию в версии 18.04, KDE – Kubuntu, Xfce – Xubuntu, LXDE/ LXQt – Lubuntu и другие.
  • в версии Ubuntu 18.04 сбор пользовательских данных включён по умолчанию (возможно отключить);
  • ядро Linux версии 4.15 в LTS версии;
  • проект разрабатывается и поддерживается компанией Canonical.

Плюсы дистрибутива Ubuntu

  • исправлен цикл релиза и период поддержки, в сравнении с Debian;
  • наличие долгосрочной поддержки (LTS) с 5-летним сроком предоставления обновлений безопасности;
  • интерфейс, дружественный для начинающих;
  • множество как официальной, так и пользовательской документации;
  • широко распространенный дистрибутив с обширным комьюнити, большим количеством репозиториев и широкой возможностью выбора программ для установки.
  • поддержка новейших технологий «из коробки» — к примеру, 3D эффекты графической оболочки и элементов рабочего стола;
  • простая установка проприетарных драйверов для различных устройств беспроводных сетей и видеокарт NVIDIA и ATI;
  • возможность выбора варианта дистрибутива с менее требовательной графической оболочкой.
     

Минусы:

  • отсутствие совместимости с дистрибутивом Debian;
  • часто выходящие важные изменения дистрибутива, как правило, отталкивают некоторых пользователей;
  • не LTS релизы поставляются только с 9-месячной поддержкой безопасности.

Минимальные системные требования дистрибутива Ubuntu:

  • 2 GHz dual core процессор;
  • 2 GiB – доступная оперативная память;
  • 25 GB – свободного места на жестком диске;
  • CD/DVD привод или USB порт для.

Использование динамических библиотек

Существует два различных метода использования динамических библиотек из приложения, впервые
появившиеся в ОС Sun Solaris. Первый, традиционный способ, который мы уже рассматривали, – это
динамическая компоновка приложения с совместно используемой библиотекой. При этом
способе загрузка библиотеки при запуске приложения выполняется операционной системой.

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

Вместо этого библиотека libdl.so (компонуемая к приложению) предоставляет для работы с
динамическим загрузчиком интерфейс, содержащий 4 функции:

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

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

  • — разрешение адресов по именам объектов происходит
    только для используемых объектов (это не относится к глобальным переменным — они разрешаются
    непосредственно в момент загрузки);
  • — разрешение всех адресов происходит до возврата
    из функции;
  • — разрешает использовать объекты, определенные
    в загружаемой библиотеке для разрешения адресов из других загружаемых библиотек;
  • — запрещает использовать объекты из загружаемой
    библиотеки для разрешения адресов из других загружаемых библиотек.
  • — указывает не загружать библиотеку в память, а
    только проверить ее наличие в памяти. При использовании совместно с флагом
    позволяет «глобализовать» библиотеку,
    предварительно загруженную локально ().
  • — помещает таблицу загружаемых объектов в
    самый верх таблицы глобальных символов. Это гарантирует использование только своих функций и нивелирует
    их переопределение функций другими библиотеками.
  • — отключает выгрузку библиотеки при
    уменьшении счетчика ссылок на нее до 0.

Основы терминала

  • 44 команды Linux которые вы должны знать
  • Полезные команды Linux
  • Просмотр содержимого файлов в Linux
  • Поиск по содержимому файлов — Grep
  • Использование awk в Linux
  • Копирование файлов в Linux
  • Как удалить файл через терминал Linux
  • Как создать файл в терминале
  • Как посмотреть прогресс команды в Linux
  • Управление NetworkManager из консоли
  • Узнаем кто использует сеть в Linux
  • Архивация в Linux
  • Как пользоваться ssh
  • Переменные окружения в Linux
  • Как устанавливать bin файлы в Linux
  • Мониторинг сетевых подключений в Linux
  • Команда sort в Linux
  • Команда find в Linux
  • Команда wget Linux
  • Настройка сети в Linux
  • Как добавить команду в Cron
  • Отключение запроса пароля в sudo
  • Как сделать файл исполняемым в Linux
  • Монтирование флешки в Linux
  • Перезагрузка из терминала в Linux
  • Диагностика HDD в Linux
  • Измерение температуры в Linux
  • Неизменяемые файлы в Linux
  • Характеристики процессора в Linux
  • Использование оперативной памяти в Linux
  • Собираем ядро Linux
  • Полезные команды ffmpeg
  • Сбор информации о системе Ubuntu
  • Выключение Linux из командной строки
  • Управление процессами в Linux
  • Как пользоваться текстовым редактором vim

4. Как собрать программу

Для сборки программ в Linux используется два типа компиляторов, это Gcc и Clang. Пока что GCC более распространен, поэтому рассматривать мы будем именно его. Обычно, программа уже установлена в вашей системе, если же нет, вы можете выполнить для установки в Ubuntu:

Перед тем как мы перейдем к написанию и сборке программы, давайте рассмотрим синтаксис и опции компилятора:

$ gcc опции исходный_файл_1.с -o готовый_файл

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

  • -o — записать результат в файл для вывода;
  • -c — создать объектный файл;
  • -x — указать тип файла;
  • -l — загрузить статическую библиотеку.

Собственно, это все самое основное, что нам понадобится. Теперь создадим нашу первую программу. Она будет выводить строку текста на экран и чтобы было интереснее, считать квадратный корень из числа 9. Вот исходный код:

int main(){
printf(«losst.ru\n»);
printf(«Корень: %f\n», sqrt(9));
return 0;
}

Я специально добавил функцию корня чтобы показать как работать с библиотеками. Сначала нужно собрать объектный файл. Перейдите в папку с исходниками и выполните:

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

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

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

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

Conclusion:

C# Linux is a very good development platform as it is rapidly growing today.  It is quickly becoming the choice of platform for new and independent developers as it can easily leverage the open source community from Linux and .Net.  We can develop applications for Android using Xamarin, we can develop in Linux with powerful IDEs such as MonoDevelop.

Finally, we have .Net Core as the offical .Net Framework that can work on Linux also.  With that all said, we can take this with a grain of salt because .Net Core does not work very well with some Distros and versions in specific distros.  The developer has to make the right choice to pick the right technology stack to work with and make things work.  That said, it is not altogether very difficult to get started with Linux C#.

Использование библиотек

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

  1. раздельная компиляция помогает сократить время, затрачиваемое на компиляцию при внесении изменений в
    проект, за счёт чего ускоряется темп разработки;
  2. устраняется дублирование общих частей исходного кода, используемых в разных компонентах проекта (хотя
    этого можно добиться и включениями #include общих фрагментов, но это абсолютно разные
    способы реализации);
  3. упрощается внесение изменений в код и его сопровождение, а в итоге увеличивается «цельность» (consistency)
    проекта и сокращается число несоответствий при правках;

Библиотеки могут создаваться двумя альтернативными способами: как статические или как динамические
(разделяемые), и в большинстве случаев с равным успехом может быть выбран любой из этих вариантов.
Вся информация, представленная в последующих разделах, относится как к библиотекам, создаваемым
непосредственно в ходе разработки проекта, так и к 3rd party библиотекам, предоставляемым независимыми
разработчиками и используемыми в проекте. К 3rd party, кстати, относятся и многие библиотеки,
устанавливаемые с самой операционной системой Linux.

Отладка первой программы

Вызвать терминал в Ubuntu можно комбинацией клавиш Ctrl+Alt+T.

Я не помню, запускается ли все это хозяйство сразу или нет, по этому на всякий случай можно перезагрузиться.

Если все сделано правильно, то будет открыт порт 22. Проверить это можно используя команду .

Но сразу подключиться из-под Visual Studio у меня не удалось, так как система почему то не пускала меня под единственным пользователем. Пришлось создать другого. Это можно сделать в System Settings → User Account.

При этом, не забыв нажать кнопку Unlock в верхнем правом углу.

Настроить подключения в Visual Studio можно в окне Tools → Options

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

При этом в Ubuntu будут скопированы исходники и собранный файл программы (если это не отключено в настройках проекта). Все это можно будет найти в папке /home/<имя пользователя>/projects.

В моем случае получилось вот так:

Запустить программу в самом Linux можно из консоли:

Теперь вроде бы можно начинать работать. Я перенес исходные файлы в Visual Studio и… ничего у меня не скомпилировалось. Оказалось, что проекту не достает .h файлов из include directories.

5. Автоматизация сборки

Когда мы рассматриваем программирование под Linux невозможно не отметить систему автоматизации сборки программ. Дело в том, что когда исходных файлов программы много, вы не будете вручную вводить команды для их компиляции. Можно записать их один раз, а затем использовать везде. Для этого существует утилита make и файлы Makefile. Этот файл состоит из целей и имеет такой синтаксис:

цель: зависимости<Tab> команда

В качестве зависимости цели может быть файл или другая цель, основная цель — all, а команда выполняет необходимые действия по сборке. Например, для нашей программы Makefile может выглядеть вот так:

program: program.o
gcc -lm program.o -o program

program.o: program.c
gcc -c program.c -o program.o

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

Программа снова готова и вы можете ее запустить.

Пути файлов в Linux

Файловая система Linux очень сильно отличается от Windows. Мы не будем рассматривать ее структуру, это было сделано ранее. Мы сосредоточимся на работе с файлами.

Самое главное отличие, в том что адрес файла начинается не с диска, например, C:\ или D:\ как это происходит в Windows, а с корня, корневого системного каталога, к которому подключены все другие. Его адрес — /. И тут нужно сказать про адреса. Пути файлов linux используют прямой слеш «/» для разделения каталогов в адресе, и это отличается от того, что вы привыкли видеть в Windows — \.

Например, если в Windows полный путь к файлу на рабочем столе выглядел C:\Users\Sergiy\Desktop\ то в путь файла в linux будет просто /home/sergiy/desktop/. С этим пока все просто и понятно. Но проблемы возникают дальше.

В операционной системе Linux может быть несколько видов путей к файлу. Давайте рассмотрим какие бывают пути в linux:

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

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

Например, у нас есть такой каталог в домашней папке с четырьмя файлами в нем:

Вот так будет выглядеть полный путь linux к одному из файлов:

Это уже относительный путь linux, который начинается от домашней папки, она обозначается ~/. Заметьте, не ~, а именно ~/. Дальше вы уже можете указывать подпапки, в нашем случае tmp:

Ну или путь файла в linux, относительно текущей папки:

В каждой папке есть две скрытые ссылки, мы сможем их увидеть с помощью ls, выполнив ее с параметром -a:

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

Это бесполезно при просмотре содержимого файла

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

А потому, если нужно запустить программу, которая находится в текущей папке и она называется точно также как и та что в каталоге /bin, то без явной ссылки что файл нужно искать в текущей папке ничего не получится.

Вторая ссылка вам позволяет получить доступ к файлам в папке выше текущей. Например:

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

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

Или даже можно искать не только в папке tmp, а в любой подпапке домашней папки:

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

Копирование дополнительных файлов

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

Это можно также сделать в настройках проекта:

Чтобы просто скопировать файл, как остальные исходники, его можно добавить в поле Sources To Copy: @(SourcesToCopyRemotely);config.txt

А скопировать его в другую директорию можно с помощью Additional Sources To Copy.

Формат этой настройки
и т.д.

В моем случае такая строка выглядит так:

Все бы хорошо, но и тут у меня возникли проблемы.
Дело в том, что макрос $(RemoteOutDir) раскрывается в путь, начинающийся с символа «~».

Судя по всему, этот путь завязан с этой настройкой:

Так вот, при компиляции все работает хорошо. Но вот при копировании файлов почему то ~ воспринимается не как root директория, а просто как имя папки. То есть создается папка с именем «~»:

Справиться с этим мне так и не удалось, поэтому я просто копировал файл config.txt вручную. Правда, для этого пришлось опять использовать изменение прав на папку:
sudo chown -R osboxes:test ‘/home/test’

Как использовать Linux в процессе разработки приложений?

Linux — это превосходная платформа для программирования. Она
соответствует стандартам GCC, поэтому вы можете загрузить весь набор
средств проекта GNU для программирования и отладки и использовать их по
вашему усмотрению в пределах условий лицензии GNU GPL. В свою очередь,
коммерческие средства разработки, подобно закрытым операционным
системам, могут обойтись в немалую сумму. Хотя они действительно могут
быть необходимы в отдельных проектах, где их приобретение обосновано,
они не способны заменить бесплатное программное обеспечение для
начинающих, а также многих профессионалов. Если вы рассчитываете
использовать Linux в качестве платформы для создания приложений, не
забудьте предварительно разобраться с администрированием и системой
безопасности. Разработчик, не знающий тонкостей работы с собственным
компьютером — это абсурд.

  • Вы можете загрузить ознакомительные версии продуктов IBM для Linux (EN)
    непосредственно с сайта developerWorks.
  • Подписавшись на техническую
    редакцию новостной рассылки IBM developerWorks (EN), вы
    сможете получать статьи и другие материалы, которые помогут вам быть
    в курсе последних технических решений и разработок.
  • Книги IBM Redbook,
    посвященные Linux (EN), написаны специалистами IBM из
    международной организации технической поддержки (International
    Technical Support Organization — ITSO). В них рассматривается
    широкий круг вопросов, представляющих интерес для разработчиков
    приложений для Linux.

Соответствие стандартам — неотъемлемое качество Linux

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

  • Организация Linux Standard Base
    (EN) (LSB) предоставляет спецификации и программы
    сертификации, ориентированные на Linux. LSB является рабочей группой
    в консорциуме открытых
    стандартов (EN) (Free Standards Group — FSB).
  • Организация The Open Group,
    которую часто ассоциируют с UNIX, — это независимый от
    компаний-поставщиков и технологий консорциум, задачей которого
    является безопасное и надежное взаимодействие в мире вычислительных
    технологий.
  • Комитет по стандартам для переносимых приложений IEEE (Portable
    Application Standards Committee — PASC) отвечает за UNIX-стандарты
    семейства .
  • Документы серии «Request for
    Comments» (EN) (запросы комментариев — RFC) представляют
    собой технические и организационные замечания по вопросам,
    касающимся сети Интернет. Процесс их публикации, осуществляемый
    секретариатом IETF, играет важную роль в стандартизации
    Интернета.

Настройка окружения в CLI. WSL / Windows Terminal

Tutorial

Есть люди, которые большинство рабочего времени проводят в консоли, есть те, кто пользуются терминалом при необходимости, запуская что-то по инструкциям. Но я думаю, что каждый айтишник, будь он разработчиком, сисадмином, сетевым инженером, или даже senior yaml developer`ом, пользуется command line interface. Далеко не все задумываются об улучшении рабочего окружения в CLI и повышении продуктивности работы в терминале. Мне хотелось бы поделиться своим опытом настройки окружения для работы с Linux из Windows.
Из статьи вы узнаете, какими средствами и каким терминалом актуально пользоваться в настоящее время для запуска Linux приложений в Windows 10. Речь пойдёт о WSL 2 и Windows Terminal, набирающим всё большую популярность у пользователей, которым для работы нужен Linux

Так как большинство use-case`ов у меня связаны с удалённым подключением через SSH, большая часть информации будет релевантно для случаев удалённых подключений, со всеми особенностями, связанными с этим (пробросом ssh ключей через ssh agent, пробросом X-сервера, управлением подключениями etс).Внимание! Под катом много картинок и ужатого, но местами объёмного, gif`а, рекомендуется открывать статью при наличии соответствующего доступа к интернету. Заходите под кат, если вам актуален запуск Linux утилит под Windows, оптимизация работы в окружении CLI, или вы просто любите технические тексты и цветные терминалы

Текст я постарался скрасить скринкастами и скриншотами терминала, чтобы было не скучно.

Что такое Linux?

Коротко говоря, Linux — это операционная система. ОС Linux была создана в
октябре 1991 г. студентом университета Хельсинки Линусом Торвальдсом
(Linus Torvalds, название Linux образовано от словосочетания Linus’s
UNIX — «UNIX Линуса»). Сам по себе Linux — это ядро системы. В нем
реализована поддержка многозадачности, многопользовательского режима,
управления устройствами, памятью и выполнением приложений.

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

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

Самое главное, что должны знать начинающие программисты для
Linux — это то, что нечетные номера версий (2.3, 2.5, 2.7 и
т.д.) присваиваются экспериментальным ядрам, находящимся в разработке.
Стабильные выпущенные ядра всегда имеют четные номера версий (2.4, 2.6,
2.8 и т.д.).

Типичный дистрибутив Linux включает не только ядро, но и
множество прикладных программ и утилит. При этом большинство программ,
как прикладных, так и системных, являются частью проекта GNU — фонда
свободного программного обеспечения (Free Software Foundation). GNU —
это рекурсивная аббревиатура, означающая «GNU’s Not UNIX» (GNU — не
UNIX).

Ядро Linux и приложения GNU распространяются под открытой лицензией GNU
(General Public License — GPL). Лучший способ разобраться с GNU GPL —
это прочитать условия лицензионного соглашения. Возможно, это будет
чрезмерным упрощением, но основная идея GPL заключается в том, что
пользователи кода, распространяемого под этой лицензией, могут с ним
свободно экспериментировать.

  • Настоятельно рекомендуется прочитать интересный очерк История Linux (EN), написанный Ларсом Вирзениусом (Lars
    Wirzenius), работавшим вместе с Линусом Торвальдсом.
  • На сайте Linux Online (EN)
    представлены новости и материалы из независимых источников.
  • IBM LinuxLine (EN) — это выходящая раз в две недели
    новостная рассылка, в которой приводится сводная информация о важных
    тенденциях, рыночных и ситуационных исследованиях, а также
    инициативах IBM, имеющих отношение к Linux.

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

  • Установка Linux рядом с Windows 10
  • Установка двух Linux на компьютер
  • Установка Ubuntu 16.04
  • Установка Ubuntu 16.10
  • Установка Debian 8.5 Jessie
  • Установка ArchLinux 2016
  • Установка Kubuntu 15.10
  • Установка LinuxMint 18
  • Установка ROSA Linux R6
  • Установка OpenSUSE Leap 42.1
  • Установка CentOS 7
  • Установка Red Hat Enterprise 7
  • Установка Linux Deepin 15.1
  • Установка Manjaro Linux 15.12
  • Установка Elementary OS Loki
  • Установка Slackware 14.2
  • Установка Tails
  • Установка Linux Deepin 15
  • Установка Mageia 5
  • Установка PCLinuxOS
  • Как установить SteamOS
  • Установка fedora 24
  • Установка AltLinux
  • Как установить Puppy Linux
  • Установка Zorin OS
  • Установка Bodhi Linux
  • Установка Calculate Linux
  • Установка Tiny Core Linux
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *