Перед тем как устраиваться на работу, поставил себе на ноуте убунту, думая что так стану крутым линуксоидом. Реальность оказалась немного сложнее.
Современные сборки по эксплуатации для обычного пользователя не сильно отличаются от windows. Почти все можно сделать из графического интерфейса и не возникает нужды пользоваться терминалом.
Однако затем на работе начинаешь работать с удаленными машинами, к которым проще подключиться по ssh чем налаживать удаленный рабочий стол, с серверами, у которых вообще может не быть графического интерфейса и через какое-то время осознаешь насколько крутой и удобной может быть работа через терминал.
Сказывается разница изначальных задач этих систем Linux как наследие unix систем изначально больше приспособлена для работы в клиент-серверной архитектуре. Windows предназначена для частного использования.
Т.к. чаще всего взаимодействие проходит через терминал напишу тут небольшую памятку по основам и оставлю ссылки, на полезные курсы-материалы. Многие команды имеют дополнительные аргументы, которые могут изменять результаты действия программы.
Есть отдельная команда `man [some_command]`, которая описывает правила действия команды и может подсказать дополнительные аргументы и их действия.
Передвижение по директориям:
В linux системах файловая структура реализована в виде дерева с узлами-каталогами и файлами-листьями. Формально каталоги тоже файлы, содержащие дополнительный параметр - список файлов.
Нет разбивки на диски С:, D:, но есть файловый стандарт - соглашение, описывающее какие файлы где могут быть размещены. Его можно прочитать вот здесь.
Чтобы по всей этой красоте ориентироваться, есть несколько стандартных инструментов:
- pwd - выводит в терминал полный адрес текущей директории
- cd - команда позволяет перейти в директорию по абсолютному (/tmp/) или относительному пути. Для относительного пути есть несколько специальных команд `..` означает 'перейти на уровень вверх', а `~/` равносильно 'домашней директории`
- ls - позволяет увидеть список файлов и директорий в текущей директории. Если использовать аргумент -a, то вы увидите все файлы в директории, включая скрытые. Можно комбинировать несколько аргументов, например ls -lah выведет расширенный список данных о файлах и директориях.
- tree - выводит древовидную структуру с корнем в текущей папке. Это не стандартный инструмент, но им очень удобно пользоваться для ориентирования в системе.
Чтение файлов:
- cat - выводит содержимое файла прямо в консоль. Бывает, что нужно чтобы конфиг какого-нибудь скрипта висел перед глазами и тогда удобно использовать эту команду.
- head ∕ tail - команды выводящие первые или последние строки читаемого файла. Кроме того, можно повесить tail в постоянный режим, с помощью аргумента -f. Тогда при добавлении новых строк в файл они будут так же отображаться у вас в консоли. Удобно, если планируете мониторить логи в реальном времени.
- less - в случае если нет желания засорять консоль лишними записями можно воспользоваться этой командой-приложением. Важный момент, less не подгружает сразу весь файл, поэтому вы можете без опасений открывать даже очень большие логи не боясь нагрузить машину.
Редактирование текста:
- nano - простой понятный редактор файлов. Поддерживает подсветку синтаксиса, что бывает очень удобным.
Мне его хватает для подавляющего большинства задач, но есть куда более хардкорные варианты:
- vim - консольный редактор, обладающий большим встроенным функционалом, который можно ещё больше раскачать с помощью дополнительных плагинов. Имеет достаточно высокий порог входа из-за специфичного управления. Адепты постигшие его, говорят, что это очень удобно. Но высокий порог входа и не самый очевидный интерфейс породил достаточно большое количество мемов вроде этого комикса и вопросов на StackOverflow "Как выйти из vim?"
- sed - потоковый текстовый редактор и полноценный язык программирования, предназначенный для обработки больших объемов текста. Уже этого любопытного сочетания должно быть достаточно, чтобы о нем почитать, но пока что не сталкивался с необходимостью его применения
Поиск внутри файлов:
- grep \ egrep \ frgep - команда работающая с регулярными выражениями и позволяющая найти строки внутри файла, подходящие под шаблон. Регулярные выражения это отдельная большая тема, по ним обязательно будет пост. Желающим разобраться подробнее могу посоветовать почитать "Регулярные выражения" Джеффри Фридла.
Получается уже длинновато для заметки, разобью на 2 части. В следующей будет немного о пайплайнинге, пользователях и правах.
Если нет терпения ждать следующую часть или захотелось разобраться самому, то могу посоветовать крутой и бесплатный курс "Основы командной строки" на Hexlet. Спасибо за внимание)