Вывод справки по команде в linux системах

Обновлено: 05.07.2024

Во всех операционных системах, в том числе и в Linux, термин 'команда' означает либо утилиту командной строки, либо определённую возможность, встроенную в командную оболочку системы. Тем не менее, для самих пользователей это различие не имеет особого значения. В конце концов, и те и другие команды терминала Linux вызываются одинаково. Вы вводите слово в вашем эмуляторе терминала и получаете результат выполнения команды.

Я уже писал о командах терминала Linux, но тогда затронул лишь несколько самых интересных, самых полезных команд, рассчитывая на то, что пользователь уже достаточно знаком с возможностями терминала. Но нужно сделать ещё одну статью, рассчитанную на новичков, тех, кто только делает свои первые шаги в освоении Linux.

И вот она. Её цель - собрать основные простые и сложные команды Linux, которые должен знать каждый пользователь, чтобы наиболее эффективно управлять своей системой. Для удобности запоминания опций команд я в скобках добавил слова, от которых они произошли - так намного проще, на себе проверено.

Это не значит, что я перечислю все команды, все перечислены тут - я постараюсь охватить всё самое полезное, то, что может пригодиться в повседневной жизни. Чтобы было удобнее читать, разделим этот список на категории команд по назначению. Большинство рассмотренных здесь утилит не требуют дополнительной установки, они будут предустановлены в любом дистрибутиве Linux, а если не будут, то их несложно найти в официальных репозиториях.

Команды Linux для управления файлами

Утилита для просмотра содержимого каталогов. По умолчанию показывает текущий каталог. Если в параметрах указать путь, то она перечислит содержимое конечного каталога. Полезные опции -l (List) и -a (All). Первая форматирует вывод в виде списка с более подробной информацией, а вторая включает показ скрытых файлов. Подробнее здесь.

2. cat

Позволяет перейти из текущего каталога в указанный. Если запустить без параметров - возвращает в домашний каталог. Вызов с двумя точками возвращает на уровень вверх относительно текущего каталога. Вызов с тире (cd -) возвращает к предыдущему каталогу. Более детально здесь.

4. pwd

Печатает на экран текущий каталог. Это может быть полезно, если ваша командная строка Linux не выводит такую информацию. Эта команда будет востребована в Bash программировании, где для получения ссылки на каталог выполняется скрипт. Более подробно в отдельной статье.

5. mkdir

Создание новых каталогов. Наиболее удобная опция -p (Parents), позволяет создать всю структуру подкаталогов одной командой, даже если они ещё не существуют. Подробнее о том как создать папку читайте в отдельной статье.

6. file

Команда file показывает тип файла. В Linux файлы не обязаны всегда иметь расширения для того, чтобы с ними работать. Поэтому пользователю иногда трудно определить, что за файл перед ним. Эта маленькая утилита решает проблему.

Копирование файлов и каталогов. Она не копирует каталоги по умолчанию рекурсивно (то есть все поддиректории и все файлы в поддиректориях), поэтому не забудьте добавить опцию -r (Recursive) или -a (Archive). Последняя включает режим сохранения атрибутов, владельца и временного штампа в дополнение к рекурсивному копированию.

Перемещение или переименование файлов и каталогов. Примечательно, что в Linux это одна и та же операция. Переименование - это перемещение файла в ту же папку с другим именем. Подробнее - здесь.

Удаляет файлы и папки. Очень полезная команда Linux: с её помощью вы можете убрать весь беспорядок. Если нужно рекурсивное удаление, используйте опцию -r. Однако будьте осторожны: конечно, для того чтобы повредить систему вам нужно будет серьёзно постараться, однако можно удалить собственные важные файлы. Rm удаляет файлы не в корзину, из которой потом всё можно будет восстановить, а полностью стирает. Действия оператора rm необратимы. Поверьте, ваши оправдания в духе "rm съела мою курсовую" никому не будут интересны. Подробнее в этой статье.

10. ln

Создает жёсткие или символические ссылки на файлы. Символические или программные ссылки - это что-то похожее на ярлыки в Windows. Они предоставляют удобный способ доступа к определённому файлу. Символические ссылки указывают на файл, но не имеют никаких метаданных. Жёсткие ссылки, в отличие от символических, указывают на физический адрес области диска, где хранятся данные файла.

11. chmod

Изменяет права доступа к файлу. Это чтение, запись и выполнение. Каждый пользователь может изменять права для своих файлов.

12. chown

Изменяет владельца файла. Только суперпользователь может изменять владельцев. Для рекурсивного изменения используйте опцию -R.

13. find

Поиск в файловой системе, файлах и папках. Это очень гибкая и мощная команда Linux не только из-за своих способностей ищейки, но и благодаря возможности выполнять произвольные команды для найденных файлов.

14. locate

В отличие от find, команда locate ведёт поиск в базе данных updatedb для шаблонов имён файлов. Эта база данных содержит снимок файловой системы, что позволяет искать очень быстро. Но этот поиск ненадёжен, потому что вы не можете быть уверены, что ничего не изменилось с момента последнего снимка. Подробнее - тут.

15. du

Показывает размер файла или каталога. Самые полезные опций: -h (Human), которая преобразует размеры файлов в легко читаемый формат, -s (Summarize), которая выводит минимум данных, и -d (Depth), устанавливающая глубину рекурсии по каталогам.

16. df

Анализатор дискового пространства. По умолчанию вывод достаточно подробный: перечислены все файловые системы, их размер, количество использованного и свободного пространства. Для удобства есть опция -h, делающая размеры легко читаемыми.

17. dd

Как сказано в официальном руководстве, это команда терминала для копирования и преобразования файлов. Не очень понятное описание, но это всё, что делает dd. Вы передаёте ей файл-источник, пункт назначения и пару дополнительных опций. Затем она делает копию одного файла в другой. Вы можете задать точный размер данных, которые нужно записать или скопировать. Работает утилита со всеми устройствами. Например, если вы хотите перезаписать жёсткий диск нулями из /dev/zero, можете сделать это. Также она часто используется для создания LiveUSB или гибридных ISO образов.

18 mount / umount

Это команды консоли Linux для подключения и отключения файловых систем Linux. Можно подключать всё: от USB накопителей, до ISO образов. И только у суперпользователя есть права для этого.

Linux команды консоли для работы с текстом

19. more / less

Это две простенькие команды терминала для просмотра длинных текстов, которые не вмещаются на одном экране. Представьте себе очень длинный вывод команды. Или вы вызвали cat для просмотра файла, и вашему эмулятору терминала потребовалось несколько секунд, чтобы прокрутить весь текст. Если ваш терминал не поддерживает прокрутки, вы можете сделать это с помощью less. Less новее, чем more и поддерживает больше опций, поэтому использовать more нет причин.

20. head / tail

Ещё одна пара, но здесь у каждой команды своя область применения. Утилита head выводит несколько первых строк из файла (голова), а tail выдает несколько последних строк (хвост). По умолчанию каждая утилита выводит десять строк. Но это можно изменить с помощью опции -n. Ещё один полезный параметр -f, это сокращение от follow (следовать). Утилита постоянно выводит изменения в файле на экран. Например, если вы хотите следить за лог файлом, вместо того, чтобы постоянно открывать и закрывать его, используйте команду tail -nf.

21. grep

Grep, как и другие инструменты Linux, делает одно действие, но делает его хорошо: она ищет текст по шаблону. По умолчанию она принимает стандартный ввод, но вы можете искать в файлах. Шаблон может быть строкой или регулярным выражением. Она может вывести как совпадающие, так и не совпадающие строки и их контекст. Каждый раз, когда вы выполняете команду, которая выдает очень много информации, не нужно анализировать всё вручную - пусть grep делает свою магию.

22. sort

Сортировка строк текста по различным критериям. Наиболее полезные опции: -n (Numeric), по числовому значению, и -r (Reverse), которая переворачивает вывод. Это может быть полезно для сортировки вывода du. Например, если хотите отсортировать файлы по размеру, просто соедините эти команды.

23. wc

Утилита командной строки Linux для подсчёта количества слов, строк, байт и символов. Подробнее тут.

24. diff

Показывает различия между двумя файлами в построчном сравнении. Причём выводятся только строки, в которых обнаружены отличия. Измененные строки отмечаются символом "с", удалнные - "d", а новые - "а". Подробнее - здесь.

Кстати, я подготовил ещё одну подробную статью, в которой описан именно просмотр содержимого текстового файла в Linux c помощью терминала.

Команды Linux для управления процессами

25. kill / xkill / pkill / killall

Служат для завершения процессов. Но они принимают различные параметры для идентификации процессов. Kill нужен PID процесса, xkill - достаточно кликнуть по окну, чтобы закрыть его, killall и pkill принимают имя процесса. Используйте ту, которая удобна в определенной ситуации.

26. ps / pgrep

Как уже говорилось, чтобы уничтожить процесс, нужен его идентификатор. Один из способов получить его, это утилита ps, которая печатает информацию о запущенных процессах. По умолчанию вывод очень длинный, поэтому используйте опцию -e, чтобы увидеть информацию об определённом процессе. Это только снимок состояния на момент вызова, и информация не будет обновляться. Команда ps с ключом aux выводит полную информацию о процессах. Pgrep работает следующим образом: вы задаете имя процесса, а утилита показывает его идентификатор. Подробнее о команде ps описано тут.

27. top / htop

Обе команды похожи, обе отображают процессы и могут быть использованы как консольные системные мониторы. Я рекомендую установить htop, если в вашем дистрибутиве он не поставляется по умолчанию, так как это улучшенная версия top. Вы сможете не только просматривать, но и контролировать процессы через его интерактивный интерфейс.

28. time

Время выполнения процесса. Это секундомер для выполнения программы. Полезно, если вам интересно, насколько сильно ваша реализация алгоритма отстает от стандартной. Но, несмотря на такое название, она не сообщит вам текущее время, используйте для этого команду date.

Команды Linux окружения пользователя

29. su / sudo

Su и sudo - это два способа выполнить одну и ту же задачу: запустить программу от имени другого пользователя. В зависимости от вашего дистрибутива вы, наверное, используете одну или другую. Но работают обе. Разница в том, что su переключает вас на другого пользователя, а sudo только выполняет команду от его имени. Поэтому использование sudo будет наиболее безопасным вариантом работы. Я писал про права суперпользователя в этой статье.

30. date

В отличие от time, делает именно то, чего вы от неё и ожидаете: выводит дату и время в стандартный вывод. Его можно форматировать в зависимости от ваших потребностей: вывести год, месяц, день, установить 12-ти или 24-ти часовой формат, получить наносекунды или номер недели. Например, date +"%j %V", выведет день в году и номер недели в формате ISO.

31. alias

Команда создаёт синонимы для других команд Linux. То есть вы можете делать новые команды или группы команд, а также переименовывать существующие. Это очень удобно для сокращения длинных команд, которые вы часто используете, или создания более понятных имен для команд, которые вы используете нечасто и не можете запомнить. Здесь собрано несколько полезных алиасов.

32. uname

Выводит некую основную информацию о системе. Без параметров она не покажет ничего полезного, кроме строчки Linux, но, если задать параметр -a (All), можно получить информацию о ядре, имени хоста и узнать архитектуру процессора.

33. uptime

Сообщает вам время работы системы. Не очень существенная информация, но может быть полезна для случайных вычислений или просто ради интереса, чтобы узнать, как давно был перезагружен сервер.

34. sleep

Вам, наверное, интересно как же её можно использовать. Даже не учитывая Bash-скриптинг, у неё есть свои преимущества. Например, если вы хотите выключить компьютер через определенный промежуток времени или использовать в качестве импровизированной тревоги.

Команды Linux для управления пользователями

35. useradd / userdel / usermod

Эти команды консоли Linux позволяют вам добавлять, удалять и изменять учетные записи пользователей. Скорее всего, вы не будете использовать их очень часто. Особенно если это домашний компьютер, и вы являетесь единственным пользователем. Управлять пользователями можно и с помощью графического интерфейса, но лучше знать об этих командах на всякий случай.

36. passwd

Эта команда позволяет изменить пароль учетной записи пользователя. Как суперпользователь вы можете сбросить пароли всех пользователей, даже несмотря на то, что не можете их увидеть. Хорошая практика безопасности - менять пароль почаще.

Linux команды для просмотра документации

37. man / whatis

Команда man открывает руководство по определённой команде. Для всех основных команд Linux есть man страницы. Whatis показывает, какие разделы руководств есть для данной команды.

38. whereis

Показывает полный путь к исполняемому файлу программы. Также может показать путь к исходникам, если они есть в системе.

Команды Linux для управления сетью

39. ip

Если список команд Linux для управления сетью вам кажется слишком коротким, скорее всего вы не знакомы с утилитой ip. В пакете net-tools содержится множество других утилит: ipconfig, netstat и прочие устаревшие, вроде iproute2. Всё это заменяет одна утилита - ip. Вы можете рассматривать её как швейцарский армейский нож для работы с сетью или как непонятную массу, но в любом случае за ней будущее. Просто смиритесь с этим.

40. ping

Ping - это ICMP ECHO_REQUEST дейтаграммы, но на самом деле это неважно. Важно то, что утилита ping может быть очень полезным диагностическим инструментом. Она поможет быстро проверить, подключены ли вы к маршрутизатору или к интернету, и дает кое-какое представление о качестве этой связи.

41. nethogs

Если у вас медленный интернет, то вам, наверное, было бы интересно знать, сколько трафика использует какая-либо программа в Linux или какая программа потребляет всю скорость. Теперь это можно сделать с помощью утилиты nethogs. Для того чтобы задать сетевой интерфейс используйте опцию -i.

42. traceroute

Это усовершенствованная версия ping. Мы можем увидеть не только полный маршрут сетевых пакетов, но и доступность узла, а также время доставки этих пакетов на каждый из узлов. Подробнее - тут.

Выводы

Мы рассмотрели основные команды Linux, которые могут пригодиться вам при повседневном использовании системы. Если вы считаете, что есть другие команды, которые нужно добавить в этот список, напишите в комментариях!

Подробно объясните команды справки Linux-help, --help, man, info

оглавление

  • Введение в команды справки Linux
  • команда help и параметр --help
  • команда человека
  • информационная команда

1. Введение в команды справки Linux

В системе Linux есть тысячи команд, и каждая команда имеет несколько или даже десятки параметров, указывающих на использование в различных сценариях.

Есть некоторые команды, которые нам нужно часто использовать в нашей повседневной работе. Даже если мы не запоминаем команды преднамеренно, они будут впечатлены практикой, доведенной до совершенства. Но как насчет незнакомых команд или незнакомых параметров знакомых команд?

Конечно, нам не нужно тратить много энергии на запоминание этих команд и параметров, просто используйте команды справки Linux правильно, и мы сможем быстро найти нужные команды и параметры.

Команды справки Linux в основном включают три:

  1. команда help и параметр --help
  2. команда человека
  3. информационная команда

Далее я расскажу об использовании и различиях этих трех команд.

Два, команда справки и параметр --help

2.1 команда помощи

Команда help может распечатать справочную информацию по нужной нам команде на консоли. Использование:

Например, если мы хотим просмотреть команды справки команд cd и mv, мы можем получить следующий вывод при использовании команды справки в приведенной выше форме:

 cd

 mv

Почему такая разница? Почему я не могу просмотреть справочную информацию о команде mv? Необходимо ввести "Встроенные команды"с участием"Внешняя команда"Концепция чего-либо

2.2 Встроенные команды и внешние команды

LinuxВстроенные командыЭто часть программы оболочки, которая загружается и находится в системной памяти, когда система Linux загружается и работает, поэтому скорость выполнения выше.

LinuxВнешняя командаЭто команда, полученная путем дополнительной установки, и она не загружается в контент вместе с системой. Она работает медленно, но мощно.

Используйте команду type, чтобы проверить, является ли команда встроенной или внешней командой.

Например, упомянутые выше команды cd и mv, давайте посмотрим, к какому типу команды они относятся.

cd

mv


Из приведенной выше информации мы обнаруживаем, что команда cd является встроенной командой, а команда mv - внешней командой. После многих попыток можно обнаружить, что команду справки в приведенной выше форме можно использовать только для запроса справочной информации встроенных команд.

Мы можем попробовать просмотреть справочный документ самой команды справки

 help

Нетрудно видеть, что только встроенная команда может использовать команду справки следующей формы для запроса файла справки.

2.3-параметр помощи

Если вы хотите использовать справку для запроса справочного документа внешней команды, приведенная выше форма не будет работать, но вы можете использовать следующую форму для запроса справочного документа внешней команды

** Следует отметить, что эти две формы помощи не полностью эквивалентны. ** Первый предназначен для просмотра справочного документа, выполнив встроенную команду справки, а второй - для отображения справочного документа команды запроса путем переноса справки по параметру после команды. Мы могли бы также попытаться запросить справочную документацию по внешней команде mv:

mv --help

Нетрудно обнаружить, что команда mv поддерживает параметр --help для отображения справочной информации по этой команде и выхода.

Три, команда человека

3.1 Справочная информация, предоставленная человеком

man - это сокращение от manual.В отличие от команды help и параметра --help, когда вы используете команду man для запроса справочного руководства, вы входите в интерфейс страницы руководства, а не напрямую печатаете его на консоли. Одновременно,По сравнению с help, команда man содержит более полную информацию, а help отображает краткую информацию.

Например, мы хотим просмотреть справочную информацию по команде mv

man mv

На странице руководства представлена ​​информация о «имени», «сводке» и «введении» команды mv, а другая информация, такая как «информация об авторе» и «еще», не показана на рисунке. В частности:

название смысл
NAME Название команды и краткое описание
SYNOPSIS Сводка синтаксиса выполнения команды
DESCRIPTION Полное описание команды
OPTIONS Список всех доступных элементов параметров
COMMANDS Когда команда выполняется, команда, которая может быть выполнена в программе
FILES Некоторые файлы, на которые ссылается или связывает эта команда
SEE ALSO Другие примечания об этой команде
EXAMPLE Некоторые примеры, к которым вы можете обратиться
BUGS Есть ли связанные ошибки

Мы заметили, что в первой строке стоит «MV (1)». Что означает число в скобках? Фактически это классификация запрошенной информации.

цифровой Представление
1 Стандартные команды или исполняемые файлы, с которыми пользователи могут работать в среде оболочки
2 Функции и инструменты, вызываемые ядром системы
3 Часто используемые библиотечные функции
4 Файлы оборудования и описания оборудования и т. Д.
5 Файл конфигурации или формат файла
6 Игры и другие развлечения
7 Информация о соглашении и т. Д.
8 Команды управления доступны системным администраторам
9 Документы, относящиеся к ядру Linux

3.2 Основные операции на странице руководства

Самым большим преимуществом команды man перед командой help является то, что пользователь может выполнять такие операции, как перелистывание страниц и поиск на странице руководства посредством ключевого взаимодействия. Общие ключевые операции показаны ниже.

кнопка Характеристики
пробел Перевернуть страницу
/str Искать строку str в обратном направлении
?str С нетерпением жду строки str
n, N n - следующая найденная строка, N - предыдущая найденная строка
q Выйти из справочной страницы

В-четвертых, информационная команда

4.1 Справочная информация, предоставленная info

Функция команды info в основном аналогична функции команды man, которая может отображать соответствующую информацию и информацию о команде.

Отличие от команды man состоит в том, что, с одной стороны, команда info может получить более обширную справочную информацию, относящуюся к команде запроса; с другой стороны, информационная страница разделяет данные файла на параграфы и поддерживает их в виде «узлов» Вся страница страницы и разделенные абзацы соответствуют узлам, поэтому пользователи могут переключаться между узлами и легко читать содержимое каждого абзаца.

Взяв в качестве примера информацию о команде, мы вошли на страницу с информацией о команде.

Первый уровень: верхний узел, который отображает основную информацию о команде info иСправочная информация

 info page

Второй уровень: узел каталога первого уровня, который отображает подробное содержимое каталога первого уровня, который может содержать список каталогов второго уровня.

 info page

Третий уровень: узел каталога второго уровня: отображает подробное содержимое в каталоге второго уровня.

 info page

4.2 Основные операции на информационной странице

Информационная страница предоставляет интерактивные операции, такие как перелистывание страниц, переход по узлу и поиск.

кнопка Характеристики
пробел Листать вниз
Введите ключ Перейти к следующему узлу
P Перейти к предыдущему узлу
U Вернуться к предыдущему узлу
Введите ключ Переместите курсор к узлу следующего слоя и нажмите Enter, чтобы войти.
B Перейти к первому узлу текущей информационной страницы
E Перейти к последнему узлу текущей информационной страницы
/ Искать на информационной странице
Q Закрыть информационную страницу

Мой официальный аккаунт: всесторонний программист

Мои знания: разносторонний программист

Приветствуем ваше внимание и общение

Если вы считаете, что эта статья полезна для вас, не стесняйтесь, она понравится

Используемые в Linux электронные справочные системы (online help) являются логичным следствием как его родства с семейством операционных систем UNIX — страницы руководства man(1) (manual pages), так и принадлежностью к свободному программному обеспечению под эгидой движения GNU — справочная система info(1).

Следует отметить, что понятие online в контексте справочных систем вовсе не означает их доступность через Интернет, как это часто, но ошибочно, воспринимается сегодня. В рассматриваемом контексте online означает немедленную доступность справочной информации непосредственно из программного обеспечения, по сравнению со справочной информацией, доступной в печатной, offline, форме.

Система страниц руководства

Самой известной справочной системой, сопровождающей UNIX практически с момента ее рождения, является справочная система страниц руководства, информация из которой доступна при помощи команд man(1), apropos(1) и whatis(1).

Справочная система man-pages(7) состоит из отдельных страниц, посвященных отдельным командам, специальным файлам устройств, конфигурационным файлам, системным и библиотечным вызовам и другим понятиям, которые сгруппированы по восьми (обычно, но есть исключения из правил) секциям.

Каждая секция имеет заголовочную страницу Intro, описывающую назначение самой секции.

Секции справочной системы man(1)

Формат страниц справочной системы man

$ file /usr/share/man/ru/man1/man.1.gz
/usr/share/man/ru/manl/man.1.gz : gzip compressed data, from Unix, max compression

Команда man(1), таким образом, ответственна за поиск указанной пользователем страницы, распаковку ее сжатого файла при помощи распаковщика gzip(1), форматирования при помощи процессора troff(1) и (по умолчанию) вывод результата на терминал при помощи постраничного листателя less(1).

Именно процессор troff умеет посредством управляющих последовательностей нужного терминала раскрашивать вывод страниц руководства правильным образом, а листатель less прокручивать подготовленную справку вперед и назад.

Использование языка разметки позволяет форматировать страницу одинаково удобно для просмотра на разных терминалах с различным количеством столбцов, которые учитывает troff, и разным количеством строк, учитываемым less.

Так, например, результат одинаково хорош и на псевдотерминале в окне эмулятора терминала xtern или gnome-terminal развернутого в любой размер, и на виртуальном терминале консоли с загруженным шрифтом любого размера.

Более того, использование универсального языка разметки,и соответствующий «драйвер» troff позволяет преобразовывать страницы руководства в самые разные виды. Например, в «принтерный» PostScript или PCL пригодный для печати на принтере с высокой разрешающей способностью, или в HTML (При наличии установленного пакета groff) для просмотра в html-браузере.

Форматирование справочных страниц руководства для печати и для html-браузера

$ man -t man > man.print.1

$ file man.1.print

man.print. 1: PostScript document text conforming DSC level 3.0

$ man -Tlj4 man > man.print.2

$ file man.html
man.html: HTML document, ASCII text, with very long lines

При просмотре страниц руководства на терминале навигация по изображаемой справочной странице производится так, как предусмотрено используемым листателем, которым по умолчанию в большинстве случаев будет less(1), приемник классического more(1).

Одним из самых полезных навигационных действий в справочных системах является поиск регулярных выражений. Собственно страницы руководства разбиты на разделы, заголовки которых размещаются в начале строк и записываются в верхнем регистре.

SYNOPSIS — краткий обзор,

FILES — используемые программой (конфигурационные) файлы,

ENVIRONMENT — переменные окружения и пр.

Поэтому для перемещения к разделу TOPIC очень удобно использовать символ поиска / и выражение ^ТОРIС, что буквально означает: найти в начале строки — ^ слово — ТОРIС.

Клавиши навигации листателей страниц

Справочная система GNU

Еще одной системой документации является система W:[GNU texinfo]. В отличие от справочника man, выступающего по сути кратким руководством по командам, их опциям и аргументам, справочник info представляет собой развернутое руководство с примерами и объяснениями.

Справочная система состоит из предварительно подготовленных (гипертекстовых страниц, размещенных в сжатых файлах каталога /usr/share/info, оглавлением которым служит так называемый «каталог» документации. Каждая страница структурирована при помощи иерархически упорядоченных, так называемых «нод», аналогов книжных разделов/пбдразделов/глав/секций.

Язык разметки texinfo, как и язык roff в системе страниц руководства, позволяет подготавливать разные представления справочной информации из единого источника при помощи специальных инструментов (При наличии установленного пакета texinfo и исходных файлов документации .texi), но в отличие от страниц руководства man только при наличии исходных файлов документации.

Встроенная справка командного интерпретатора

Как было указано ранее, команды интерпретатору могут приводить к вызову внешних программ операционной системы или исполняться непосредственно интерпретатором, будучи встроенными в него.

Внешние программы зачастую документируются отдельными страницами руководства man или отдельными справочными страницами info, тогда как встроенные команды являются частью интерпретатора и естественным образом описываются все вместе на справочной странице, посвященной интерпретатору.

Справка по встроенным командам интерпретатора

$ type cd

cd встроена в оболочку

$ man cd

Нет справочной страницы для cd

$ whatis cd

cd: ничего подходящего не найдено.

$ man bash

SHELL BUILTIN COMMANDS

Однако обращаться каждой раз к весьма внушительной справке по командному интерпретатору не совсем удобно, поэтому встроенная в командный интерпретатор команда help позволяет получить краткую справку по встроенным командам интерпретатора.

Встроенная справка командного интерпретатора

$ help -d help

$ help -d cd

$ help cd

cd: cd [-L|[-P [-e]]] [каталог]

Change the shell working directory.

Change the current directory to DIR. The default DIR is the value of the HOME shell variable.

The variable QDPATH defines the search path for the directory containing DIR. Alternative directory names in CDPATH are separated by a colon (:).

Всем привет! Меня зовут Саша, и я больше шести лет занимаюсь тестированием бэкенда (сервисы Linux и API). Мысль о статье у меня появилась после очередной просьбы знакомого тестировщика подсказать ему, что можно почитать по командам Linux перед собеседованием. Обычно от кандидата на позицию QA инженера требуют знание основных команд (если, конечно, подразумевается работа с Linux), но как понять, про какие команды стоит почитать во время подготовки к собеседованию, если опыта работы с Linux мало или вовсе нет?

Поэтому, хоть про это уже и много раз написано, я всё же решился написать ещё одну статью «Linux для новичков» и перечислить здесь базовые команды, которые нужно знать перед любым собеседованием в отдел (или компанию), где используют Linux. Я подумал, какие команды и утилиты и с какими параметрами я использую чаще всего, собрал фидбек от коллег, и скомпоновал это всё в одну статью. Статья условно делится на 3 части: сначала краткая информация об основах ввода-вывода в терминале Linux, затем обзор самых базовых команд, а в третьей части описывается решение типовых задач в Linux.

У каждой команды есть много опций, здесь все они перечислены не будут. Всегда можно ввести `man <команда>` или `<команда> --help`, чтобы узнать о команде подробнее.

Если какая-то команда выполняется слишком долго, её можно завершить, нажав в консоли Ctrl+C (процессу посылается сигнал SIGINT).


Если мы выведем содержимое файла man_signal, то мы увидим, что оно идентично тому, что было бы при простом запуске команды `man signal`.


Операция перенаправления `2>&1` означает перенаправление stderr туда же, куда направлен stdout.

Еще один удобный инструмент для работы с вводом-выводом (а точнее, это удобное средство межпроцессного взаимодействия) — pipe (или конвейер). Конвейеры часто используются для связи нескольких команд: stdout команды перенаправляется в stdin следующей, и так по цепочке:

Вывести текущую (рабочую) директорию.

Вывести текущую дату и время системы.

Данная команда показывает, кто залогинен в системе. Помимо этого также на экран выводится uptime и LA (load average).

Вывести содержимое директории. Если не передать путь, то выведется содержимое текущей директории.


Лично я часто использую опции -l (long listing format — вывод в колонку с дополнительной информацией о файлах), -t (сортировка по времени изменения файла/директории) и -r (обратная сортировка — в сочетании с -t наиболее «свежие» файлы будут внизу):

Есть 2 специальных имени директории: "." и "..". Первое означает текущую директорию, второе — родительскую директорию. Их бывает удобно использовать в различных командах, в частности, ls:


Также есть полезная опция для вывода скрытых файлов (начинаются на ".") — -a:


И еще можно использовать опцию -h — вывод в human readable формате (обратите внимание на размеры файлов):

Изменить текущую директорию.


Если не передавать имя директории в качестве аргумента, будет использоваться переменная окружения $HOME, то есть домашняя директория. Также может быть удобно использовать `

` — специальный символ, означающий $HOME:

mkdir


Иногда нужно создать определенную структуру директорий: например, директорию в директории, которой не существует. Чтобы не вводить несколько раз подряд mkdir, можно использовать опцию -p — она позволяет создать все недостающие директории в иерархии. Также с этой опцией mkdir не вернет ошибку, если директория существует.


Опция -r позволяет рекурсивно удалять директории со всем их содержимым, опция -f позволяет игнорировать ошибки при удалении (например, о несуществующем файле). Эти опции позволяют, грубо говоря, гарантированно удалить всю иерархию файлов и директорий (если на это есть права у пользователя), поэтому, их нужно использовать с осторожностью (классический пример-шутка — "rm -rf /", при определенных обстоятельствах удалит вам если не всю систему, то очень много важных для её работоспособности файлов).

Копировать файл или директорию.


У этой команды также есть опции -r и -f, их можно использовать, чтобы гарантированно скопировать иерархию директорий и папок в другое место.

Переместить или переименовать файл или директорию.

Вывести содержимое файла (или файлов).


Также стоит обратить внимание на команды head (вывести n первых строк или байт файла) и tail (о ней — далее).

Вывести n последних строк или байт файла.


Очень полезной является опция -f — она позволяет выводить новые данные в файле в реальном времени.

Иногда текстовый файл слишком большой, и неудобно выводить его командой cat. Тогда можно открыть его с помощью команды less: файл будет выводиться по частям, доступна навигация по этим частям, поиск и прочий простой функционал.


Также может оказаться удобным вариант использования less с конвейером (pipe):

Вывести список процессов.


Я сам обычно использую BSD опции "aux" — вывести все процессы в системе (так как процессов может быть много, я вывел только первые 5 из них, использовав конвейер (pipe) и команду head):


Многие также используют BSD опции "axjf", что позволяет вывести дерево процессов (здесь я убрал часть вывода для демонстрации):


У этой команды много различных опций, так что при активном использовании рекомендую ознакомиться с документацией. Для большинства же случаев хватит просто знать "ps aux".

Послать сигнал процессу. По умолчанию посылается сигнал SIGTERM, который завершает процесс.


Так как процесс может иметь обработчики сигналов, kill не всегда приводит к ожидаемому результату — моментальному завершению процесса. Чтобы «убить» процесс наверняка, нужно послать процессу сигнал SIGKILL. Однако это может привести к потере данных (например, если процесс перед завершением должен сохранить какую-то информацию на диск), так что нужно пользоваться такой командой осторожно. Номер сигнала SIGKILL — 9, поэтому короткий вариант команды выглядит так:


Помимо упомянутых SIGTERM и SIGKILL существует еще множество различных сигналов, их список можно легко найти в интернете. И не забывайте, что сигналы SIGKILL и SIGSTOP не могут быть перехвачены или проигнорированы.

Послать хосту ICMP пакет ECHO_REQUEST.


По умолчанию ping работает, пока его не завершить вручную. Поэтому может быть полезна опция -c — количество пакетов, после отправки которых ping завершится самостоятельно. Ещё одна опция, которую я иногда использую — -i, интервал между посылками пакетов.

OpenSSH SSH клиент, позволяет подключаться к удаленному хосту.


Есть много нюансов в использовании SSH, также этот клиент обладает большим количеством возможностей, поэтому при желании (или необходимости) можно почитать про это более подробно.

Копировать файлы между хостами (для этого используется ssh).

rsync

Также для синхронизации директорий между хостами можно использовать rsync (-a — archive mode, позволяет скопировать полностью всё содержимое директории «как есть», -v — вывод на консоль дополнительной информации):

Вывести на экран строку текста.


Здесь заслуживают внимания опции -n — не дополнять строку переносом строки в конце, и -e — включить интерпретацию экранирования с помощью "\".


Также с помощью этой команды можно выводить значения переменных. Например, в Linux exit code последней завершенной команды хранится в специальной переменной $?, и таким образом можно узнать, какая именно ошибка произошла в последнем запущенном приложении:

telnet

Клиент для протокола TELNET. Используется для коммуникации с другим хостом.


Если нужно использовать протокол TLS (напомню, что SSL давно устарел), то telnet для этих целей не подойдёт. Зато подойдёт клиент openssl:

Пример использования openssl с выводом ответа на GET запрос

Изменить владельца файла

Изменить владельца файла или директории можно с помощью команды chown:


В параметр этой команде нужно отдать нового владельца и группу (опционально), разделенных двоеточием. Также при изменении владельца директории может быть полезна опция -R — тогда владельцы изменятся и у всего содержимого директории.

Изменить права доступа файла

Эта задача решается с помощью команды chmod. В качестве примера приведу установку прав «владельцу разрешено чтение, запись и исполнение, группе разрешено чтение и запись, всем остальным — ничего»:


Первая 7 (это 0b111 в битовом представлении) в параметре означает «все права для владельца», вторая 6 (это 0b110 в битовом представлении) — «чтение и запись», ну и 0 — это ничего для остальных. Битовая маска состоит из трёх битов: самый младший («правый») бит отвечает за исполнение, следующий за ним («средний») — за запись, и самый старший («левый») — за чтение.
Также можно выставлять права с помощью специальных символов (мнемонический синтаксис). Например, в следующем примере сначала убираются права на исполнение для текущего пользователя, а затем возвращаются обратно:


У этой команды есть много вариантов использования, поэтому советую прочитать про неё подробнее (особенно про мнемонический синтаксис, например, здесь).

Вывести содержимое бинарного файла

Это можно сделать с помощью утилиты hexdump. Ниже приведены примеры её использования.


С помощью этой утилиты можно вывести данные и в других форматах, однако наиболее часто могут пригодиться именно такие варианты её использования.

Искать файлы

Найти файл по части имени в дереве каталогов можно с помощью команды find:


Также доступны другие опции и фильтры поиска. Например, так можно найти файлы в папке test, созданные более 5 дней назад:

Искать текст в файлах


Один из популярных способов использования команды grep — использование её в конвейере (pipe):


Опция -v позволяет сделать эффект grep'а обратным — будут выводиться только строки, не содержащие паттерн, переданный в grep.

Смотреть установленные пакеты

Универсальной команды нет, потому что всё зависит от дистрибутива Linux и используемого пакетного менеджера. Скорее всего вам поможет одна из следующих команд:

Посмотреть, сколько места занимает дерево директорий

Один из вариантов использования команды du:


Можно менять значение параметра -d, чтобы получать более подробную информацию о дереве директорий. Также можно использовать команду в комбинации с sort:


Опция -h у команды sort позволяет сортировать размеры, записанные в human readable формате (например, 1K, 2G), опция -r позволяет отсортировать данные в обратном порядке.

«Найти и заменить» в файле, в файлах в директории

Данная операция выполняется с помощью утилиты sed (без флага g в конце заменится только первое вхождение «old-text» в строке):


Можно использовать её для нескольких файлов сразу:

Вывести колонку из вывода


При этом надо иметь ввиду, что awk обладает гораздо более богатым функционалом, так что при необходимости работы с текстом в командной строке стоит почитать об этой команде подробнее.

Узнать IP адрес по имени хоста

С этим поможет одна из следующих команд:

Сетевая информация

Можно использовать ifconfig:


А можно и ip:


При этом, если, например, вас интересует только IPv4, то можно добавить опцию -4:

Посмотреть открытые порты

Для этого используют утилиту netstat. Например, чтобы посмотреть все слушающие TCP и UDP порты с отображением PID'а процесса, слушающего порт, и с числовым представлением порта, нужно использовать ее со следующими опциями:

Информация о системе

Получить данную информацию можно с помощью команды uname.


Чтобы понять, в каком формате производится вывод, можно обратиться к help'у данной команды:

Информация о памяти

Чтобы понять, сколько оперативной памяти занято или свободно, можно воспользоваться командой free.

Информация о файловых системах (свободное место на дисках)

Команда df позволяет посмотреть, сколько места свободно и занято на примонтированных файловых системах.


Опция -T указывает, что нужно выводить тип файловой системы.

Информация о задачах и различной статистике по системе

Для этого используется команда top. Она способна вывести разную информацию: например, топ процессов по использованию оперативной памяти или топ процессов по использованию процессорного времени. Также она выводит информацию о памяти, CPU, uptime и LA (load average).


Эта утилита обладает богатым функционалом, так что если вам надо часто ей пользоваться, лучше ознакомиться с её документацией.

Дамп сетевого трафика

Для перехвата сетевого трафика в Linux используется утилита tcpdump. Чтобы сдампить трафик на порте 12345, можно воспользоваться следующей командой:


Опция -A говорит о том, что мы ходим видеть вывод в ASCII (поэтому это хорошо для текстовых протоколов), -i any указывает, что нас не интересует сетевой интерфейс, port — трафик какого порта дампить. Вместо port можно использовать host, либо комбинацию host и port (host A and port X). И еще полезной может оказаться опция -n — не конвертировать адреса в хостнеймы в выводе.
Что если трафик бинарный? Тогда нам поможет опция -X — выводить данные в hex и ASCII:


При этом надо учитывать, что в обоих вариантах использования будут выводиться IP пакеты, поэтому в начале каждого из них будут бинарные заголовки IP и TCP. Вот пример вывода для запроса "123" посланного в сервер, слушающий порт 12345:

Читайте также: