Командная строка в Unix-подобных системах — не архаика, а инструмент, который остаётся быстрее, точнее и надёжнее большинства GUI-интерфейсов.
Но большинство руководств по-прежнему перегружены теорией, опциями, которые никто не использует, или наоборот — упрощают до примитивных примеров, которые не применимы в реальной работе.
Этот материал не “курс для начинающих” и не “учебник для профи”, а практичная подборка команд и комментариев к ним.
Вопрос 1: Какая команда отображает текущий каталог?
Команда pwd (Print Working Directory) показывает путь к текущей папке, в которой вы находитесь. Путь всегда абсолютный — начиная от корня /. Это помогает понять, где именно вы находитесь в системе. Полезно при работе в терминале и в скриптах, когда нужно точно знать, откуда запускается команда.
Вопрос 2: Как перечислить файлы в директории?
ls выводит список файлов и папок; -l показывает детали (права, размер, владелец), -a включает скрытые (имена с .). Используйте alias ll='ls -lh' для человекочитаемого размера и быстрого доступа.
$ ls -la
alias — это способ задать короткую команду, которая заменяет собой более длинную. Это просто подстановка текста: когда ты вводишь имя alias, оболочка заменяет его на заранее заданную команду. Теперь, когда ты вводишь ll, на самом деле выполняется ls -lh. Это работает только в текущем сеансе терминала, если не добавить alias в конфигурационный файл вроде .bashrc или .zshrc.
Alias не имеет логики или условий — это не функция. Он просто подменяет одну строку на другую при вводе. Полезно, когда часто используешь одну и ту же длинную команду и хочешь не печатать её каждый раз.
Вопрос 3: Как перейти в другую директорию?
Команда cd (Change Directory) изменяет текущую рабочую директорию на указанную в аргументе. Формат: cd PATH, где PATH — это абсолютный (от корня, например, /var/log) или относительный (от текущей директории, например, logs) путь.
cd /путь/к/директории— перейти в указанную директорию по абсолютному пути.
cd относительный_путь — перейти в директорию относительно текущей (например, cd projects).
cd .. — подняться на один уровень выше в иерархии директорий.
cd ../.. — подняться на два уровня выше (можно повторять количество ../).
cd ~ — переход в домашнюю директорию текущего пользователя, то есть в личную папку, где хранятся его настройки и файлы. В Linux и Unix-подобных системах это обычно /home/
cd — без аргументов тоже возвращает в домашнюю директорию.
cd - — перейти в предыдущую рабочую директорию, туда, где вы были до текущей.
Команда работает в большинстве оболочек (bash, zsh) и незаменима для навигации по файловой системе. Если директория не существует или доступ запрещён, отобразится ошибка.
Вопрос 4: Как создать пустой файл?
Команда touch FILE создаёт новый пустой файл с указанным именем (FILE), если он ещё не существует. Если файл уже есть, touch обновляет его временные метки (время последнего доступа и модификации) без изменения содержимого.
touch document.txt — Создаёт пустой файл document.txt
touch existing.txt — Обновляет метки времени для existing.txt
touch file1.txt file2.txt — Создаёт file1.txt и file2.txt
touch "new document.txt" — Создаёт файл с именем "new document.txt"
touch 'my file.txt' — Альтернатива с одинарными кавычками
Без кавычек или экранирования команда touch new document.txt интерпретируется как попытка создать два отдельных файла: new и document.txt, что может привести к неожиданным результатам.
touch new\ document.txt # Создаёт файл с именем "new document.txt"
Команда полезна для тестирования, создания заглушек или управления метаданными файлов. Если доступ к директории ограничен, команда выдаст ошибку. Хотя пробелы в именах файлов допустимы, их использование может усложнить работу в терминале, особенно в скриптах. Предпочтительно использовать подчёркивания (_) или дефисы (-) вместо пробелов, например, new_document.txt.
Вопрос 5: Какая команда удаляет файл или папку?
Команда rm (Remove) удаляет файлы или директории. Аргумент TARGET указывает, что именно удаляется — файл или папка.
rm file.txt — удаляет файл file.txt.
rm -r directory — рекурсивно удаляет директорию directory и всё её содержимое, включая подкаталоги и файлы.
rm -f file.txt — удаляет файл без запроса подтверждения (force).
rm -rf directory — удаляет директорию и её содержимое без подтверждений.
rm -i file.txt — запрашивает подтверждение перед удалением каждого файла, что повышает безопасность.
rm -i *.txt — Запрашивает подтверждение для каждого .txt файла
Команда rm необратимо удаляет файлы и директории в большинстве Unix-подобных систем (Linux, macOS), так как они не перемещаются в корзину. Восстановление возможно только с помощью специализированных инструментов, и то не гарантировано. Для большей безопасности рассмотрите использование утилит вроде trash-cli, которые перемещают файлы в корзину вместо немедленного удаления.
Вопрос 6: Как скопировать файл или папку?
Команда cp (Copy) создаёт копию файла или директории. Формат: cp SRC DEST, где SRC — источник (файл или папка), DEST — место назначения (имя файла или путь к директории).
cp file.txt newfile.txt — скопирует файл file.txt в newfile.txt в текущей директории. Если файл с таким именем уже существует в месте назначения, cp перезапишет его без предупреждения. Для защиты от перезаписи используйте флаг -i (запрашивает подтверждение).
cp file.txt /path/to/dest/ — копирует file.txt в указанную директорию (например, /path/to/dest/file.txt).
cp -r dir dir_copy — рекурсивно копирует директорию dir со всем содержимым (файлы, подкаталоги) в dir_copy. Без флага -r попытка скопировать директорию завершится ошибкой, так как cp по умолчанию работает только с файлами.
cp -u file.txt backup/ — копирует file.txt в директорию backup только если файл новее или отсутствует в месте назначения.
cp -r project project_backup — создаёт копию директории project с содержимым под именем project_backup.
Вопрос 7: Как переместить или переименовать файл?
Команда mv (Move) перемещает или переименовывает файлы и директории. Формат: mv SRC DEST, где SRC — источник (файл или директория), а DEST — место назначения (новое имя или путь).
mv old.txt new.txt — переименовывает файл old.txt в new.txt в текущей директории. Если файл с именем new.txt уже существует, он будет перезаписан без предупреждения.
Для защиты от перезаписи используйте флаг -i
mv file.txt /tmp/ — перемещает файл file.txt в директорию /tmp/, сохраняя имя (результат: /tmp/file.txt).
mv dir /path/to/dest/ — перемещает директорию dir в указанный путь. Рекурсивный флаг -r не нужен, так как mv обрабатывает директории целиком.
mv old_dir new_dir — переименовывает директорию old_dir в new_dir.
mv file.txt /path/to/new_name.txt — перемещает файл и одновременно изменяет его имя.
Для массового перемещения или сложных операций рассмотрите rsync с опцией удаления источника (--remove-source-files).
Вопрос 8: Как создать каталог?
Команда mkdir (Make Directory) создаёт новую директорию с указанным именем. Формат: mkdir DIR, где DIR — имя или путь новой директории.
Если требуется создать вложенную структуру директорий, которых ещё нет, используют опцию -p. Она создаст все необходимые родительские папки, чтобы итоговый путь существовал.
mkdir new_folder — создаёт директорию new_folder в текущей рабочей директории.
mkdir -p /data/2025/july — создаёт директорию /data/2025/july, автоматически создавая промежуточные директории (data, 2025), если они отсутствуют. Без флага -p команда завершится ошибкой, если родительские директории не существуют.
mkdir folder1 folder2 — создаёт несколько директорий одновременно (folder1 и folder2).
Вопрос 9: Как удалить пустой каталог?
Команда rmdir DIR удаляет только пустой каталог с именем DIR. Если в каталоге есть файлы или папки, команда выдаст ошибку и не удалит его. Перед удалением полезно проверить содержимое с помощью ls DIR.
Вопрос 10: Как вывести содержимое файла?
Команда cat FILE выводит весь текст файла сразу в терминал. Для небольших файлов это удобно, но при больших объёмах весь текст прокручивается быстро и неудобно.
Для просмотра больших файлов используют less или more. Они открывают файл постранично, позволяют прокручивать содержимое вверх и вниз.
В less можно использовать команду F (ввести при открытом файле), чтобы перейти в режим реального времени, аналогичный tail -f, когда отображаются новые добавленные строки с возможностью прокрутки назад. Чтобы выйти из этого режима, нажмите Ctrl+C.
Вопрос 11: Как посмотреть первые строки файла?
head FILE по умолчанию выводит первые 10 строк; -n N — N строк.
$ head -n 5 logfile.log
Вопрос 12: Как посмотреть последние строки файла?
tail FILE показывает последние 10 строк; -f следит за изменениями в реальном времени. tail -n +N выводит содержимое, начиная с N-ой строки.
$ tail -f /var/log/auth.log
Вопрос 13: Как искать текст в файлах?
Команда grep PATTERN FILE ищет строки, содержащие заданный шаблон (PATTERN) в одном или нескольких файлах.
-r — рекурсивный поиск по всем файлам в директориях и поддиректориях.
-n — выводит номер строки вместе с результатом.
-i — игнорирует регистр символов при поиске.
grep -r "ERROR" /var/log Найдёт все строки с "ERROR" во всех файлах и подкаталогах внутри /var/log, независимо от регистра, если добавить -i.
Вопрос 14: Как найти файлы по критериям?
Команда find ROOT -name "PATTERN" ищет файлы и каталоги, начиная с корневой папки ROOT, по совпадению имени с шаблоном PATTERN.
-type f — искать только файлы.
-type d — искать только каталоги.
-mtime N — искать файлы, изменённые N дней назад (можно использовать +N или -N для старше/младше).
find /home/user -type f -name "*.sh" найдёт все файлы с расширением .sh в каталоге /home/user и подкаталогах. find универсальный инструмент для сложного поиска по имени, типу, времени, размеру и другим атрибутам файловой системы.
Вопрос 15: Как посчитать строки, слова и байты?
wc FILE выводит три числа: строки, слова, байты; -l, -w, -c для отдельных счётчиков. Используйте wc -m для подсчёта символов.
$ wc -l file.txt
Вопрос 16: Как изменить права доступа к файлу?
Команда chmod управляет правами доступа к файлам и каталогам в Unix-подобных системах. Права определяют, кто может читать, изменять или запускать файл.
Права делятся между тремя группами пользователей: владельцем файла, группой и остальными. Каждая группа может иметь три вида прав: чтение, запись и выполнение.
Чтение позволяет просматривать содержимое файла или список файлов в каталоге. Запись даёт возможность изменять содержимое файла или создавать файлы в каталоге. Выполнение означает право запускать файл как программу или заходить в каталог.
Для задания прав используют два формата — числовой и символьный.
В числовом формате каждому праву присваивается значение: чтение — 4, запись — 2, выполнение — 1. Сумма этих чисел задаёт права для каждой группы. Например, chmod 755 script.sh означает, что владелец может читать, писать и запускать файл (4+2+1=7), а группа и остальные — читать и запускать (4+1=5), но не писать.
Символьный формат позволяет добавлять или убирать права для конкретных групп. Например, chmod u+x script.sh добавит право запуска только владельцу. Здесь используются обозначения: u — владелец, g — группа, o — остальные, a — все. Операторы + добавляют права, - убирают, = задаёт точные права.
Важно не давать слишком широкие права, например, chmod 777 открывает полный доступ всем, что опасно для безопасности. Для конфиденциальных файлов обычно ставят chmod 600, чтобы права имел только владелец.
Текущие права можно увидеть через ls -l. Для изменения прав рекурсивно во всех вложенных каталогах используется опция -R.
stat -c "%a %n" /etc/passwd — вывод прав в числовом формате
Исполняемые файлы 755 chmod u+rwx,go=rx только владелец изменяет
Конфигурации 644 chmod u=rw,go=r группа/остальные - только чтение
Приватные данные 600 chmod u=rw,go= доступ только у владельца
Общие директории 2770 chmod g+s,ug=rwx,o= SGID + доступ для группы
Загрузочные папки 1777 chmod a=rwxt Sticky bit (1) запрещает удалять чужие файлы (например, в /tmp)
chmod --help — покажет шпаргалку прямо в терминале
Вопрос 17: Как сменить владельца файла?
chown USER:GROUP FILE назначает владельца и группу. chown -R меняет владельца рекурсивно.
$ sudo chown user:staff file.txt
Вопрос 18: Как отобразить список процессов?
Команда ps aux выводит статичный список всех запущенных процессов в системе с подробной информацией: пользователь, PID, использование CPU и памяти, время запуска и команду. Этот снимок фиксирован в момент вызова команды и не обновляется.
Для динамического мониторинга используют top или htop. Они показывают процессы в реальном времени, сортируют по загрузке процессора, памяти и позволяют взаимодействовать с процессами (завершать, менять приоритеты). htop более удобен визуально, поддерживает мышь и цветовое выделение, но может быть не установлен по умолчанию.
С помощью ps aux --sort=-%mem можно получить список процессов, отсортированный по убыванию использования памяти, что помогает выявлять ресурсоёмкие задачи.
Вопрос 19: Как завершить процесс?
kill PID отправляет SIGTERM; kill -9 PID отправляет SIGKILL.
$ kill 1234
Сначала попробуйте kill PID, только если не ответит — kill -9.
Вопрос 20: Как узнать свободное место на диске?
df -h показывает файловые системы и их использование в человекочитаемом виде. df -i проверит использование индексных дескрипторов (inodes).
Вопрос 21: Как узнать размер каталога?
du -sh DIR выводит итоговый размер каталога; --max-depth=1 покажет подкаталоги. du -h --exclude=PATTERN исключит ненужные папки.
$ du -sh /var/log
Вопрос 22: Как создать и распаковать архив tar?
tar -czf ARCHIVE.tar.gz DIR упаковывает и сжимает; tar -xzf ARCHIVE.tar.gz извлекает. tar -tzf покажет содержимое без распаковки.
$ tar -czf logs.tar.gz /var/log
Вопрос 23: Как сжать и распаковать gzip?
gzip FILE создаёт FILE.gz, gunzip FILE.gz восстанавливает; zcat выводит содержимое без распаковки. gzip -k сохраняет оригинал.
$ gzip report.txt
Вопрос 24: Как подключиться по SSH?
ssh USER@HOST устанавливает защищённое соединение; -p PORT для нестандартных портов. Используйте ~/.ssh/config для упрощения настроек.
$ ssh -p 2222 user@example.com
Вопрос 25: Как копировать файлы по SSH?
scp SRC USER@HOST:DEST передаёт файлы по SSH; -r для каталогов. scp -P PORT укажет порт, -C включит сжатие.
$ scp -r project user@host:/backups
Вопрос 26: Как посмотреть историю команд?
history отображает ранее введённые команды; !N выполняет команду с номером N. Настройте HISTTIMEFORMAT для отображения времени выполнения.
$ history
$ !42
Вопрос 27: Как создать псевдоним для команды?
alias NAME='COMMAND' задаёт короткое имя; unalias NAME удаляет.
$ alias ll='ls -lh'
Добавьте алиасы в ~/.bashrc для постоянного хранения.
Вопрос 28: Как вывести текст в терминал?
Команда echo в Linux-системах выводит текст или значения переменных в терминал. Формат: echo [опции] [строка]. Она принимает аргументы, которые интерпретируются как текст, и отображает их в стандартном выводе (stdout).
Базовое использование: echo "Hello, world" выведет строку Hello, world. Поддерживается подстановка переменных окружения: echo "Path: $PWD" покажет текущую рабочую директорию, например, Path: /home/user. Переменные обрабатываются в двойных кавычках, но игнорируются в одинарных: echo '$PWD' выведет $PWD буквально.
Опция -e включает распознавание escape-последовательностей. Например, echo -e "Line1\nLine2" выведет текст в две строки за счёт \n. Другие последовательности: \t для табуляции, \b для удаления предыдущего символа. Без -e спецсимволы выводятся как текст: echo "Line1\nLine2" даст Line1\nLine2.
Опция -n убирает перевод строки в конце вывода. Например, echo -n "Prompt: " выведет Prompt: без перехода на новую строку, что полезно для скриптов, где нужно продолжить ввод на той же строке.
Для вывода значений с пробелами или специальными символами используйте кавычки: echo "File name with spaces". Без кавычек пробелы могут интерпретироваться как разделители аргументов. Для вывода сложных данных или перенаправления в файл часто используют printf, который предоставляет больше контроля над форматированием, но echo проще для повседневных задач.
Команда универсальна, работает во всех оболочках (bash, zsh), часто применяется в скриптах для отладки или сообщений пользователю. Если переменная не определена, echo $VAR выведет пустую строку.
Вопрос 29: Как вывести переменные окружения?
env или printenv показывает все переменные и их значения. printenv VAR выведет конкретную переменную.
Вопрос 30: Как установить переменную окружения?
export VAR=VALUE устанавливает переменную для текущей сессии и её потомков. Добавьте export в ~/.profile или ~/.bash_profile для постоянного действия.
$ export PATH="$PATH:/opt/bin"
Вопрос 31: Как выполнить команду от root?
sudo COMMAND запускает команду с правами суперпользователя после ввода пароля. sudo -s откроет root-оболочку, sudo -l покажет разрешённые команды.
$ sudo apt update
Вопрос 32: Как узнать текущего пользователя?
whoami выводит имя текущего пользователя.id -un эквивалентен whoami.
Вопрос 33: Как узнать информацию о системе?
uname -a выводит данные о ядре, хосте, архитектуре и дате сборки. lsb_release -a даст информацию о дистрибутиве.
Вопрос 34: Как вывести текущие дату и время?
date печатает дату и время в стандартном или заданном формате через ключи +....
$ date +"%Y-%m-%d %H:%M:%S"
date -R выводит дату в формате RFC2822.
Вопрос 35: Как отредактировать crontab?
crontab -e открывает таблицу cron для текущего пользователя в редакторе. Используйте crontab -l для просмотра без редактирования.
Вопрос 36: Как проверить подключение к узлу?
ping HOST отправляет ICMP-запросы и показывает время ответа; -c COUNT задаёт число пакетов. ping -i 0.5 уменьшит интервал до 0.5 с.
$ ping -c 4 example.com
Вопрос 37: Как показать открытые порты и процессы?
ss -tulpn выводит TCP/UDP порты и связанные PID/имена процессов. ss -tunlp state listening покажет только прослушивающие сокеты.
Вопрос 38: Как загрузить файл из интернета?
Для загрузки файла из интернета в Linux-системах применяются команды wget и curl, каждая с особенностями, подходящими для разных сценариев.
Команда wget URL скачивает файл по указанному адресу, сохраняя его в текущую директорию с оригинальным именем. Например, wget https://example.com/file.zip загрузит file.zip. Опция -O filename позволяет задать своё имя файла: wget -O custom.zip https://example.com/file.zip. Для докачки частично загруженного файла используют -c, что предотвращает повторную загрузку с нуля при обрыве соединения.
Команда curl -O URL выполняет аналогичную задачу, сохраняя файл с именем из URL. Например, curl -O https://example.com/file.zip создаст file.zip. Для сохранения под другим именем применяют -o filename: curl -o custom.zip https://example.com/file.zip. Опция -C - включает докачку, как в wget. Если URL перенаправляет на другой адрес, curl -L следует за редиректами, что полезно для ссылок, ведущих через сокращатели или динамические маршруты.
Различия: wget проще для базовых задач, автоматически поддерживает докачку и рекурсивную загрузку сайтов (-r). Например, wget -r https://example.com/docs/ скачает всю структуру папки docs. curl более гибок для работы с API, поддерживает больше протоколов (FTP, SFTP) и позволяет настраивать HTTP-запросы (заголовки, методы). Например, curl -H "Authorization: Bearer token" URL добавляет заголовок для аутентификации.
Выбор зависит от задачи: wget удобен для простых загрузок, curl — для сложных сценариев с редиректами или API. Проверяйте доступность URL и права на запись в директорию перед загрузкой.
Вопрос 39: Как перенаправить и фильтровать вывод команд?
| передаёт вывод одной команды на вход другой, > перезаписывает файл, >> дополняет. 2>&1 объединяет stderr и stdout в один поток.
ls -l | grep '^d' > dirs.txt
Вопрос 40: Как получить справку по команде?
man COMMAND открывает руководство с описаниями опций и примерами; q для выхода. man -k keyword ищет по ключевому слову в заголовках man-страниц.
Вопрос 41: Как узнать IP-адрес сетевого интерфейса?
Команда ip a выводит детальную информацию по всем сетевым интерфейсам, включая IPv4 и IPv6 адреса; Ищите строки с префиксом inet для IPv4 и inet6 для IPv6.
Вопрос 42: Как просмотреть системный журнал с помощью journalctl?
journalctl без опций показывает полный системный журнал, ключ -u SERVICE фильтрует по юниту, -f — в режиме реального времени; journalctl --since "2 hours ago" позволит посмотреть только последние записи.
$ journalctl -u sshd -f
Вопрос 43: Как установить umask для новых файлов?
umask определяет дефолтные права новых файлов и директорий путем вычитания маски из 666/777;
$ umask 027
Добавьте umask 027 в ~/.bashrc для постоянного применения в интерактивных сессиях.
Вопрос 44: Как отобрать столбцы и строки в текстовом потоке с помощью awk?
awk '{print $1, $3}' FILE выводит первый и третий столбец каждой строки, ключ -F задаёт разделитель. Используйте условия вида awk '$5>1000' для фильтрации записей по значению столбца.
$ awk -F"," '{print $2}' data.csv
Вопрос 45: Как выполнить поточную замену текста с помощью sed?
sed -r 's/OLD/NEW/g' FILE заменяет все вхождения OLD на NEW во входном потоке. Резервируйте оригинал с помощью -i.bak перед прямым редактированием файла. sed -i 's/localhost/127.0.0.1/g' /etc/hosts
Вопрос 46: Что такое симлинки?
Симлинк (symbolic link) — это специальный файл, который указывает на другой файл или каталог. Когда вы обращаетесь к симлинку, система автоматически перенаправляет вас по указанному пути. Символическая ссылка не содержит данные целевого файла, она просто хранит путь к нему. Если исходный файл удалён, симлинк остаётся, но ведёт в никуда — в отличие от жёсткой ссылки, которая сохраняет доступ к данным, пока они физически существуют.
Симлинки удобны, когда нужно создать альтернативный путь к ресурсу, не дублируя его. Например, можно сделать симлинк с коротким именем на длинный путь или связать одну директорию с другой в другой части системы. Их часто используют при развёртывании приложений, чтобы, например, переключать симлинк current между версиями.
Вопрос 47: Как посчитать количество строк в выводе команды?
🔍 Count number of lines in command output
Чтобы определить, сколько строк вернёт команда, используют стандартную связку с wc -l. Это даёт количественную оценку результата без просмотра содержимого. Конструкция вида команда | wc -l применяется к любому построчному выводу. Например, ls -1 | wc -l покажет число файлов и директорий в текущем каталоге, ps aux | wc -l вернёт общее количество процессов (включая заголовок), а ps -e --no-headers | wc -l — только сами процессы.
Комбинация с grep, как в grep ssh /etc/passwd | wc -l, позволяет мгновенно понять, сколько совпадений найдено. Для логов это упрощает первичную диагностику: grep 'ERROR' /var/log/syslog | wc -l сразу даст число сбоев. Альтернатива — использовать grep -c, но не все команды имеют аналогичный флаг, поэтому wc -l остаётся универсальным вариантом.
Если нужно сохранить результат в переменную, используют подстановку $(...). Например, count=$(who | wc -l) даст количество активных пользователей в сессии. Это пригодно для скриптов, алертов, cron-задач и автоматической аналитики. Весь приём сводится к одному: превратить любой stdout в число строк, без лишнего кода.
Канал о технологиях, информационной безопасности: новости, туториалы, кейсы для ИТ-специалистов, бизнеса и новичков.
#технологии #программирование #линукс #кодинг #консоль #IT #администрирование #команды #обучение #linux #bash #Технологии #Cybersecurity #TechNews, #Кибербезопасность #InfoSec #ИБ #IT