Тему терминала Linux можно разделить на несколько частей: основы работы с терминалом, основные команды для работы с файлами и директориями, основные команды для работы с текстовыми файлами и графикой, основные команды для работы с сетью и другие полезные команды. В этой статье мы рассмотрим первую часть: основы работы с терминалом.
Терминал Linux - это программа, которая позволяет пользователю взаимодействовать с операционной системой с помощью текстовых команд. Терминал обычно открывается нажатием сочетания клавиш Ctrl+Alt+T или выбором соответствующего пункта меню. Терминал представляет собой окно, в котором отображается приглашение к вводу команды (prompt), обычно содержащее имя пользователя, имя компьютера и текущую директорию. После приглашения пользователь может ввести команду и нажать клавишу Enter для её выполнения. Терминал выполнит команду и выведет результат на экран или в файл, а затем снова выведет приглашение к вводу следующей команды.
Команда - это слово или последовательность слов, которые указывают терминалу, что нужно сделать. Команда может состоять из одного или нескольких элементов: имени команды, аргументов и опций. Имя команды - это слово, которое определяет действие, которое нужно выполнить. Аргумент - это слово или последовательность слов, которые указывают на объект действия (например, имя файла или директории). Опция - это слово или последовательность слов, которые модифицируют поведение команды (например, формат вывода или режим работы). Элементы команды разделяются пробелами. Например, в команде ls -l file1.txt ls - это имя команды, -l - опция, которая указывает на подробный формат вывода, а file1.txt - аргумент, который указывает на имя файла, для которого нужно вывести информацию.
Существует множество команд для работы с терминалом Linux. В этой статье мы рассмотрим некоторые из них:
ls - команда для вывода списка файлов и директорий в текущей или указанной директории. Например, ls выведет список файлов и директорий в текущей директории; ls dir1 выведет список файлов и директорий в директории dir1; ls -l выведет список файлов и директорий в текущей директории с подробной информацией о каждом из них (размер, дата изменения, права доступа и т.д.); ls -a выведет список всех файлов и директорий в текущей директории, включая скрытые файлы (начинающиеся с точки); ls -t выведет список файлов и директорий в текущей директории, отсортированный по времени последнего изменения; ls -S выведет список файлов и директорий в текущей директории, отсортированный по размеру; ls -R выведет список файлов и директорий в текущей директории и всех её поддиректориях рекурсивно.
cd - команда для изменения текущей директории. Например, cd dir1 переведет вас в директорию dir1, если она существует; cd … переведет вас на один уровень выше в иерархии файловой системы; cd / переведет вас в корневую директорию; cd ~ переведет вас в вашу домашнюю директорию; cd - переведет вас в предыдущую директорию, из которой вы перешли.
pwd - команда для вывода полного пути к текущей директории. Например, pwd выведет /home/user/dir1, если вы находитесь в директории dir1, которая находится в директории user, которая находится в директории home, которая находится в корневой директории.
cp - команда для копирования файлов или директорий. Например, cp file1.txt file2.txt скопирует файл file1.txt в файл file2.txt; cp file1.txt dir1 скопирует файл file1.txt в директорию dir1; cp -r dir1 dir2 скопирует директорию dir1 со всем её содержимым в директорию dir2; cp -i file1.txt file2.txt скопирует файл file1.txt в файл file2.txt с запросом подтверждения, если файл file2.txt уже существует.
mv - команда для перемещения или переименования файлов или директорий. Например, mv file1.txt file2.txt переместит или переименует файл file1.txt в файл file2.txt; mv file1.txt dir1 переместит файл file1.txt в директорию dir1; mv -i file1.txt file2.txt переместит или переименует файл file1.txt в файл file2.txt с запросом подтверждения, если файл file2.txt уже существует.
rm - команда для удаления файлов или директорий. Например, rm file1.txt удалит файл file1.txt; rm -r dir1 удалит директорию dir1 со всем её содержимым; rm -i file1.txt удалит файл file1.txt с запросом подтверждения.
mkdir - команда для создания новых директорий. Например, mkdir dir1 создаст новую пустую директорию с именем dir1; mkdir -p dir1/dir2/dir3 создаст новую пустую директорию с именем dir3 и все необходимые родительские директории (dir1 и dir2), если они не существуют.
rmdir - команда для удаления пустых директорий. Например, rmdir dir1 удалит пустую директорию с именем dir1.
cat - команда для вывода содержимого файла или объединения нескольких файлов. Например, cat file1.txt выведет содержимое файла file1.txt на экран; cat file1.txt file2.txt > file3.txt объединит содержимое файлов file1.txt и file2.txt и запишет его в файл file3.txt.
grep - команда для поиска строк, содержащих заданный шаблон (регулярное выражение) в файлах или потоке данных. Например, grep linux file1.txt выведет все строки из файла file1.txt, которые содержат слово linux; grep -i linux * выведет все строки из всех файлов в текущей директории, , которые содержат слово linux без учёта регистра букв; grep -v linux file1.txt выведет все строки из файла file1.txt, которые не содержат слово linux; grep -n linux file1.txt выведет все строки из файла file1.txt, которые содержат слово linux, с указанием номера строки; grep -c linux file1.txt выведет количество строк из файла file1.txt, которые содержат слово linux.
wc - команда для подсчёта количества строк, слов и символов в файлах или потоке данных. Например, wc file1.txt выведет количество строк, слов и символов в файле file1.txt; wc -l file1.txt выведет только количество строк в файле file1.txt; wc -w file1.txt выведет только количество слов в файле file1.txt; wc -c file1.txt выведет только количество символов в файле file1.txt.
find - команда для поиска файлов или директорий по заданным критериям. Например, find . -name “*.txt” выведет все файлы с расширением .txt в текущей директории и всех её поддиректориях; find /home/user -size +10M выведет все файлы в директории /home/user, размер которых больше 10 мегабайт; find . -type d выведет все директории в текущей директории и всех её поддиректориях.
sort - команда для сортировки строк в файлах или потоке данных. Например, sort file1.txt отсортирует строки в файле file1.txt по алфавиту и выведет их на экран; sort -r file1.txt отсортирует строки в файле file1.txt по алфавиту в обратном порядке и выведет их на экран; sort -n file1.txt отсортирует строки в файле file1.txt по числовому значению и выведет их на экран; sort -u file1.txt отсортирует строки в файле file1.txt по алфавиту и удалит дубликаты.
uniq - команда для удаления повторяющихся строк в файлах или потоке данных. Например, uniq file1.txt удалит повторяющиеся строки в файле file1.txt и выведет их на экран; uniq -c file1.txt удалит повторяющиеся строки в файле file1.txt и выведет их на экран с указанием количества повторений; uniq -d file1.txt удалит уникальные строки в файле file1.txt и выведет только повторяющиеся строки на экран.
diff - команда для сравнения двух файлов или директорий построчно. Например, diff file1.txt file2.txt выведет различия между файлами file1.txt и file2.txt на экран; diff -y file1.txt file2.txt выведет различия между файлами file1.txt и file2.txt на экран в двух колонках; diff -q dir1 dir2 выведет только имена файлов, которые отличаются или присутствуют только в одной из директорий dir1 или dir2.
tar - команда для создания или распаковки архивов. Например, tar cvf archive.tar dir1 создаст архив archive.tar из директории dir1; tar xvf archive.tar распакует архив archive.tar в текущую директорию; tar tvf archive.tar просмотрит содержимое архива archive.tar без распаковки.
ping - команда для проверки доступности удалённого хоста по протоколу ICMP. Например, ping google.com отправит серию запросов к хосту google.com и получит ответы с указанием времени задержки (latency) и потери пакетов (packet loss); ping -c 5 google.com отправит 5 запросов к хосту google.com и выведет статистику по результатам; ping -i 2 google.com отправит запросы к хосту google.com с интервалом в 2 секунды.
traceroute - команда для определения маршрута следования пакетов к удалённому хосту. Например, traceroute google.com выведет список промежуточных хостов (роутеров), через которые проходят пакеты от вашего компьютера до хоста google.com, с указанием времени задержки на каждом из них.
ssh - команда для установки защищённого соединения с удалённым хостом по протоколу SSH. Например, ssh user@host подключит вас к хосту host под именем user и позволит вам выполнять команды на удалённом компьютере; ssh -p 2222 user@host подключит вас к хосту host под именем user по порту 2222; ssh -i key.pem user@host подключит вас к хосту host под именем user с использованием ключа key.pem.
scp - команда для копирования файлов между локальным и удалённым хостами по протоколу SSH. Например, scp file1.txt user@host:dir1/file2.txt скопирует файл file1.txt с локального компьютера в файл file2.txt в директории dir1 на удалённом хосте host под именем user; scp user@host:dir1/file1.txt file2.txt скопирует файл file1.txt из директории dir1 на удалённом хосте host под именем user в файл file2.txt на локальном компьютере; scp -r dir1 user@host:dir2 скопирует директорию dir1 со всем её содержимым с локального компьютера в директорию dir2 на удалённом хосте host под именем user.
curl - команда для передачи данных по различным протоколам (HTTP, FTP, SMTP и т.д.). Например, curl http://google.com выведет содержимое главной страницы сайта google.com на экран; curl -o file.html http://google.com загрузит содержимое главной страницы сайта google.com в файл file.html; curl -d “name=John&age=25” http://example.com/form отправит данные name=John&age=25 по протоколу HTTP методом POST на адрес http://example.com/form.
ps - команда для вывода информации о процессах, запущенных в системе. Например, ps выведет информацию о процессах, запущенных в текущей оболочке (shell); ps -e выведет информацию о всех процессах в системе; ps -u user выведет информацию о процессах, запущенных пользователем user; ps -f выведет полную информацию о процессах, включая идентификаторы (PID), родительские идентификаторы (PPID), статус, время запуска и т.д.
kill - команда для отправки сигнала процессу, чтобы завершить его работу. Например, kill 1234 отправит сигнал SIGTERM процессу с идентификатором 1234, который попросит его корректно завершиться; kill -9 1234 отправит сигнал SIGKILL процессу с идентификатором 1234, который заставит его немедленно завершиться без возможности обработать сигнал.
top - команда для вывода динамической информации о процессах, запущенных в системе, и общей статистике по использованию ресурсов (процессора, памяти, диска и т.д.). Например, top выведет на экран таблицу с информацией о процессах, отсортированную по убыванию загрузки процессора, и сводку по общему состоянию системы; top -u user выведет на экран таблицу с информацией только о процессах, запущенных пользователем user; top -n 5 выведет на экран таблицу с информацией о пяти процессах с наибольшей загрузкой процессора.
date - команда для вывода или установки текущей даты и времени. Например, date выведет на экран текущую дату и время в формате, заданном в системе; date +%Y-%m-%d выведет на экран текущую дату в формате YYYY-MM-DD (например, 2022-01-01); date -s “2022-01-01 12:00:00” установит системную дату и время на 2022-01-01 12:00:00.
cal - команда для вывода календаря. Например, cal выведет на экран календарь текущего месяца; cal 2022 выведет на экран календарь всего года 2022; cal 12 2022 выведет на экран календарь декабря 2022 года.
echo - команда для вывода строки текста или значения переменной. Например, echo “Hello, world!” выведет на экран строку Hello, world!; echo $USER выведет на экран значение переменной USER, которая содержит имя текущего пользователя; echo -n “Hello, world!” выведет на экран строку Hello, world! без перевода строки в конце.
export - команда для установки или изменения значения переменной окружения. Например, export LANG=ru_RU.UTF-8 установит значение переменной LANG на ru_RU.UTF-8, которое определяет локаль системы (язык, кодировку и т.д.); export PATH=$PATH:/home/user/bin добавит директорию /home/user/bin в конец значения переменной PATH, которая содержит список директорий, в которых ищутся исполняемые файлы.
alias - команда для создания или удаления псевдонимов (сокращений) для других команд. Например, alias ll=“ls -l” создаст псевдоним ll для команды ls -l; alias rm=“rm -i” создаст псевдоним rm для команды rm -i; alias ll=“” удалит псевдоним ll.
history - команда для вывода истории введённых команд. Например, history выведет на экран список всех команд, которые были введены в текущей оболочке; history 10 выведет на экран последние 10 команд; history -c очистит историю команд.
man - команда для вывода справочной информации о других командах. Например, man ls выведет на экран справочную страницу о команде ls; man -k find выведет на экран список всех команд, связанных с поиском файлов или строк (ключевое слово find); man 5 passwd выведет на экран справочную страницу о формате файла /etc/passwd (раздел 5).
Это лишь небольшой список основных команд для работы с терминалом Linux. Существует ещё множество других полезных и интересных команд, которые можно изучить самостоятельно или с помощью справочной системы man. Терминал Linux - это мощный и гибкий инструмент для решения различных проблем или задач, связанных с работой в операционной системе. Освоив его основы, вы сможете легко и быстро выполнять разнообразные действия с файлами, директориями, процессами, сетью и другими ресурсами системы.