Команды Linux для начинающих: Основное руководство по терминалу с примерами
Терминал выглядит устрашающе, пока не знаешь несколько десятков команд. Изучите наиболее важные из них, сгруппированные по тому, что вы пытаетесь сделать, а затем объедините их, чтобы ответить на реальный вопрос о файле журнала.
- Небольшой набор команд Linux охватывает большую часть повседневной работы:
ls,cd,cp,mv,rm,catиgrep. - Трубы (
|) соединяют простые инструменты для ответа на более сложные вопросы. rmне имеет корзины, поэтому проверьте еще раз, прежде чем нажимать Enter.- Используйте
manили--helpвсякий раз, когда вы забываете какой-либо вариант.
Большинство серверов, контейнеров и облачных машин работают под управлением Linux и обычно не имеют графического рабочего стола. Вот почему изучение команд Linux является таким полезным навыком как для разработчиков, так и для тестировщиков. Вам не нужно запоминать сотни. Несколько десятков унесут вас вдаль.
Мы протестировали примеры файлов, поиска и каналов в Git Bash для Windows, который предоставляет те же основные инструменты, и результаты получены в результате этого запуска. Мы не запускали команды разрешений, служб, пакетов и удаленного доступа, поскольку они зависят от реальной системы Linux. Подробности могут различаться в зависимости от дистрибутива, поэтому проверьте документацию вашей системы.
Безопасное начало работы
Для занятий вам не обязательно устанавливать Linux. Хорошие варианты включают в себя:
- Windows: Подсистема Windows для Linux (WSL) или Git Bash для основ.
- macOS: встроенный терминал, команды которого очень похожи, хотя некоторые параметры различаются.
- Любая система: контейнер. В нашем руководстве по Docker для начинающих показано, как его запустить.
Потренируйтесь в одноразовой папке и помните, что все в Linux чувствительно к регистру: Notes.txt и notes.txt — разные файлы.
Анатомия команды
ls -l /var/log
^ ^ ^
| | argument: what to act on
| option: how to behave
command: what to run
Короткие варианты обычно можно комбинировать, поэтому ls -l -a и ls -la совпадают. В длинных опциях используются два тире, как в --help. Для получения справки запустите man ls для получения полного руководства или ls --help для получения краткого описания. Нажмите q, чтобы покинуть страницу руководства.
Перемещение по файловой системе
| Команда | Что он делает |
|---|---|
страдающий |
Печатает текущую папку |
лс |
Перечисляет файлы |
лс -ла |
Перечисляет все файлы, включая скрытые, с подробностями. |
папка компакт-диска |
Перемещается в папку |
компакт-диск .. |
Перемещается на один уровень вверх |
компакт-диск ~ |
Переход в вашу домашнюю папку |
компакт-диск - |
Возврат в предыдущую папку |
Нажмите Tab для автоматического заполнения имен файлов и стрелку вверх, чтобы вернуться к предыдущим командам. Эти две привычки экономят больше времени, чем любой другой совет. Имя файла, начинающееся с точки, например .env, скрыто, а ls показывает его только с -a.
Управление файлами и папками
| Команда | Что он делает |
|---|---|
mkdir -p проект/журналы |
Создает папки, включая родительские |
сенсорный файл Notes.txt |
Создает пустой файл |
cp a.txt b.txt |
Копирует файл |
cp -r источник/резервное копирование/ |
Копирует папку |
мв a.txt b.txt |
Переименовывает или перемещает файл |
РМ a.txt |
Удаляет файл |
папка rm -r/ |
Удаляет папку и все, что в ней |
Вот короткая сессия из нашего пробега:
$ mkdir -p project/logs
$ cd project
$ touch notes.txt
$ ls
logs notes.txt
$ cp notes.txt backup.txt
$ mv backup.txt old.txt
$ ls
logs notes.txt old.txt
$ rm old.txt
$ ls
logs notes.txt
Совет: rm не использует корзину, и удаленные файлы обычно исчезают. Будьте особенно осторожны с rm -r и подстановочными знаками. Сначала запустите ls с тем же шаблоном, чтобы точно увидеть, что будет совпадать, и используйте rm -i, если вам нужен запрос для каждого файла.
Просмотр содержимого файла
| Команда | Что он делает |
|---|---|
кошачий файл |
Печатает целый файл |
меньше файла |
Прокручивает длинный файл (q для выхода) |
заголовок -n 5 файл |
Показывает первые пять строк |
хвост -n 5 файл |
Показывает последние пять строк |
хвост -f файл |
Следит за новыми строками по мере их написания |
wc -l файл |
Считает строки |
Для следующих нескольких примеров мы создали небольшой файл журнала:
$ cat logs/app.log
ERROR db down
INFO started
ERROR disk full
INFO stopped
$ head -n 1 logs/app.log
ERROR db down
$ tail -n 1 logs/app.log
INFO stopped
$ wc -l logs/app.log
4 logs/app.log
tail -f — это ежедневный инструмент для просмотра журнала приложений в реальном времени во время воспроизведения ошибки. Нажмите Ctrl+C, чтобы остановить его.
Найдите с помощью grep и найдите
grep ищет внутри файлов, а find ищет сами файлы:
$ grep ERROR logs/app.log
ERROR db down
ERROR disk full
$ grep -c ERROR logs/app.log
2
$ find . -name "*.log"
./logs/app.log
| Вариант | Значение |
|---|---|
греп -я |
Игнорирует регистр |
греп -р |
Рекурсивно ищет папку |
греп -н |
Показывает номера строк |
греп -v |
Показывает строки, которые не совпадают. |
греп -с |
Подсчитывает совпадающие строки |
Трубы и перенаправление
Именно эта идея делает командную строку такой мощной. Каждый инструмент выполняет одну небольшую работу, а вы их соединяете:
| Символ | Что он делает |
|---|---|
| |
Отправляет вывод одной команды в следующую |
> |
Записывает вывод в файл, заменяя его содержимое. |
>> |
Добавляет вывод в файл |
2> |
Записывает сообщения об ошибках в файл |
$ echo "hello" > greeting.txt
$ echo "world" >> greeting.txt
$ cat greeting.txt
hello
world
Будьте осторожны с одним >, потому что он автоматически перезаписывает то, что уже было в файле.
Реальный пример: суммирование журнала
Сколько строк каждого типа в нашем журнале? Объединение четырех простых команд дает ответ:
$ cut -d' ' -f1 logs/app.log | sort | uniq -c
2 ERROR
2 INFO
Чтение слева направо: cut берет первое слово в каждой строке, разделенное пробелом, sort группирует одинаковые слова вместе, а uniq -c подсчитывает каждую группу. Шаг сортировки имеет значение, поскольку uniq сворачивает только соседние дубликаты. Добавьте | sort -nr в конец, чтобы сначала перечислить наиболее распространенные.
Подобные однострочники очень помогают при расследовании сбоев. Он может быстро сказать вам, произошла ли ошибка дважды или две тысячи раз, и эту информацию полезно включить в отчет об ошибке.
Права доступа к файлам
Запустите ls -l и вы увидите что-то вроде этого:
-rwxr-xr-- 1 asha devs 512 Nov 1 10:00 deploy.sh
После первого символа, обозначающего тип файла, идут три группы по три символа: владельца, группы и всех остальных. Каждый может иметь r (чтение), w (запись) и x (выполнение).
| Команда | Что он делает |
|---|---|
chmod +x развертывание.sh |
Делает скрипт исполняемым |
файл chmod 644 |
Владелец может читать и писать, другие могут читать. |
chmod 755 скрипт.sh |
Владелец имеет полный доступ, другие могут читать и запускать |
файл chown asha |
Меняет владельца |
команда sudo |
Запускает команду от имени администратора |
Числа складываются: чтение — 4, запись — 2, выполнение — 1. Таким образом, 7 означает все три, а 5 означает чтение и выполнение. Избегайте chmod 777, который дает всем полный доступ, как быстрое исправление ошибок разрешений. Вместо этого найдите настоящую причину. И используйте sudo осторожно, поскольку он удаляет проверки безопасности, которые обычно защищают систему.
Процессы и системная информация
| Команда | Что он делает |
|---|---|
PS вспомогательный |
Перечисляет запущенные процессы |
top или htop |
Показывает просмотр процессора и памяти в реальном времени. |
убить 1234 |
Просит процесс 1234 остановиться |
дф -ч |
Показывает свободное место на диске |
папка du -sh |
Показывает размер папки |
бесплатно -h |
Показывает использование памяти |
статус systemctl nginx |
Показывает статус службы |
журналctl -u nginx |
Показывает журналы службы |
Для установки программного обеспечения используйте менеджер пакетов вашего дистрибутива, например sudo apt install curl в Debian и Ubuntu или sudo dnf install curl в Fedora и RHEL.
Архивы и удаленная работа
$ tar -czf logs.tar.gz logs
$ tar -tzf logs.tar.gz
logs/
logs/app.log
В tar, c означает создание, z означает gzip, f называет файл, а t перечисляет его содержимое. Чтобы извлечь архив, используйте tar -xzf logs.tar.gz. Для работы с другими машинами вам понадобятся эти три:
| Команда | Что он делает |
|---|---|
ssh пользователь@сервер |
Открывает удаленный терминал |
scp-файл user@server:/path/ |
Копирует файл через SSH |
локон -I https://example.com |
Показывает заголовки ответов URL-адреса. |
Эти же команды используются внутри Dockerfiles и конвейеров CI/CD, поэтому эти знания окупаются в работе DevOps.
Распространенные ошибки
- Использование
rm -rf, не глядя. Сначала проверьте папку с помощьюpwdи будьте осторожны с пробелами в путях. - Перезапись с помощью
>. Используйте>>, если хотите добавить. - Запуск всего с помощью
sudo. Используйте его только тогда, когда это необходимо. - Вставка команд, которые вы не понимаете. Сначала прочитайте их, особенно все, что связано с загрузкой по конвейеру в оболочку.
- Забываем кавычки. Они нужны имени файла с пробелами, например
"my file.txt".
Итоги
Вы не узнаете терминал, читая о нем. Откройте оболочку, создайте папку для тренировок и запустите команды каждого раздела. Затем попробуйте ответить на реальный вопрос, используя канал, например, какая ошибка чаще всего появляется в журнале. На этой неделе начните с навигации и файлов, на следующей добавьте grep и каналы, а остальное приложится по мере необходимости.
Часто задаваемые вопросы
Каковы самые основные команды Linux?
Начните с pwd, ls, cd, mkdir, cp, mv, rm, cat и grep. Они охватывают перемещение, управление файлами и поиск, что составляет большую часть повседневной работы с терминалом.
Как я могу практиковать команды Linux в Windows?
Используйте подсистему Windows для Linux для полноценной среды или Git Bash для основ. Запуск контейнера Linux с помощью Docker также работает хорошо.
В чем разница между > и >> в Linux?
Одиночный > заменяет содержимое файла выходными данными. Двойной >> добавляет вывод в конец файла и сохраняет то, что там уже есть.
Могу ли я отменить команду rm?
Обычно нет, потому что rm не использует корзину. Инструменты восстановления иногда помогают, но они ненадежны, поэтому сначала сохраняйте резервные копии и тщательно проверяйте их.
Что означает судо?
sudo запускает одну команду с правами администратора. Он необходим для таких задач, как установка программного обеспечения, и его следует использовать с осторожностью.
Продолжайте учиться
Нужна помощь с тестированием, WordPress или SEO?
Мы помогаем командам выпускать лучшее программное обеспечение и развивать свои сайты. Расскажите нам, над чем вы работаете, и мы предложим четкий следующий шаг.
Больше руководств по тестирование, искусственный интеллект и современные разработки
Понравилась эта статья? Выберите тему и сразу приступайте к нашим новейшим руководствам.
Объяснение галлюцинаций искусственного интеллекта: почему языковые модели все выдумывают и как их уменьшить
Галлюцинации ИИ объяснили: что это такое, почему языковые модели их создают, распространенные типы, как уменьшить их с помощью заземления и подсказо…
Читать статью →DevOpsОбъяснение переменных среды: файлы .env, секреты и правильно выполненная конфигурация
Переменные среды объясняются на примерах Python, которые мы запускали: их чтение и установка, почему каждое значение является строкой, файлы .env, н…
Читать статью →Разработка ПООбъяснение ограничения скорости API: алгоритмы, заголовки и обработка ошибок 429
Ограничение скорости API объясняется с помощью проведенного нами моделирования: сегмент токенов, фиксированное окно, скользящее окно, 429 ответов, з…
Читать статью →Автоматизация тестированияИздевательство в Python: unittest.mock, патч и ошибки, из-за которых тесты лгут
Издевательство на Python с помощью unittest.mock, протестировано: Mock и return_value, Side_effect, исправление использования имени, спецификация и …
Читать статью →Тестирование ПООбъяснение покрытия кода: покрытие линий или ветвей и что на самом деле означает 100%
Покрытие кода объяснено с помощью реального запуска покрытия.py: покрытие строк, ветвей и условий, чтение отчета, почему 100%-ное покрытие все еще м…
Читать статью →Базы данных и SQLDELETE, TRUNCATE и DROP в SQL: различия, откат и когда использовать каждый из них
Объяснение DELETE, TRUNCATE и DROP на примере протестированного SQL: что каждый из них удаляет, откат, триггеры, сброс идентификаторов, скорость и ч…
Читать статью →Базы данных и SQLОбъяснение представлений SQL: создавайте, используйте и избегайте ловушек, с примерами
Представления SQL, объясненные с помощью запросов, которые мы выполняли: создание представления, результаты в реальном времени, скрытие столбцов, пр…
Читать статью →Разработка ПОИнтерфейс TypeScript и тип: реальные различия, протестированные с помощью компилятора
Интерфейс TypeScript против типа, проверенный реальным компилятором: что могут делать оба, что может делать только один, слияние объявлений, расшире…
Читать статью →Разработка ПООбъяснение Python *args и **kwargs: гибкие функции с понятными примерами
Python *args и **kwargs, объясненные с помощью кода, который мы запускали: упаковка и распаковка, порядок параметров, аргументы только по ключевым с…
Читать статью →Разработка ПОЛямбда-функции Python: синтаксис, реальное использование и когда их не следует использовать
Лямбда-функции Python, объясненные с помощью кода, который мы запускали: синтаксис, сортировка с помощью ключа, карты и фильтра, замыкания, ловушка …
Читать статью →Искусственный интеллектЧто такое ИИ-агенты? Как они работают: можно запустить простой цикл агента
Что такое агенты ИИ? Простое руководство по циклу агента, инструментам, памяти и ограничениям, с небольшим циклом Python, который мы запустили, реал…
Читать статью →DevOpsМониторинг и наблюдаемость: реальная разница с журналами, метриками и трассировками
Объяснение мониторинга и наблюдаемости: известные и неизвестные сбои, журналы, метрики и трассировки, пошаговое руководство по инцидентам при оформл…
Читать статью →DevOpsDocker Volumes против Bind Mounts: правильное сохранение данных контейнера
Объяснение томов Docker и монтирования привязки: почему исчезают данные контейнера, именованные тома, монтирование привязки, tmpfs, примеры создания…
Читать статью →Автоматизация тестированияTDD против BDD: ключевые различия, одна функция, созданная для обоих способов, и когда использовать каждый
TDD и BDD объясняются с помощью одной функции скидки, созданной в обоих направлениях: красно-зеленый рефакторинг с кодом, который мы запускали, сцен…
Читать статью →Тестирование ПОПользовательское приемочное тестирование (UAT): процесс, контрольный список и реальные примеры
Приемочное тестирование пользователей объяснило: кто его проводит, чем оно отличается от контроля качества, семиэтапный процесс, шаблон тестового сц…
Читать статью →Базы данных и SQLОбъяснение значений NULL в SQL: IS NULL, COALESCE, NULLIF и ловушки, которых следует избегать
Значения SQL NULL объяснены с помощью запросов, которые мы выполнили: трехзначная логика, IS NULL, COALESCE, NULLIF, как агрегаты, соединения и сорт…
Читать статью →Базы данных и SQLОператор SQL CASE WHEN: синтаксис, реальные примеры и распространенные ошибки
SQL CASE WHEN объяснен с помощью запросов, которые мы выполняли: простые формы и формы для поиска, порядок условий, повороты с помощью SUM, трюки CO…
Читать статью →Разработка ПОЧто такое JWT? Веб-токены JSON, объясненные на рабочем примере
Что такое JWT? Объяснение JSON Web Tokens: три части: токен, созданный и измененный в коде, который мы запускали, JWT и сеансы, хранилище, токены об…
Читать статью →Разработка ПООбъяснение цикла событий JavaScript: стек вызовов, микрозадачи и таймеры с примерами
Цикл событий JavaScript объясняется с помощью кода, который мы запускали: стек вызовов, очереди задач и микрозадач, почему setTimeout 0 не является …
Читать статью →Разработка ПОГенераторы Python и объяснение доходности: экономьте память с помощью реальных примеров
Генераторы Python и доходность, объясненные с помощью кода, который мы запускали: как они приостанавливаются и возобновляются, измеряют экономию пам…
Читать статью →Искусственный интеллектЧто такое вложения? Простое объяснение векторов и косинусного сходства
Что такое вложения? Простое руководство по векторам, косинусному подобию и семантическому поиску с небольшим примером, который мы использовали, общи…
Читать статью →DevOpsСине-зеленое и канареечное развертывание: различия, компромиссы и как выбрать
Объяснение сине-зеленого и канареечного развертывания: как каждый из них работает, стоимость, риски и откат, стабильное группирование пользователей,…
Читать статью →Автоматизация тестированияНенадежные тесты: что их вызывает и как их исправить навсегда
Ненадежные тесты объясняются на демонстрациях, которые мы запускали: основные причины, способы подтверждения и диагностики, правильные исправления в…
Читать статью →Тестирование ПОНагрузочное тестирование и стресс-тестирование: различия, метрики и примеры k6
Объяснение нагрузочного и стресс-тестирования: что доказывает каждое из них, тесты на всплески и выдержки, важные метрики, почему средние значения в…
Читать статью →Тестирование ПОТестовый пример и тестовый сценарий: ключевые различия, примеры и когда использовать каждый
Объяснение тестового случая и тестового сценария: четкие определения, параллельная таблица, одна функция сброса пароля, взятая из сценариев в случаи…
Читать статью →Базы данных и SQLОптимизация SQL-запросов: чтение планов выполнения и исправление медленных запросов с указанием времени
Оптимизация SQL-запросов проверена на миллионе строк: читайте планы выполнения, добавляйте правильные индексы, исправляйте неразмещаемые фильтры, ис…
Читать статью →Базы данных и SQLSQL UNION против UNION ALL: различия, примеры и проверка производительности
SQL UNION и UNION ALL объяснены с помощью запросов, которые мы выполнили: дубликаты, правила, которым следуют оба, реальная ошибка данных, измеренна…
Читать статью →Разработка ПОУчебное пособие по API JavaScript Fetch: GET, POST, обработка ошибок и тайм-ауты
Учебное пособие по API JavaScript Fetch, протестированное на локальном сервере: GET и POST, почему не выдается ошибка 404, многоразовый помощник, ст…
Читать статью →Разработка ПООбработка файлов Python: чтение, запись, CSV, JSON и pathlib с примерами
Обработка файлов Python объясняется с помощью кода, который мы запускали: открытые режимы, чтение больших файлов, CSV, JSON, pathlib, двоичные файлы…
Читать статью →Разработка ПОКлассы и объекты Python: учебник ООП с реальными примерами
Классы и объекты Python, объясненные с помощью кода, который мы запускали: __init__, методы, атрибуты класса и экземпляра, наследование, свойства, м…
Читать статью →Искусственный интеллектЧто такое большая языковая модель? Как работают LLM, объяснено без шумихи
Что такое большая языковая модель? LLM объясняется простым языком: токены, встраивания, внимание, обучение, температурные и контекстные окна, крошеч…
Читать статью →DevOpsКоманды Linux для начинающих: основное руководство по терминалу с примерами
Команды Linux для начинающих, сгруппированные по задачам: навигация, файлы, просмотр журналов, grep, каналы, разрешения, процессы и архивы, с практи…
Читать статью →Автоматизация тестированияSelenium vs Playwright: ключевые различия, сравнение кода и что выбрать
Сравнение Selenium и Playwright: архитектура, ожидание, поддержка браузера и языка, отладка, одинаковый тест в обоих инструментах, советы по миграци…
Читать статью →Тестирование ПОРазделение эквивалентности: метод проектирования тестов, объясненный на рабочих примерах
Объяснение эквивалентного разделения: как найти действительные и недействительные разделы, рабочие примеры для возрастов, паролей и купонов, проведе…
Читать статью →Тестирование ПОСерьезность и приоритет в тестировании программного обеспечения: различия, матрица и реальные примеры
Объяснение серьезности и приоритета при тестировании программного обеспечения: четкие определения, четырехсторонняя матрица с примерами, шкалы уровн…
Читать статью →Базы данных и SQLУчебное пособие по подзапросам SQL: типы, коррелирующие подзапросы и EXISTS с примерами
Руководство по подзапросам SQL с выполненными нами запросами: скалярные подзапросы, IN, FROM и SELECT, коррелированные подзапросы, EXISTS, ловушка N…
Читать статью →Базы данных и SQLОбъяснение транзакций SQL и ACID: COMMIT, ROLLBACK и уровни изоляции
Транзакции SQL и ACID, объясненные с помощью банковского перевода, который мы выполнили: COMMIT, ROLLBACK, точки сохранения, блокировки, уровни изол…
Читать статью →Разработка ПОGit merge vs rebase: отличия, примеры и когда что использовать
Git merge vs rebase с реальным выводом log, сравнительной таблицей, золотым правилом rebase и безопасным рабочим процессом для команды.
Читать статью →Разработка ПОГенераторы списков в Python: синтаксис, примеры и когда их избегать
Генераторы списков в Python: синтаксис, фильтры, if-else, вложенные циклы, измеренное время и случаи, когда обычный цикл for лучше.
Читать статью →Базы данных и SQLSQL JOIN: объяснение с примерами (Inner, Left, Right, Full)
Разберите SQL JOIN шаг за шагом на примерах таблиц и запросов: INNER, LEFT, RIGHT, FULL, CROSS и SELF, а также частые ошибки и советы по производите…
Читать статью →