Найти в Дзене

6.3 Основы командной строки

Написание кода — важная часть процесса программирования, но не единственная. Одно дело — написать программу, совсем другое — заставить ее работать у пользователя или на сервере, и здесь вопросы разработчика: Эти вопросы становятся особенно интересными, если учесть, что на большинстве серверов установлен не привычный Windows, а Linux без графической оболочки. Подключившись к удаленной машине, вы увидите терминал — специальную программу, через которую идет подключение - выглядит, как пугающий темный экран. Для чего - вводить разные команды, запускать программы, анализировать систему. В чём преимущества - экономит ресурсы, что особенно важно для серверного окружения; автоматизирует любые действия — команды можно не только выполнять вручную, но и записать в файл и выполнять все вместе; неограниченный доступ к возможностям системы; больше возможностей во многих программах. Немного истории Появилась КС в 1970-х годах. В те времена не существовало ни Windows, ни ПК. Компьютерами называли мейн
Оглавление

Написание кода — важная часть процесса программирования, но не единственная. Одно дело — написать программу, совсем другое — заставить ее работать у пользователя или на сервере, и здесь вопросы разработчика:

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

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

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

Немного истории

Появилась КС в 1970-х годах. В те времена не существовало ни Windows, ни ПК. Компьютерами называли мейнфреймы — большие машины, занимающими целые этажи зданий

-2

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

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

  • Ввод информации (клавиатура)
  • Вывод информации (монитор)

При этом вся обработка выполнялась на отдельном сервере. Сам терминал выглядел так:

-3

Unix была платной и закрытой - никто не мог посмотреть ее исходный код. На её основе стали создаваться новые системы, вследствие чего был принят стандарт POSIX (Portable Operating System Interface for UNIX). Сейчас это целое семейство стандартов, оно описывает работу ключевых компонентов операционной системы и способов взаимодействия с ними из программ, написанных на Си.

Появились прообразы интернета, а затем и сам интернет. Компьютеры становились меньше, а серверов — все больше. В 1991 г. Линус Торвальдс решил написать собственную операционную систему, которая совместима со стандартом POSIX, причём выложил исходный код в открытый доступ. С тех пор популярность Linux для серверного окружения быстро росла. Когда Линус начал свою разработку, уже существовал проект GNU, основанный Ричардом Столлманом - инструментарий на Си:

  • Текстовый редактор Emacs
  • Компилятор языка Си gcc
  • Командная оболочка bash
  • Библиотека важнейших функций для программ на Си libc.

Linux не имеет своей графической оболочки и может выглядеть очень по-разному, ведь на него можно поставить много разных графических оболочек. Он не используется в чистом виде, пользователи имеют дело с дистрибутивами, Дистрибутив = Сам Linux + GNU-программы + Утилиты для установки и настройки Linux + Поддержку регулярного обновления самого ядра и его окружения.

Работа в терминале

Командная строка – это инструмент для управления операционной системой компьютера с помощью ряда зарезервированных команд и набора символов Управление происходит с помощью внутренних и внешних команд:
▪ внутренние команды — команды, встроенные в операционную систему;
▪ внешние команды — программы, которые пользователь устанавливает на компьютер
В Ubuntu вы можете запустить терминал Linux нажав сочетание  клавиш Ctrl+Alt+T
В Ubuntu вы можете запустить терминал Linux нажав сочетание клавиш Ctrl+Alt+T
Windows + R -> cmd
Windows + R -> cmd

Вам может понадобиться маленький хамелеончик:

Notepad++ — свободный текстовый редактор с открытым исходным кодом для Windows с подсветкой синтаксиса, разметки, а также языков описания аппаратуры VHDL и Verilog. Базируется на компоненте Scintilla, написан на C++ с использованием STL, а также Windows API, и распространяется под лицензией GNU. Поддерживает открытие более 100 форматов.

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

Некоторые терминалы позволяют делать сплиты, то есть разделять окно на части.

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

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

-6
командная оболочка — это полноценная среда программирования. Многие команды являются стандартными конструкциями любого языка программирования: переменными, циклами или условиями. Кроме того, некоторые команды являются программами, а некоторые — нет.

Командную оболочку нередко называют реплом от английского REPL (Read-Eval-Print-Loop). Это сокращение отражает способ взаимодействия командной оболочки с пользователем:

  • Read — оболочка ждет ввода команды от пользователя
  • Eval — исполняет введенную команду
  • Print — выводит результат
  • Loop — возвращаемся к первому пункту

Этот процесс называется интерактивной сессией.

-7

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

# Комментарий

Для комфортной работы полезно иметь:

  • Автоматическое завершение имен программ и файлов
  • Историю введенных команд
  • Возможность перемещаться по файловой системе
  • Удобные горячие клавиши
  • Поддержку скриптов.

Установка: терминал и командная оболочка

Командные оболочки и терминалы бывают разные, хотя по умолчанию в большинстве операционных систем стоит bash (каламбур - «Born again» shell — «возрождённый» shell от Bourne-again-shell, «ещё-одна-командная-оболочка-Борна», автора командной оболочки UNIX ).

Предустановлена в Linux. Представляет собой командный процессор, работающий, как правило, в интерактивном режиме в текстовом окне. Bash также может читать команды из файла, который называется скриптом (или сценарием). Как и все Unix-оболочки, он поддерживает автодополнение имён файлов и каталогов, подстановку вывода результата команд, переменные, контроль над порядком выполнения, операторы ветвления и цикла.

1. Сначала нужно установить терминал. Установка зависит от вашей операционной системы:

  • Если вы используете Linux или MacOS, в вашей операционной системе уже есть установленный терминал. Можете использовать его или скачать более продвинутую версию — например, iTerm2 для MacOS и Tilix для Linux
  • Если вы работаете с ОС Windows, вам потребуется использовать WSL.

Как вариант,

2. Далее убедитесь, что внутри терминала можно запустить bash-сессию.

Если вы только начали свой путь разработчика и до сих используете операционную систему семейства Microsoft Windows, то уже наверняка столкнулись с ситуацией, когда ваш инструментарий отличается от того, что установлено у большинства людей из этой профессии. Чаще всего проблемы начинаются при работе в командной строке. Дело в том, что Windows не является POSIX-совместимой операционной системой, поэтому в ней отсутствует базовый набор прикладных программ, который необходим для разработки.

Как вариант:

Visual Studio Code вместе с расширением WSL позволяет использовать WSL в качестве среды разработки на полный рабочий день непосредственно из VS Code. Вы можете:

  • разработка в среде под управлением Linux
  • использование цепочки инструментов и служебных программ для Linux
  • запуск и отладка приложений под управлением Linux с комфортом Windows при сохранении доступа к средствам повышения производительности, таким как Outlook и Office
  • Используйте встроенный терминал VS Code для запуска выбранного дистрибутива Linux
  • воспользуйтесь преимуществами функций VS Code, таких как завершение кода Intellisense, линтинг, поддержка отладки, фрагменты кода и модульное тестирование
  • простое управление версиями с помощью встроенной поддержки Git в VS Code
  • выполнение команд и расширений VS Code непосредственно в проектах WSL
  • изменять файлы в файловой системе Linux или подключенной файловой системе Windows (например, /mnt/c), не беспокоясь о проблемах с путем, двоичной совместимости или других проблемах, связанных с несколькими ОС.

Работа в командной строке

Путь (англ. path) — набор символов, показывающий расположение файла или каталога в файловой системе

▪ В операционных системах UNIX разделительным знаком при записи пути является «/»

▪ В Windows — «\». Эти знаки служат для разделения названия каталогов, составляющих путь к файлу.

Маска Символ «звездочка» (*) заменяет последовательность символов произвольной длины.

-8

Поток ввода-вывода

▪ Поток вывода – это то, куда происходит вывод символов. ▪ По умолчанию – на экран

▪ С помощью оператора > можно изменить поток вывода

Операторы совместного запуска

-9

Конвейер

-10

Интерфейс командной строки CLI – Command Line Interface

Основные особенности использования:

▪ Запускается одна команда, а ей передаются аргументы

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

Пример CLI на Python

1. Создадим файл args.py

2. Импортируется модуль argparse

3. Пользователю дается подсказка через аргументы

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

-11

▪ Добавим обязательный аргумент --a

▪ Добавим печать на экран с помощью print()

-12

Тестирование программы

-13

Требования к приложению с CLI

▪ Приложение должно быть простым и иметь четкую цель

▪ Пользователь должен иметь простой доступ к справке о том, как что делает приложение и как (help)

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

▪ В случае ошибки в вызове приложения, оно должно сообщить, в чем была ошибка и как её исправить

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