Основные программы
Вступление
В этой части будут собраны много команды и советы по работе с терминалом, но практически не будет задач. Некоторые из команд мы не сможем использовать с нашем доступом с подключением (создание и смена пользователей, sudo), но вы можете их попробовать на компьютерах дома. Этот текст будет обзорный мой главный совет- просто загуглите нужную команду, если вам придется ее использовать.
Общие советы
Начнем с нескольких удобных функций, которые могут сильно упростить жизнь: нажатие на клавишу tab допишет
за вас команду или название файла, а если возникают какие то вопросы по функционалу той или иной команды можно написать *название команды*--help.
Остановить и возобновить работу любой команды можно с помощью ctrl+C/ctrl+Z.
Если терминал вдруг завис, попробуйте ctrl+S, а для отмены действия (и соответсвенно отвисания) нажмите ctrl+Q. Можно запустить несколько команд одновременно, записав их в строку через ";", а если вы хотите запустить их последовательно, используйте && как соединитель.
Если описание с help недостаточно полное, то наберите man название команды, чтобы вывести глубокое линуксовое описание.
Также с помощью history вы можете увидеть все команды, которые вводили ранее. Выдет список с командой и номером строки, для повторного запуска какой нибудь из команд достаточно ввести !*номер строки этой команды*.
Также мастхэв для работы в терминале - команда top.
Она работает примерно как Ctrl + Alt + Del и необходима, когда вы застряли в терминале и не можете выбраться.
Аналогично работает похожая на нее htop, но немного красивее, поддерживает курсор и завершение процессов нажатием F9 (выход из нее осуществляется через F10).
Работа в терминале
Чтобы работать в терминале надо понимать, где вы находитесь. Для этого используется pwd. Если вы потеряли какой нибудь файл и не помните путь к нему то на помощь придут команды locate или find. Locate работает быстрее, однако не всегда достаточно точно, к тому же результат работы find можно использовать в дальнейших процессах (в скрипте к примеру).
Еще полезно помнить про команды работы с файлами и директориями: ls (-l выводит строку с размером, -a выводит еще скрытые файлы, -al выводит все, что можно), cd для передвижения между директориями, cp mv для копирования или перемещения файлов и rm для удаления. Кстати удалять директории следует используя rmdir или рекурсивно через rm -Rf. Здесь R означает рекурсивно, а f с силой, то есть если при удалении возникнут какие нибудь проблемы, то файл все равно удалится, не смотря ни на что.
Работа с пользователями
Поговорим о работе с пользователями.
Мы мало с чем сможем попрактиковаться в силу логичных ограничений, но мы точно можем узнать имя пользователя, под которым сейчас работаем с помощью команды whoami. На практике она нужна системным администраторам, чтобы не путаться в подключенииях.
Пользователь с максимальным правами- суперпользователь. Через него можно зайти при помощи sudo *команда*. Если после sudo не встречается ограничений (-u и тд), то команда выполняется от имени root пользователя.
Для подключения root также можно использовать su (switch users), однако надо быть аккуратнее, так как к примеру директория, созданная и принадлежащая root пользователю будет недоступна всем остальным пользователям. После использования su достаточно ввести exit, чтобы вернуться к начальному пользователю. Только суперпользователь может устанавливать команды, добавлять и удалять других пользователей.
Разберемся с правами доступа.
В любой директории (где есть какие нибудь файлы, конечно) введите ls -al. На экран выведется список файлов с обозначениями слева от них. Это права доступа к файлам. Их можно обьединить в три группы, в каждой из которых три значения: r-чтение, w-запись и x-исполнение.
Группы обозначают разных пользователей: создателя файла, пользователя из общей группы с создателем и гостя.
Для смена параметров доступа используется chmod *обозначение что нужно делать*. К примеру чтобы сделать файл исполнимым достаточно ввести chmod +x *имя файла*. У chmod есть быстрая смена параметров, с помощью цифровых обозначений, так chmod 777 *...* делает файл открытым для всех, chmod 755 *...* читаемым и исполняемым, а chmod 766 делает читаемым и открытым для ввода. Владельца файла можно сменить через chown *пользователь* *название файла*, а chgrp меняет группу владельцев.
Чтобы увидеть текущих пользователей пишем users. Для того чтобы увидеть всех пользователей (даже не авторизованных на данный момент) проверьте /etc/passwd, но не вносите изменения в этот файл! Добавить пользователя можно через uderadd, а удалить с userdel. Aналогичные команды работабт с группами.
С помощью некоторых команд можно просматривать окружение пользователя. К примеру date выведет время, с помощью alias можно создавать синонимы или аббревиатуры для команд, uname выдает информацию об операционной системе, uptime- время непрерывной работы. Также еще используются sleep (таймер выключения системы) и yes (утилита согласия). Все это удобнее применять в мультиплексорах вроде tmux, чтобы отображать несколько значений одновременно.
Работа с текстом
Теперь обсудим работу с текстом.
Просмотр текста
Содержимое файлов можно просматривать, не открывая их в редакторах с помощью echo или head/tail (выводят первые или последние 10 строк). Интереснее же с помощью териминала сравнивать файлы и искать нужные строки.
Поиск нудного значения
Поиск легко осуществлять при помощи grep *нужный набор символов*. grep кстати довольно удобно использовать для поиска не только в уже существующих файлах, но также в результатах выполнения команд при помощи pipe (прямая линия |). К примеру результат работы systemctl (выводит процессы, которые включаются при запуске компьютера) можно отсортировать при помощи grep: systemctl list-unit-files | grep enabled и получить только запрещенные на запуск процессы.
Аналогично работает sed. sed чрезвычайно мощная утилита, к сожалению описывать ее довольно долго, поэтому сейчас мы не будем (но она тоже ищет данные как grep), но можете погуглить.
Сортировка и сравнение двух текстов
Информацию можно сортировать с помощью sort. -n отсортирует по числовому значению, -du по размеру, -u удалит дубликаты.
diff производит построчное сравнение двух текстовых файлов. Различия между файлами отмечаются как с-измененные строки, d- удаленные, а a-новые.
Дополнительные функции
Через терминал можно работать с архивами, используя gzip (создает архивы со сжатыми файлами), gunzip (распаковщик) и tar (удобная штука для хранения резервных копий или надежно архивированных данных в линуксе).
Также есть несколько пакетных менеджеров, с помощью которых можно устанавливать приложения, не тратя время на поиски exe-шников в других метсах. В первую очередь это apt, pacman и dnf.
Еще удобно просматривать состояние дисков компьютера, df показывает свободное место на диске (однако для адекватного вида нужно добавить -h, human reading), du показывает использование диска (размер файла или каталога) -h аналогично df, -s для минимального количества данных, -d задает глубину рекурсии для каталогов. Монтировать любые носители можно с помощью mount/unmount.
Заключение
В заключение я хотел бы сказать, что еще очень много команд используется в терминале, однако многие из них я не рассматриваю, так как они будут встречаться в темах далее (работа с процессами kill, проверка подключения и ipconfig). Но все это как правило становится специффично для конкретной задачи или программы и в данной части рассматривать не очень логично. Каждую команду легко гуглить, чтобы найти синтаксис или четко понять что она делает, глвное просто знать о ее существовании и понимать, что гуглить.