Получение руководства linux

Время на прочтение
8 мин

Количество просмотров 32K

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

Навигация по основам Linux от основателя Gentoo:

Часть I: 1, 2, 3, 4

Часть II: 1, 2, 3, 4, 5

Часть III
  1. Документация (вступление)
  2. Модель прав доступа
  3. Управление аккаунтами
  4. Настройка окружения (итоги и ссылки)

Предисловие

Об этом руководстве

Встречайте «Администрирование для продолжающих», третье из четырех пособий, созданных для подготовки к экзамену «Linux Professional Institute’s 101» (2-ая редакция). Данная часть идеальна для тех, кто хочет улучшить свои знания фундаментальных основ администрирования Linux. Мы охватим ряд тем, включая системную и интернет документацию, модель прав доступа в Linux, управление аккаунтами пользователей и настройку окружения входа в систему.

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

В конце серии этих руководств (всего их восемь, подготавливающих к экзаменам LPI 101 и 102) у вас будут все знания, необходимые для того, чтобы стать системным администратором Linux систем, а так-же вы будете готовы к получению сертификата LPIC уровня 1 от института Linux Professional.

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

Типы системной документации в Linux

Существует три основных источника документации в Linux системах: страницы руководств (маны), info-страницы и поставляемая с приложениями документация в /usr/share/doc. В этом разделе мы рассмотрим каждый из этих источников, перед тем, как обращаться во внешний мир за дополнительной информацией.

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

Страницы руководств, или “man (от англ. manual — руководство) страницы”, ман-страницы, далее просто маны — это классическая форма справочной документации UNIX и Linux. В идеале, вы можете найти ман для любой команды, конфигурационного файла или библиотеки. Однако, на практике, Linux это бесплатное программное обеспечение и некоторые страницы руководств не были написаны или устарели. Тем не менее, маны остаются первым местом, куда следует обращаться за помощью.

Для доступа к ману просто введите man, а затем ваш запрос. Запустится программа-пейджер (просмотрщик, обычно less или more) со справочной информацией. Для того, чтобы закрыть её, нажмите клавишу q. Например, чтобы посмотреть информацию о команде ls, введите:

$ man ls

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

NAME (ИМЯ) Имя и однострочное описание команды
SYNOPSIS (ОБЗОР) Краткий обзор
DESCRIPTION (ОПИСАНИЕ) Углублённое описание функционала команды
EXAMPLES (ПРИМЕРЫ) Советы по использованию
SEE ALSO (СМОТРИ ТАКЖЕ) Связаные темы (обычно также ман-страницы)

Секции ман-страниц

Файлы, содержащие информацию манов хранятся в /usr/share/man (или в /usr/man на некоторых старых системах). В этой директории вы найдёте страницы руководств, упорядоченные по следующим секциям:

man1 Пользовательские программы
man2 Системные вызовы
man3 Библиотечные функции
man4 Специальные файлы
man5 Форматы файлов
man6 Игры
man7 Другое

Многочисленные ман-страницы

Некоторые темы существуют более чем в одной секции. Для демонстрации этого воспользуюемся командой whatis, показывающей доступные маны по теме:

$ whatis printf
printf (1) - format and print data printf (3) - formatted output conversion

В данном случае, man printf по-умолчанию обратится к странице в секции 1 (Пользовательские программы). Если мы пишем программу на языке C, нас вероятно больше интересует страница из секции 3 (Библиотечные функции). Вы можете вызывать ман необходимой секции указав это в командной строке, так для вызова printf(3) мы введём:

$ man 3 printf

Поиск нужного мана

Иногда сложно найти правильную ман-страницу по заданной теме. В этом случае можно воспользоваться man -k для поиска по разделам «ИМЯ» ман-страниц. Но будьте осторожны, поскольку осуществляется поиск по подстроке и что-то, навроде man -k ls, выдаст очень много всего! Вот пример использования уточняющего запроса:

$ man -k whatis
apropos (1) - search the whatis database for strings makewhatis (8) - Create the whatis database whatis (1) - search the whatis database for complete words

Всё об “apropos”

Предыдущий пример не случаен. Во-первых, команда apropos полностью соответствует команде man -k. (На самом деле, я даже вам раскрою небольшой секрет. Когда вы запускаете man -k, фактически «за кулисами» стартует apropos). Во-вторых, существует команда makewhatis, которая сканирует все страницы в вашей Linux системе и создает базу данных для whatis и apropos. Обычно она запускается периодически из-под рута, чтобы поддерживать базу в актуальном состоянии:

# makewhatis

Для более подробной информации о команде «man» и её друзьях, вам стоит начать с изучения её собственной ман-страницы:

$ man man

MANPATH

По умолчанию, программа man будет искать ман-страницы в /usr/share/man, /usr/local/man, /usr/X11R6/man, и быть может в /opt/man. Возможно, вы захотите добавить новый пункт в этом пути поиска. Для этого, просто откройте /etc/man.conf в текстовом редакторе и добавьте строчку вроде такой:

MANPATH /opt/man

С этого момента, страницы руководств в директориях /opt/man/man* также будут найдены. Помните, что вам необходимо запустить makewhatis, чтобы добавить новые маны в базу whatis.

GNU info

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

$ info

Простой вызов команды info даст список доступных инфо-страниц в вашей системе. Вы можете перемещаться по нему используя стрелки, переходить по ссылкам (которые обозначены звездочкой) с помощью клавиши Enter и выйти нажав q. Навигация основана на таковой в Emacs, так что если вы знакомы с этим редактором, вам будет легко освоиться. Чтобы познакомиться с Emacs, посмотрите руководство на developerWorks: Living in Emacs.

Вы также можете указать нужную инфо-страницы в командной строке:

$ info diff

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

$ info info

/usr/share/doc

Есть еще один источник помощи в вашей системе Linux. Большинство программ поставляются с дополнительной документацией в других форматах, таких как: простые текстовые файлы, PDF, PostScript, HTML. Посмотрите в каталоге usr/share/doc (или /usr/doc на более старых системах). Вы найдете длинный список директорий, каждая из которых идет с определенным приложением на вашей системе. Поиск по этой документации может навести вас на очень ценную информацию, которая не доступна в манах или инфо-страницах, такую как учебники или дополнительная технической документация. Беглый взгляд указывает на то, что здесь очень много материала для чтения:

$ cd /usr/share/doc
$ find . -type f | wc -l
7582

Фьюу! Вашим домашним заданием на этот вечер будет прочитать всего лишь половину (3791) этих документов. Учтите, завтра будет опрос. ;-)

Linux Documentation Project

В дополнение к системной документации, в интернете существует ряд отличных ресурсов посвященных Linux. «Linux Documentation Project» (LDP) — это группа добровольцев, которые занимаются составлением полного набора свободной документации по Linux. Данный проект существует чтобы собрать различные части документации по Linux в определенным месте, где её будет легко искать и использовать.

Обзор LDP

LDP состоит из следующих разделов:

  • Guides (руководства) — большие, очень серьезные пособия, такие как The Linux Programmer’s Guide (Руководство программиста Linux)
  • HOWTOs — помощь по конкретной теме, например DSL HOWTO
  • FAQs — сборники ответов на часто задаваемые вопросы, навроде этого Brief Linux FAQ
  • Man pages — помощь по конкретной команде (это те же самые маны, что вы видите в вашей системе, когда используете команду man).

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

LDP в добавок предоставляет доступ к списку ссылок и ресурсов, таких как Linux Gazette и Linux Weekly News, а также к спискам рассылки и архивам новостей.

Списки рассылки

Списки рассылки являются, вероятно, самым важным средством взаимодействия разработчиков Linux. Зачастую проекты разрабатываются участниками живущими на большом расстоянии друг от друга, возможно даже на противоположных сторонах земного шара. Списки рассылки представляют метод взаимодействия, в котором каждый разработчик проекта может связаться со всеми остальными и вместе дискутировать посредством электронной почты. Один из самых известных списков рассылки разработчиков, это Linux Kernel Mailing List (список рассылки ядра Linux).

Еще о списках рассылки

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

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

Группы новостей

Новостные группы (англ. newsgroups) в интернете похожи на списки рассылки, но основаны на другом протоколе, который называется NNTP (Network News Transfer Protocol, что в переводе «Сетевой протокол передачи новостей»), а не на обмене электронной почтой. Чтобы иметь возможность общаться, вам придется установить NTTP-клиент, например slrn или pan. Основным преимуществом является тот факт, что вы можете принять участие в дискуссии, когда вам это нужно, а не постоянно смотреть как она ломится в ваш почтовый ящик :-)

Наибольший интерес представляют новостные группы начинающиеся с comp.os.linux. Посмотреть список групп вы можете на сайте LDP.

Сайты поставщиков и прочие

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

  • Redhat Linux
  • Debian Linux
  • Gentoo Linux
  • SuSE Linux
  • Caldera
  • Turbolinux

Поставщики аппаратного и программного обеспечения

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

  • IBM и Linux
  • HP и Linux
  • Sun и Linux
  • Oracle и Linux.

Перевод выполнил коллективный разум с помощью notabenoid.com. Спасибо хабравчанам (в алф. порядке): DMinsky, habrrich и kindacute (на хабре?). Их карма заслуживает плюсов. Если кого не упомянул, напишите в личку или в комментариях.

Продолжение…


Об авторах

Daniel Robbins

Дэниэль Роббинс — основатель сообщества Gentoo и создатель операционной системы Gentoo Linux. Дэниэль проживает в Нью-Мехико со свой женой Мэри и двумя энергичными дочерьми. Он также основатель и глава Funtoo, написал множество технических статей для IBM developerWorks, Intel Developer Services и C/C++ Users Journal.

Chris Houser

Крис Хаусер был сторонником UNIX c 1994 года, когда присоединился к команде администраторов университета Тэйлора (Индиана, США), где получил степень бакалавра в компьютерных науках и математике. После он работал во множестве областей, включая веб-приложения, редактирование видео, драйвера для UNIX и криптографическую защиту. В настоящий момент работает в Sentry Data Systems. Крис также сделал вклад во множество свободных проектов, таких как Gentoo Linux и Clojure, стал соавтором книги The Joy of Clojure.

Aron Griffis

Эйрон Гриффис живет на территории Бостона, где провел последнее десятилетие работая в Hewlett-Packard над такими проектами, как сетевые UNIX-драйвера для Tru64, сертификация безопасности Linux, Xen и KVM виртуализация, и самое последнее — платформа HP ePrint. В свободное от программирования время Эйрон предпочитает размыщлять над проблемами программирования катаясь на своем велосипеде, жонглируя битами, или болея за бостонскую профессиональную бейсбольную команду «Красные Носки».

Если вы когда-нибудь сталкивались с ОС Linux, вы наверняка слышали слово «терминал». Новички обычно воспринимают терминал как что-то страшное и зловещее. Но не все так страшно.

Введение в терминал Linux

Моя бабушка называет любой терминал «терминатором», что добавляет антуража. На самом деле терминал (bash) — это всего лишь командная строка с гораздо более широким набором функций, если сравнивать с Windows. Почти любое действие можно выполнить командой из терминала, но далеко не любое действие можно выполнить через окружения пользователя.

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

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

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

Доверьте нашим специалистам развертывание и поддержку баз данных в облаке.

Основные команды Linux

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

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

man — manual, получение справки

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

Чтобы получить справку по команде, введите перед ней man. Например, man man выдаст руководство по команде man. Также можно вывести мануал терминала Linux (man bash):

    BASH(1)                                General Commands Manual                                BASH(1)


NAME

      bash - GNU Bourne-Again SHell


SYNOPSIS

      bash [options] [command_string | file]


COPYRIGHT

      Bash is Copyright (C) 1989-2018 by the Free Software Foundation, Inc.


DESCRIPTION

      Bash is  an  sh-compatible  command language interpreter that executes commands read from the
      standard input or from a file. Bash also incorporates useful features from  the  Korn  and  C
      shells (ksh and csh).


      Bash  is  intended to be a conformant implementation of the Shell and Utilities portion of the
      IEEE POSIX specification (IEEE Standard 1003.1).  Bash can be configured to  be  POSIX-confor‐
      mant by default.


OPTIONS

      All  of  the  single-character  shell options documented in the description of the set builtin
      command, including -o, can be used as options when the shell is invoked.   In  addition,  bash
      interprets the following options when it is invoked:


      -c        If  the -c option is present, then commands are read from the first non-option argu‐
                ment command_string.  If there are arguments after the command_string, the first ar‐
                gument  is assigned to $0 and any remaining arguments are assigned to the positional

help — когда не работает man

Не у каждой команды имеется свое полноценное руководство и не всегда оно требуется. В таких случаях помогает help, которая выводит краткую справку.

    history: history [-c] [-d смещение] [n] или history -anrw [файл] или history -ps аргумент [аргумент...]

   Display or manipulate the history list.
    
   Display the history list with line numbers, prefixing each modified
   entry with a `*'.  An argument of N lists only the last N entries.
    
   Options:

     -c        clear the history list by deleting all of the entries
     -d offset delete the history entry at position OFFSET. Negative
               offsets count back from the end of the history list
    
     -a        append history lines from this session to the history file
     -n        read all history lines not already read from the history file
               and append them to the history list
     -r        read the history file and append the contents to the history
               list
     -w        write the current history to the history file
    
     -p        perform history expansion on each ARG and display the result
               without storing it in the history list
     -s        append the ARGs to the history list as a single entry
    
   If FILENAME is given, it is used as the history file.  Otherwise,
   if HISTFILE has a value, that is used, else ~/.bash_history.
    
   If the HISTTIMEFORMAT variable is set and not null, its value is used
   as a format string for strftime(3) to print the time stamp associated

Похожий вариант — вывод справки через специальные ключи — <команда> -h или <команда> —help.

Tab — автозавершение команды

Командная строка Linux может предложить вам доступные варианты завершения команды. Например, если вы хотите узнать, куда можно перейти из текущей папки, наберите cd, затем дважды нажмите Tab. Если хотите узнать, какие папки начинаются с символа точки, введите cd . и завершите двойным нажатием Tab. Работает с любой командой, но только в современных оболочках — bash и zsh.

    debtop@DebTop:~$ cd                  

.aptitude/     .gnupg/        .mozilla/      Видео/         Изображения/   Рабочий стол/

.cache/        .kde/          .pki/          Документы/     Музыка/        Шаблоны/

.config/       .local/        snap/          Загрузки/      Общедоступные/  

debtop@DebTop:~$ cd .

./         .aptitude/ .config/   .kde/      .mozilla/   
../        .cache/    .gnupg/    .local/    .pki/      

cat /etc/*-release — какой дистрибутив установлен на моей машине

Если вы задумывались об установке Linux или уже использовали эту ОС, вы должны были знать, что существует несколько дистрибутивов. В зависимости от дистрибутива команды могут отличаться, поэтому полезно иметь возможность узнать, какой именно дистрибутив на этой машине. Это можно сделать и через информацию о системе, из графического интерфейса окружения пользователя, но наша статья о терминале. Команда cat /etc/*-release (без пробелов) покажет вам основную информацию о дистрибутиве — имя, версия, и т.д. Аналогами в данном случае будут являться lsb_release -a, которая выведет почти ту же информацию, а lsb_release -i напишет ID дистрибутива.

    debtop@DebTop:~$ cat /etc/*-release

PRETTY_NAME="Debian GNU/Linux 10 (buster)"

NAME="Debian GNU/Linux"

VERSION_ID="10"

VERSION="10 (buster)"

VERSION_CODENAME=buster

ID=debian

HOME_URL="https://www.debian.org/"

SUPPORT_URL="https://www.debian.org/support"

BUG_REPORT_URL="https://bugs.debian.org/"

debtop@DebTop:~$ lsb_release -a

No LSB modules are available.

Distributor ID: Debian

Description:    Debian GNU/Linux 10 (buster)

Release:        10

Codename:       buster

debtop@DebTop:~$ lsb_release -i

Distributor ID: Debian

whoami — какой пользователь сейчас используется

Терминал Linux позволяет работать от имени любого пользователя, но не всегда удается удержать в памяти текущего пользователя. Чтобы вспомнить текущего пользователя, существует простая команда whoami.

    debtop@DebTop:~$ whoami

desktop

whatis — что за программа?

Команда Linux терминала whatis дает краткое описание любой установленной программы.

    debtop@DebTop:~$ whatis nano
nano (1)             - Nano's ANOther editor, an enhanced free Pico clone

debtop@DebTop:~$ whatis apt
apt (8)              - command-line interface


debtop@DebTop:~$ whatis krita
krita: ничего подходящего не найдено.

Очевидно, что, если программа не установлена, то получить ее описание не получится.

whereis — полный путь к программе

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

    debtop@DebTop:~$ whereis bash

bash: /usr/bin/bash /etc/bash.bashrc /usr/share/man/man1/bash.1.gz

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

hostname, ifconfig — управление сетью

Эти команды покажут DNS-домен и IP-адрес вашего компьютера.

    debtop@DebTop:~$ hostname
DebTop
 
debtop@DebTop:~$ hostname -i
127.0.1.1
 
debtop@DebTop:~$ ifconfig
bash: ifconfig: команда не найдена

В некоторых версиях дистрибутивов Linux поддерживается команда ifconfig, которая также выводит текущий IP, но она работает не всегда. Взамен устаревшей ifconfig современные дистрибутивы отзываются на ip a[ddress], которая выведет на экран настройки сети и позволяет их редактировать. Команда является частью пакета утилит для настройки параметров сетевых устройств — iproute2. Команды из набора iproute2 пригодятся системным администраторам или тем, кто хочет создать доменную сеть дома.

    debtop@DebTop:~$ ip a

1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
   inet 127.0.0.1/8 scope host lo
      valid_lft forever preferred_lft forever
   inet6 ::1/128 scope host  
      valid_lft forever preferred_lft forever

2: enp4s0:  mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1
000
   link/ether b4:b5:2f:7f:fe:eb brd ff:ff:ff:ff:ff:ff

3: wlo1:  mtu 1500 qdisc mq state UP group default qlen 1000
   link/ether a4:17:31:2a:bc:59 brd ff:ff:ff:ff:ff:ff
   inet 192.168.1.195/24 brd 192.168.1.255 scope global dynamic noprefixroute wlo1
      valid_lft 85273sec preferred_lft 85273sec
   inet6 fe80::3f0f:a837:e4c0:e52d/64 scope link noprefixroute  
      valid_lft forever preferred_lft forever

debtop@DebTop:~$ ip

Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
      ip [ -force ] -batch filename

where  OBJECT := { link | address | addrlabel | route | rule | neigh | ntable |
                  tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm |
                  netns | l2tp | fou | macsec | tcp_metrics | token | netconf | ila |
                  vrf | sr }

      OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |
                   -h[uman-readable] | -iec | -j[son] | -p[retty] |
                   -f[amily] { inet | inet6 | ipx | dnet | mpls | bridge | link } |
                   -4 | -6 | -I | -D | -M | -B | -0 |
                   -l[oops] { maximum-addr-flush-attempts } | -br[ief] |
                   -o[neline] | -t[imestamp] | -ts[hort] | -b[atch] [filename] |
                   -rc[vbuf] [size] | -n[etns] name | -a[ll] | -c[olor]}

ping — диагностика неисправностей сети

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

Достаточно ввести, например, ping google.com, компьютер сам определит IP адрес домена и продолжит выполняться, пока ее не отменить сочетанием Ctrl+C.

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

Теперь, когда мы выяснили, где находится терминал, мы можем перейти в его директорию. Однако, этого делать не стоит, иначе можно что-нибудь сломать. Давайте попробуем поработать с директорией песочницы.

mkdir — создание директории

Для начала песочницу необходимо создать. Сделать это очень просто, находясь в домашней директории пользователя введем в bash:

mkdir playpen

Отлично, и что дальше? Точно ли директория создалась?

ls — list, отобразить директории и файлы

Чтобы убедиться в наличии директории нужно набрать ls, после выполнения команда покажет все каталоги и файлы.

    debtop@DebTop:~$ mkdir playpen

debtop@DebTop:~$ ls

playpen   Видео       Загрузки      Музыка         'Рабочий стол'

snap      Документы   Изображения   Общедоступные   Шаблоны

cd — change directory, сменить директорию

Теперь перейдем в созданную директорию. Для навигации в терминале Linux нужно ввести cd имя_директории. В нашем случае cd playpen.

    debtop@DebTop:~$ cd playpen

debtop@DebTop:~/playpen$

Если работа в данной директории закончена и необходимо подняться на уровень вверх из текущей директории, используйте «cd пробел .. (две точки)»:

cd ..

А если вы работаете одновременно в двух директориях и периодически перемещаетесь из одной в другую, не нужно постоянно держать в голове, какой же была предыдущая. Достаточно использовать быстрый переход к предыдущей директории «cd пробел — (дефис)»:

cd —

    debtop@DebTop:~/playpen/dir00$ cd /usr/lib/x86_64-linux-gnu/audacious
 
debtop@DebTop:/usr/lib/x86_64-linux-gnu/audacious$ cd - 

/home/debtop/playpen/dir00
 
debtop@DebTop:~/playpen/dir00$ cd -

/usr/lib/x86_64-linux-gnu/audacious
 
debtop@DebTop:/usr/lib/x86_64-linux-gnu/audacious$ cd -

/home/debtop/playpen/dir00
 
debtop@DebTop:~/playpen/dir00$ cd ..

pwd — где я сейчас?

Обратите внимание, как только мы сменили директорию, поменялся и префикс до символа $, так терминал показывает нам, где мы находимся в данный момент. Конечно, терминал не станет отображать полный путь, если он слишком длинный, поэтому не стоит всегда полагаться на префикс. Быстро понять текущую рабочую директорию поможет команда pwd. Расшифровка этой команды простая — три английских слова — Print Working Directory. На самом деле расшифровка команд Linux всегда простая, они все произошли от английских слов, но были сокращены для лучшего запоминания.

Обратно к песочнице. Пока что директория (также каталог, папка) пуста и не содержит ни одного файла. Давайте создадим в ней 43 директории, в каждой по 43 файла. Можно создавать вручную, каждый раз прописывая имя, а можно поступить проще:

mkdir dir{00..42}

Синтаксис команды простой: mkdir создает директорию, dir задает начальное имя для каждой новой директории, числа в фигурных скобках {00..42} указывают переменную часть имени создаваемых папок. То есть, команда mkdir test_folder_{0..4} создала бы нам 5 папок с начальным именем test_folder_0.

Давайте проверим, создались ли наши тестовые папки — ls.

    debtop@DebTop:~/playpen$ ls

dir00  dir03  dir06  dir09  dir12  dir15  dir18  dir21  dir24  dir27  dir30  dir33  dir36  dir39  dir42

dir01  dir04  dir07  dir10  dir13  dir16  dir19  dir22  dir25  dir28  dir31  dir34  dir37  dir40

dir02  dir05  dir08  dir11  dir14  dir17  dir20  dir23  dir26  dir29  dir32  dir35  dir38  dir41

Как создать файл?

Замечательно, теперь создадим по 43 файла в каждой. Для создания файла существует более 10 разных способов, самый простой:

    &gt; имя_файла

На самом деле >, как и обратный знак < не совсем являются командами, это символы перенаправления или связи. Однако, если перед именем несуществующего файла поставить знак > вместе с указанием расширения файла, в текущей директории появится пустой файл.

Но нам требуется поместить по 42 файла в 42 директории, а терминал Linux откажется воспринимать команду со знаком перенаправления, поэтому используем команду touch. Эта команда позволяет задать время последнего изменения файла или создать новые файлы:

touch dir{00..42}/text{00..42}.txt

Проверим:

    debtop@DebTop:~/playpen$ touch dir{00..42}/text{00..42}.txt

debtop@DebTop:~/playpen$ ls dir00

text00.txt  text06.txt  text12.txt  text18.txt  text24.txt  text30.txt  text36.txt  text42.txt

text01.txt  text07.txt  text13.txt  text19.txt  text25.txt  text31.txt  text37.txt

text02.txt  text08.txt  text14.txt  text20.txt  text26.txt  text32.txt  text38.txt

text03.txt  text09.txt  text15.txt  text21.txt  text27.txt  text33.txt  text39.txt

text04.txt  text10.txt  text16.txt  text22.txt  text28.txt  text34.txt  text40.txt

text05.txt  text11.txt  text17.txt  text23.txt  text29.txt  text35.txt  text41.txt

rm — remove, удаление

Чтобы удалить какой-либо файл, достаточно ввести команду rm с именем файла:

rm text00.txt

Можно удалить несколько:

rm text{01..12}.txt

Если попытаться удалить целый каталог по аналогии, то ничего не получится. Все потому, что для удаления каталога нужна другая команда: rmdir:

rmdir delete_me

Команда rmdir тоже не всесильна, она не позволит удалить каталог, в котором есть что-то еще — файл или другой каталог (даже пустой).

Для удаления каталога с содержимым можно использовать команду rm с опцией рекурсивного удаления -r. Обратите внимание на картинку ниже, все описанные переходы по директориям, упомянутые в описании команды cd действуют и для rm. Поэтому, при нахождении в подкаталоге dir01, команда будет выглядеть вот так:

rm -r ../dir03

    debtop@DebTop:~/playpen/dir01$ rm text00.txt

debtop@DebTop:~/playpen/dir01$ rm text{01..12}.txt

debtop@DebTop:~/playpen/dir01$ mkdir delete_me

debtop@DebTop:~/playpen/dir01$ ls

delete_me   text16.txt  text20.txt  text24.txt  text28.txt  text32.txt  text36.txt  text40.txt

text13.txt  text17.txt  text21.txt  text25.txt  text29.txt  text33.txt  text37.txt  text41.txt

text14.txt  text18.txt  text22.txt  text26.txt  text30.txt  text34.txt  text38.txt  text42.txt

text15.txt  text19.txt  text23.txt  text27.txt  text31.txt  text35.txt  text39.txt

debtop@DebTop:~/playpen/dir01$ rm delete_me

rm: невозможно удалить 'delete_me': Это каталог

debtop@DebTop:~/playpen/dir01$ rmdir delete_me

debtop@DebTop:~/playpen/dir01$ ls

text13.txt  text17.txt  text21.txt  text25.txt  text29.txt  text33.txt  text37.txt  text41.txt

text14.txt  text18.txt  text22.txt  text26.txt  text30.txt  text34.txt  text38.txt  text42.txt

text15.txt  text19.txt  text23.txt  text27.txt  text31.txt  text35.txt  text39.txt

text16.txt  text20.txt  text24.txt  text28.txt  text32.txt  text36.txt  text40.txt

debtop@DebTop:~/playpen/dir01$ rmdir ../dir03

rmdir: не удалось удалить '../dir03': Каталог не пуст

debtop@DebTop:~/playpen/dir01$ rm -r ../dir03

debtop@DebTop:~/playpen/dir01$ ls ..

dir00  dir04  dir07  dir10  dir13  dir16  dir19  dir22  dir25  dir28  dir31  dir34  dir37  dir40

dir01  dir05  dir08  dir11  dir14  dir17  dir20  dir23  dir26  dir29  dir32  dir35  dir38  dir41

dir02  dir06  dir09  dir12  dir15  dir18  dir21  dir24  dir27  dir30  dir33  dir36  dir39  dir42

cp — copy, копирование

Кроме создания и удаления файлов и директорий терминал позволяет их копирование.

Снова перейдем в директорию dir02 и скопируем файл text00.txt в директорию dir01:

cp text00.txt /home/debtop/playpen/dir01

Поскольку text00.txt находится в текущей директории, до него можно не писать полный путь. Такое указание пути называется относительным. Путь до dir01 мы указали полностью, от домашней директории, такой путь называется абсолютный. Можно было указать просто ../dir01, тогда это был бы снова относительный путь.

Если попробовать повторить копирование теперь, когда в dir01 опять появился файл text00.txt, внешне не произойдет ничего, но на самом деле файл будет заменен на файл с тем же именем без каких-либо вопросов.

    debtop@DebTop:~/playpen/dir01$ cd ../dir02

debtop@DebTop:~/playpen/dir02$ cp text00.txt home/debtop/playpen/dir01

cp: невозможно создать обычный файл 'home/debtop/playpen/dir01': Нет такого файла или каталога

debtop@DebTop:~/playpen/dir02$ cp text00.txt /home/debtop/playpen/dir01

debtop@DebTop:~/playpen/dir02$ ls ../dir01

text00.txt  text16.txt  text20.txt  text24.txt  text28.txt  text32.txt  text36.txt  text40.txt

text13.txt  text17.txt  text21.txt  text25.txt  text29.txt  text33.txt  text37.txt  text41.txt

text14.txt  text18.txt  text22.txt  text26.txt  text30.txt  text34.txt  text38.txt  text42.txt

text15.txt  text19.txt  text23.txt  text27.txt  text31.txt  text35.txt  text39.txt

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

cp -r dir00 dir03

    debtop@DebTop:~/playpen$ ls

dir00  dir04  dir07  dir10  dir13  dir16  dir19  dir22  dir25  dir28  dir31  dir34  dir37  dir40

dir01  dir05  dir08  dir11  dir14  dir17  dir20  dir23  dir26  dir29  dir32  dir35  dir38  dir41

dir02  dir06  dir09  dir12  dir15  dir18  dir21  dir24  dir27  dir30  dir33  dir36  dir39  dir42

debtop@DebTop:~/playpen$ cp dir00 dir03

cp: не указан -r; пропускается каталог 'dir00'

debtop@DebTop:~/playpen$ cp -r dir00 dir03

debtop@DebTop:~/playpen$ cp -r dir00 dir03/

debtop@DebTop:~/playpen$ cd dir03

debtop@DebTop:~/playpen/dir03$ ls

dir00       text05.txt  text11.txt  text17.txt  text23.txt  text29.txt  text35.txt  text41.txt

text00.txt  text06.txt  text12.txt  text18.txt  text24.txt  text30.txt  text36.txt  text42.txt

text01.txt  text07.txt  text13.txt  text19.txt  text25.txt  text31.txt  text37.txt

text02.txt  text08.txt  text14.txt  text20.txt  text26.txt  text32.txt  text38.txt

text03.txt  text09.txt  text15.txt  text21.txt  text27.txt  text33.txt  text39.txt

text04.txt  text10.txt  text16.txt  text22.txt  text28.txt  text34.txt  text40.txt

Если при копировании каталога или файла в качестве адреса копирования указать имя несуществующей директории (или файла), то система автоматически воспримет это как команду создать файл или каталог с таким именем.

Когда вы хотите скопировать не всю директорию целиком, а только ее содержимое, укажите слэш после места назначения, а после него поставьте звездочку (*):

cp -r dir00/* dir03/dir

Принцип действия команд rm и cp очень простой и очевидный, но не стоит забывать, что новичку многое кажется сложнее, чем есть на самом деле.

mv, move — перемещение

Третья команда для управления файлами — mv — перемещает файлы и директории.

Принцип действия полностью аналогичен предыдущим двум командам:

mv что_перемещаем куда_перемещаем

    debtop@DebTop:~/playpen$ mv dir16 dir19/dir

debtop@DebTop:~/playpen$ ls dir19

dir         text05.txt  text11.txt  text17.txt  text23.txt  text29.txt  text35.txt  text41.txt

text00.txt  text06.txt  text12.txt  text18.txt  text24.txt  text30.txt  text36.txt  text42.txt

text01.txt  text07.txt  text13.txt  text19.txt  text25.txt  text31.txt  text37.txt

text02.txt  text08.txt  text14.txt  text20.txt  text26.txt  text32.txt  text38.txt

text03.txt  text09.txt  text15.txt  text21.txt  text27.txt  text33.txt  text39.txt

text04.txt  text10.txt  text16.txt  text22.txt  text28.txt  text34.txt  text40.txt

При перемещении каталогов мы перемещаем их целиком так, что они перестают существовать в исходном местоположении. То есть, каталог dir16 из предыдущего примера больше не существует в каталоге ~/playpen. Но это не всегда удобно, бывает необходимо переместить не сам каталог, а только содержимое — все файлы, каталоги и файлы, вложенные в них. Для этого используется опция —v[erbose], покажем на примере. Переместим все содержимое папки dir19 в папку dir17 командой mv, оставив папку dir19 пустой:

mv -v dir19/* dir17/

    debtop@DebTop:~/playpen$ ls

dir00  dir04  dir08  dir12  dir17  dir21  dir25  dir29  dir33  dir37  dir41

dir01  dir05  dir09  dir13  dir18  dir22  dir26  dir30  dir34  dir38  dir42

dir02  dir06  dir10  dir14  dir19  dir23  dir27  dir31  dir35  dir39

dir03  dir07  dir11  dir15  dir20  dir24  dir28  dir32  dir36  dir40

debtop@DebTop:~/playpen$ man mv

debtop@DebTop:~/playpen$ ls dir19

dir         text05.txt  text11.txt  text17.txt  text23.txt  text29.txt  text35.txt  text41.txt

text00.txt  text06.txt  text12.txt  text18.txt  text24.txt  text30.txt  text36.txt  text42.txt

text01.txt  text07.txt  text13.txt  text19.txt  text25.txt  text31.txt  text37.txt

text02.txt  text08.txt  text14.txt  text20.txt  text26.txt  text32.txt  text38.txt

text03.txt  text09.txt  text15.txt  text21.txt  text27.txt  text33.txt  text39.txt

text04.txt  text10.txt  text16.txt  text22.txt  text28.txt  text34.txt  text40.txt

debtop@DebTop:~/playpen$ mv -v dir19/* dir17/

переименован 'dir19/dir' -&gt; 'dir17/dir'

переименован 'dir19/text00.txt' -&gt; 'dir17/text00.txt'

переименован 'dir19/text01.txt' -&gt; 'dir17/text01.txt'

переименован 'dir19/text02.txt' -&gt; 'dir17/text02.txt'

переименован 'dir19/text03.txt' -&gt; 'dir17/text03.txt'

переименован 'dir19/text40.txt' -&gt; 'dir17/text40.txt'

переименован 'dir19/text41.txt' -&gt; 'dir17/text41.txt'

переименован 'dir19/text42.txt' -&gt; 'dir17/text42.txt'

debtop@DebTop:~/playpen$ ls

dir00  dir04  dir08  dir12  dir17  dir21  dir25  dir29  dir33  dir37  dir41

dir01  dir05  dir09  dir13  dir18  dir22  dir26  dir30  dir34  dir38  dir42

dir02  dir06  dir10  dir14  dir19  dir23  dir27  dir31  dir35  dir39

dir03  dir07  dir11  dir15  dir20  dir24  dir28  dir32  dir36  dir40

debtop@DebTop:~/playpen$ ls dir19

debtop@DebTop:~/playpen$ ls dir17

dir         text05.txt  text11.txt  text17.txt  text23.txt  text29.txt  text35.txt  text41.txt

text00.txt  text06.txt  text12.txt  text18.txt  text24.txt  text30.txt  text36.txt  text42.txt

text01.txt  text07.txt  text13.txt  text19.txt  text25.txt  text31.txt  text37.txt

text02.txt  text08.txt  text14.txt  text20.txt  text26.txt  text32.txt  text38.txt

text03.txt  text09.txt  text15.txt  text21.txt  text27.txt  text33.txt  text39.txt

text04.txt  text10.txt  text16.txt  text22.txt  text28.txt  text34.txt  text40.txt

Глубина вложенности

Можно пойти дальше — создать папку с большой вложенностью dir18 и переместить только файлы первого уровня в папку dir19:

find dir18/ -maxdepth 1 -type f -print0 | xargs -0 mv -t dir19

Эта сложная команда найдет (find) все файлы (-type f) с глубиной вложенности 1 (-maxdepth 1) внутри dir18 и переместит их в dir19 как обычные файлы (mv -t). Часть «xargs -0» служит в роли команды, связующей две других и позволяет им работать вместе. С глубиной вложенности -maxdepth можно экспериментировать, задавать ей разные значения (1, 2, 3 и т.д.) получая новый результат каждый раз.

Команды для архивирования

Важный аспект работы с файлами — возможность создавать архивы. В Linuxе это реализовано с помощью утилит терминала. Рассмотрим несколько базовых команд архивирования:

  • gzip — создать архив. Работает следующим образом: gzip файл.расширение. Можно сразу несколько, например, gzip text12.txt text13.txt.
    debtop@DebTop:~/playpen$ cd dir00

debtop@DebTop:~/playpen/dir00$ gzip text14.txt

debtop@DebTop:~/playpen/dir00$ ls

text00.txt  text07.txt  text14.txt.gz  text21.txt  text28.txt  text35.txt  text42.txt

text01.txt  text08.txt  text15.txt     text22.txt  text29.txt  text36.txt

text02.txt  text09.txt  text16.txt     text23.txt  text30.txt  text37.txt

text03.txt  text10.txt  text17.txt     text24.txt  text31.txt  text38.txt

text04.txt  text11.txt  text18.txt     text25.txt  text32.txt  text39.txt

text05.txt  text12.txt  text19.txt     text26.txt  text33.txt  text40.txt

text06.txt  text13.txt  text20.txt     text27.txt  text34.txt  text41.txt
  • gunzip — распаковать архив — gunzip файл.расширение.gz.
    debtop@DebTop:~/playpen/dir00$ ls
 
text00.txt  text07.txt  text14.txt.gz  text21.txt  text28.txt  text35.txt  text42.txt
 
text01.txt  text08.txt  text15.txt     text22.txt  text29.txt  text36.txt
 
text02.txt  text09.txt  text16.txt     text23.txt  text30.txt  text37.txt
 
text03.txt  text10.txt  text17.txt     text24.txt  text31.txt  text38.txt
 
text04.txt  text11.txt  text18.txt     text25.txt  text32.txt  text39.txt
 
text05.txt  text12.txt  text19.txt     text26.txt  text33.txt  text40.txt
 
text06.txt  text13.txt  text20.txt     text27.txt  text34.txt  text41.txt
 
debtop@DebTop:~/playpen/dir00$ gunzip text14.txt.gz

debtop@DebTop:~/playpen/dir00$ ls
 
text00.txt  text06.txt  text12.txt  text18.txt  text24.txt  text30.txt  text36.txt  text42.txt
 
text01.txt  text07.txt  text13.txt  text19.txt  text25.txt  text31.txt  text37.txt
 
text02.txt  text08.txt  text14.txt  text20.txt  text26.txt  text32.txt  text38.txt
 
text03.txt  text09.txt  text15.txt  text21.txt  text27.txt  text33.txt  text39.txt
 
text04.txt  text10.txt  text16.txt  text22.txt  text28.txt  text34.txt  text40.txt
 
text05.txt  text11.txt  text17.txt  text23.txt  text29.txt  text35.txt  text41.txt
  • zip — более привычный формат архива. Чтобы передать файл на другую операционную систему, и чтобы адресат мог его распаковать лучше использовать утилиту zip.

Утилита zip терминала Linux позволяет упаковать сразу несколько файлов в один архив (gzip также позволяет поместить несколько файлов в архив, но с ней сложнее разобраться) с помощью рекурсивной опции -r. Текст команды Linux:

zip -r texts.zip text12.txt text13.txt

В данном случае texts.zip будет названием архива, а text12.txt и text13.txt — файлы, которые нужно поместить в архив.

    debtop@DebTop:~/playpen/dir00$ zip -r texts.zip text12.txt text13.txt

 adding: text12.txt (stored 0%)

 adding: text13.txt (stored 0%)

debtop@DebTop:~/playpen/dir00$ ls

text00.txt  text06.txt  text12.txt  text18.txt  text24.txt  text30.txt  text36.txt  text42.txt

text01.txt  text07.txt  text13.txt  text19.txt  text25.txt  text31.txt  text37.txt  texts.zip

text02.txt  text08.txt  text14.txt  text20.txt  text26.txt  text32.txt  text38.txt

text03.txt  text09.txt  text15.txt  text21.txt  text27.txt  text33.txt  text39.txt

text04.txt  text10.txt  text16.txt  text22.txt  text28.txt  text34.txt  text40.txt

text05.txt  text11.txt  text17.txt  text23.txt  text29.txt  text35.txt  text41.txt
  • tar — создание резервных копий. Утилита tar создает архивы с расширением .tar, утилиту обычно используют для резервного копирования так как она не сжимает файлы, а только собирает в архив. Чтобы создать архив .tar, выполните команду с опциями —cvf. Например:

tar -cvf newark.tar text07.txt ../dir22

Создаст архив с именем newark.tar, в который будут помещены файл text.07.txt и все файлы из каталога dir22, располагающегося внутри родительского каталога.

Для просмотра содержимого .tar архива используются опции -tvf:

tar -tvf newark.tar

    debtop@DebTop:~/playpen/dir00$ tar -cvf newark.tar text07.txt ../dir22 

text07.txt

tar: Удаляется начальный `../' из имен объектов

../dir22/

../dir22/text04.txt

tar: Удаляются начальные `../' из целей жестких ссылок

../dir22/text07.txt

../dir22/text40.txt

../dir22/text08.txt

../dir22/text32.txt

../dir22/text28.txt

../dir22/text26.txt

../dir22/text11.txt

../dir22/text25.txt

debtop@DebTop:~/playpen/dir00$ tar -tvf newark.tar

-rw-r--r-- debtop/debtop     0 2020-11-25 13:44 text07.txt

drwxr-xr-x debtop/debtop     0 2020-11-25 13:44 dir22/

-rw-r--r-- debtop/debtop     0 2020-11-25 13:44 dir22/text04.txt

-rw-r--r-- debtop/debtop     0 2020-11-25 13:44 dir22/text07.txt

-rw-r--r-- debtop/debtop     0 2020-11-25 13:44 dir22/text40.txt

-rw-r--r-- debtop/debtop     0 2020-11-25 13:44 dir22/text08.txt

-rw-r--r-- debtop/debtop     0 2020-11-25 13:44 dir22/text32.txt

-rw-r--r-- debtop/debtop     0 2020-11-25 13:44 dir22/text28.txt

-rw-r--r-- debtop/debtop     0 2020-11-25 13:44 dir22/text26.txt

-rw-r--r-- debtop/debtop     0 2020-11-25 13:44 dir22/text11.txt

-rw-r--r-- debtop/debtop     0 2020-11-25 13:44 dir22/text25.txt

Опции для распаковки .tar архива -xvf:

tar -xvf newark.tar

    -rw-r--r-- debtop/debtop     0 2020-11-25 13:44 dir22/text27.txt

-rw-r--r-- debtop/debtop     0 2020-11-25 13:44 dir22/text39.txt

hrw-r--r-- debtop/debtop     0 2020-11-25 13:44 text07.txt ссылка на text07.txt

debtop@DebTop:~/playpen/dir00$ ls

arch.tar    text05.txt  text11.txt  text17.txt  text23.txt  newark.tar  text35.txt  text41.txt

dir00       text06.txt  text12.txt  text18.txt  text24.txt  scrolls.tar text36.txt  text42.txt

text01.txt  text07.txt  text13.txt  text19.txt  text25.txt  text31.txt  text37.txt  

text02.txt  text08.txt  text14.txt  text20.txt  text26.txt  text32.txt  text38.txt

text03.txt  text09.txt  text15.txt  text21.txt  text27.txt  text33.txt  text39.txt

text04.txt  text10.txt  text16.txt  text22.txt  text28.txt  text34.txt  text40.txt  texts.zip

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

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

Nano, Vim — редактирование текстовых файлов

Как посмотреть содержимое файла в Linux терминале? Через утилиты терминала Linux часто требуется открыть или отредактировать текстовые файлы. Для этого перейдем в директорию dir42 и откроем text42.txt с помощью Nano — простого текстового редактора.

nano text42.txt

Запишем текст в файле, затем сохраним его сочетанием Ctrl+O (^ в терминале Linux всегда значит Ctrl) и выйдем сочетанием Ctrl+X. Nano позволяет редактировать файлы прямо из окна терминала, обладает базовым, но не очень богатым набором функций. Кроме Nano есть еще более продвинутый Vim, который открывает гораздо большие возможности редактирования файлов. Только Vim не всегда установлен в систему и из него сложнее выйти, потому что он не отображает подсказки. Для выхода из Vim используйте :q, для выхода без сохранения изменений — :q! и :w для сохранения всех изменений. Обязательно сначала использовать двоеточие, так как оно активирует командный режим.

grep — поиск

Чтобы найти текст в файле используйте grep, эта команда выведет соответствующие запросу строки текста. Можно искать словом, строкой или регулярным выражением, а вывод может быть файлом или папкой, совпадающим или наоборот — несовпадающим. Полезно использовать grep при поиске по большим логам.

Кроме непосредственно grep есть варианты pgrep, fgrep, egrep, которые выполняют ту же функцию, но для других целей. Часто grep используют в сочетании с другими командами, чтобы упростить работу с большими объемами данных, ниже мы еще увидим примеры такого использования.

head, tail — начало и конец текста

Команды head и tail используются для вывода первых и последних строк текста в одном или нескольких документах.

Синтаксис команды:

head/tail опции файл

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

head -n 1 text00.txt

tail -n 1 text00.txt

    debtop@DebTop:~/playpen/dir00$ head -n 1 text00.txt

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla ut lacus ut justo blandit mattis

. Sed magna elit, pharetra ac nulla eu, vulputate elementum ex. Donec porta sapien at dui males

uada, quis pretium neque volutpat. Aliquam a tincidunt mi. Nunc posuere vehicula velit, sed int

erdum lorem ullamcorper at. Aliquam finibus ultrices metus pharetra elementum. Aliquam erat vol

utpat. In sit amet sapien commodo dolor feugiat sodales at vitae turpis. Donec ullamcorper dolo

r quis lacus tempor, ac aliquet sem consectetur. Duis nec dignissim ligula. Sed gravida sed arc

u quis commodo. Aliquam vestibulum nunc sed viverra imperdiet. Suspendisse accumsan sollicitudi

n ex, interdum facilisis eros efficitur non.

debtop@DebTop:~/playpen/dir00$ tail -n 1 text00.txt

Aenean non ullamcorper diam. Ut iaculis vehicula libero sit amet elementum. Nullam ipsum metus,

molestie vehicula dui in, tempus finibus nisl. In hac habitasse platea dictumst. In vehicula v

elit nec massa porttitor finibus. Nulla libero justo, egestas vitae fringilla ut, gravida eu ri

sus. Ut eget risus erat. Aenean interdum pretium semper. Aliquam vehicula dolor non augue lacin

ia sodales. Morbi molestie massa sed enim placerat, id euismod odio condimentum. Nunc aliquet l

acinia lacus, quis mattis tortor viverra sed. Vestibulum ullamcorper aliquet nibh, nec lacinia

nunc tincidunt fringilla. Mauris sollicitudin nec lectus eget mollis. Aliquam eu accumsan nulla.

С помощью опции -c можно запросить уже не строки, а байты.

Например, команды для получения 100 байт текста:

head -с 100 text00.txt

    debtop@DebTop:~/playpen/dir00$ tail -c 100 text00.txt

ia nunc tincidunt fringilla. Mauris sollicitudin nec lectus eget mollis. Aliquam eu accumsan nulla.

debtop@DebTop:~/playpen/dir00$ head -c 100 text00.txt     

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla ut lacus ut justo blandit mattis. Sed

tail -с 100 text00.txt

Другие опции можно посмотреть через man head.

    HEAD(1)                                 User Commands                                HEAD(1)


NAME
      head - output the first part of files


SYNOPSIS
      head [OPTION]... [FILE]...


DESCRIPTION
     Print  the  first 10 lines of each FILE to standard output.  With more than one FILE,
      precede each with a header giving the file name.


      With no FILE, or when FILE is -, read standard input.


      Mandatory arguments to long options are mandatory for short options too.


      -c, --bytes=[-]NUM
             print the first NUM bytes of each file; with the leading '-',  print  all  but
             the last NUM bytes of each file


      -n, --lines=[-]NUM
             print the first NUM lines instead of the first 10; with the leading '-', print
             all but the last NUM lines of each file


      -q, --quiet, --silent
             never print headers giving file names


      -v, --verbose

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

Операционная система Linux не имеет встроенного графического диспетчера задач в отличие от Windows, вместо этого всеми процессами можно управлять из терминала. Говорят, что Linux стабильнее винды, но иногда все равно приходится гуглить «Как завершить процесс Linux», потому что что-то зависло.

kill / pkill / killall — завершить процесс

Первый вопрос — почему так много, какую команду использовать? Давайте по порядку:

  • kill — убить процесс по его идентификатору (Process ID);
  • pkill — убить процесс по его имени;
  • killall — убить все процессы с указанным именем.

ps / pgrep — узнать ID процесса

Если вы не компьютер, то вряд ли вам известен ID нужного процесса. PS (Process Status) выведет на экран информацию о запущенных процессах. Чтобы показать список всех активных процессов, используется ps axu.

    debtop@DebTop:~/playpen$ top

top - 14:21:22 up 8 days, 21:57,  3 users,  load average: 0,49, 0,66, 0,65

Tasks: 181 total,   1 running, 180 sleeping,   0 stopped,   0 zombie

%Cpu(s):  0,8 us,  0,4 sy,  0,0 ni, 98,7 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st

MiB Mem :   7856,4 total,   4009,2 free,   1944,6 used,   1902,6 buff/cache

MiB Swap:   8068,0 total,   7913,4 free,    154,6 used.   5390,8 avail Mem
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND</b>
                    
 690 root      20   0  309888  34416  16856 S   2,0   0,4   5:46.67 Xorg  
                     
11426 debtop    20   0 1195064  78272  62036 S   1,7   1,0   0:15.55 konsole                   
 
 936 debtop    20   0 2994244  59840  36732 S   1,3   0,7   6:10.33 kwin_x11                   

11586 debtop    20   0 9188248 513296 127392 S   1,0   6,4  14:44.20 chrome                     

11068 debtop    20   0  973096 310508 142424 S   0,3   3,9   2:27.42 chrome                     

11107 debtop    20   0  390416 110176  62368 S   0,3   1,4   0:44.15 chrome                     

11516 debtop    20   0 9177080 384808 114828 S   0,3   4,8   0:58.68 chrome                     

   1 root      20   0  169620   6872   5272 S   0,0   0,1   0:02.15 systemd                    

   2 root      20   0       0      0      0 S   0,0   0,0   0:00.02 kthreadd                   

   3 root       0 -20       0      0      0 I   0,0   0,0   0:00.00 rcu_gp                     

   4 root       0 -20       0      0      0 I   0,0   0,0   0:00.00 rcu_par_gp                 

   6 root       0 -20       0      0      0 I   0,0   0,0   0:00.00 kworker/0:0H-kblockd       

   8 root       0 -20       0      0      0 I   0,0   0,0   0:00.00 mm_percpu_wq               

   9 root      20   0       0      0      0 S   0,0   0,0   0:00.07 ksoftirqd/0                

  10 root      20   0       0      0      0 I   0,0   0,0   0:09.29 rcu_sched                  

  11 root      20   0       0      0      0 I   0,0   0,0   0:00.00 rcu_bh                     

  12 root      rt   0       0      0      0 S   0,0   0,0   0:00.17 migration/0                

  14 root      20   0       0      0      0 S   0,0   0,0   0:00.00 cpuhp/0                    

  15 root      20   0       0      0      0 S   0,0   0,0   0:00.00 cpuhp/1                    

  16 root      rt   0       0      0      0 S   0,0   0,0   0:00.37 migration/1                

  17 root      20   0       0      0      0 S   0,0   0,0   0:00.15 ksoftirqd/1                

  19 root       0 -20       0      0      0 I   0,0   0,0   0:00.00 kworker/1:0H-kblockd

Проблема в том, что найти нужный процесс среди этого полотна очень сложно. Решений этой проблемы несколько.

1. top (Table Of Processes) — каждые 2 секунды обновляет активные процессы. Колонка PID указывает на ID процесса, USER на пользователя и т.д. Удобно. Если процесс активен постоянно, но уследить за постоянно обновляющимся списком не всегда получается.

2. Более продвинутые утилиты командной строки Linux — atop, htop. Отображают не только активные процессы с обновлением в две секунды, но и контроль над загрузкой и т.д. Утилиты полезны для системных администраторов, но для обычного пользователя все-таки перебор.

3. ps axu | grep имя_процесса. С помощью утилиты grep можно вычленить нужный процесс, если известно его имя.

    debtop@DebTop:~/playpen$ ps axu | grep bash
 
debtop   11468  0.0  0.0   8316  5192 pts/1    Ss   13:20   0:00 /bin/bash
 
debtop   14232  0.0  0.0   6224   888 pts/1    S+   14:22   0:00 grep bash

4. pidof — самый короткий способ выяснить ID процесса, если известно его имя.

    debtop@DebTop:~/playpen$ pidof bash
 
11468

Пакетные менеджеры или как установить файл

По сравнению с Windows, в Linux установка программы требует чуть больше усилий. Даже для установки браузера Chrome придется залезть в терминал.

dpkg — установить файл с расширением .deb (только для систем на Debian).

Многие программы, скачанные из интернета, которые поддерживаются ОС Linux, имеют расширение .deb. Это файлы, оптимизированные под дистрибутивы на основе Debian (Debian, Ubuntu и Ubuntu-based, Mint и т.д.). Когда вы скачаете и попытаетесь открыть файл (точнее пакет) .deb кликом указателя скорей всего ничего не произойдет, потому что это необходимо делать через dpkg:

dpkg -i package.deb — установит пакет .deb;

dpkg —remove package — удалит пакет. Да, при удалении не требуется указывать расширение, так как пакет уже установлен в системе и идентифицируется по имени.

Примечание: Если вы работали в Windows, вы помните, что приложения удаляются не полностью, остаются пустые папки и записи в реестре. У Linux тоже есть такая особенность, остаточные файлы и папки называются dependencies (зависимости). Избавиться от них в Linux гораздо проще, чем в ОС от Майкрософт. Достаточно ввести:

dpkg —purge package.

apt — менеджер установки пакетов Debian-based

Интересная функция Linux — пакетные менеджеры. В каждом дистрибутиве есть свой пакетный менеджер, который может запрашивать и устанавливать пакеты из удаленных репозиториев. Это очень удобно — требуется знать только название пакета, который желаете установить и команду. Пакетный менеджер по умолчанию в Debian и дистрибутивах на основе Debian — apt (Advanced Packaging Tool).

Для установки пакета с помощью apt необходимо ввести команду:

apt install имя_пакета

Часто для этой операции потребуются права суперпользователя, но об этом см. раздел ниже.

Нередко можно встретить apt-get вместо apt — это тот же самый пакетный менеджер, только более старая его версия. Тем не менее оба варианта существуют и работают. Пакетный менеджер apt объединяет сразу несколько прежних команд (apt-get и apt-cache в apt install и apt search), а также оптимизирует процесс установки пакетов.

Команда для удаления установленного пакета с помощью apt:

apt remove имя_пакета

Для удаления зависимостей вместо remove используется purge:

apt purge имя_пакета

Для автоматического удаления всего лишнего из системы используется apt autoremove.

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

yum — менеджер установки пакетов Red Hat

Red Hat — один из наиболее популярных дистрибутивов Linux. Утилита yum написана на python. Это пакетный менеджер Red Hat и дистрибутивов на основе Red Hat, например CentOS. Менеджер yum (Yellowdog Updater, Modified) использует формат пакетов rpm вместо deb, но команды остались прежними:

  • yum install для установки пакета;
  • yum remove для удаления;
  • yum autoremove для очистки.

При удалении пакета менеджер yum по умолчанию всегда сохраняет файлы конфигурации, которые отличаются от изначальных по умолчанию и не имеет команды аналогичной apt purge. Впрочем, способы достижения аналогичного результата существуют всегда.

pacman — менеджер пакетов ArchLinux

Еще один дистрибутив, имеющий свой пакетный менеджер — ArchLinux. Утилита pacman написана на языке C (Си). ArchLinux имеет только одну версию — текущую, которая постоянно обновляется, и для этой системы pacman подходит идеально. Пакеты здесь представляют собой архивы формата .tar.xz.

Пакетный менеджер pacman работает иначе чем yum, apt или dpkg. Чтобы установить или удалить пакет с помощью pacman используются опции:

  • -S устанавливает пакет ArchLinux;
  • -Sw скачивает, но не устанавливает пакет;
  • -U для установки пакетов с локального компьютера;
  • -s для поиска пакетов;
  • -u для обновления установленных пакетов;
  • -R для удаления;
  • -Rn для удаления резервных копий файлов конфигурации;
  • -Rs для удаления зависимостей.

После опции всегда идет имя пакета, т.е.:

pacman -S имя_пакета

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

sudo — запуск команд и приложений через терминал в Linux от имени администратора (суперпользователя)

Все важные действия в Linuxе требуют подтверждения от имени администратора, в Linux администратор называется суперпользователем или root. Чтобы выполнить команду от имени суперпользователя, нужно ввести перед ней sudo. Это позволит выполнять команды от имени суперпользователя до окончания текущей сессии в терминале.

Если вы не хотите вводить sudo каждый раз, когда терминал просит это сделать, вы можете переключиться в режим суперпользователя. Для этого выполните su, введите пароль, тогда вы сможете выполнять любые команды по умолчанию от имени суперпользователя. Однако, лучше поступать так только, если вы точно знаете, что делаете. Сломать что-то важное в системе получится вряд ли, но вероятность возрастает лучше использовать sudo.

useradd (adduser) / userdel (deluser) / usermod — добавить, удалить, изменить пользователя

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

Для добавления пользователя используйте useradd имя_пользователя.

Пароль для нового пользователя задается командой passwd имя_пользователя.

Аналогичным образом, командой userdel имя_пользователя, можно удалить созданную учетную запись.

Третья команда — usermod позволяет изменять учетные записи пользователей: изменять домашнюю директорию, имя учетной записи, оболочку входа в систему, «срок годности» пароля и т.д.

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

Команды выключения и перезагрузки

Linux можно выключить или перезагрузить из командной строки. Зачем это делать? Во-первых, команды очень полезны, если отсутствует графическая оболочка системы — окружение пользователя, и вся работа происходит из терминала. Во-вторых, различные команды или опции помогут произвести перезагрузку или выключение с разными параметрами.

shutdown — выключение

shutdown опции время сообщение

Время — отсрочка выключения. Можно указывать:

  • в 24-часовом формате когда нужно указать точное время выключения с точностью до минуты shutdown 10:10;
  • в формате +мин, например, shutdown +10 выключит компьютер через 10 минут после выполнения. Команды shutdown +0 и shutdown now выключат компьютер немедленно.

Сообщение (wall) — текстовое сообщение, отправляемое пользователям компьютеров в сети. Если требуется добавить комментарий с причиной выключения. При добавлении сообщения обязательно указывать время.

Некоторые опции:

  • -H (Halt) — останавливает все функции процессора, но не выключает компьютер. Halt можно использовать как самостоятельную команду, отдельно от shutdown;
  • -P — полное выключение компьютера. Можно использовать как команду poweroff;
  • -r (reboot) — перезагрузка. В качестве команды — reboot;
  • -k — не производить никаких действий, отправить сообщение;
  • -c — отменить запланированное выключение. Можно отменить выключение, только если не было задано время +0 или now.

Заключение, несколько советов

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

Двойной символ & (амперсанд)

Предназначен для выполнения нескольких команд последовательно:

команда1 && команда2 && команда3

команда3 выполнится только после успешного исполнения команды2, а команда2 — после команды1.

Вертикальная черта | (pipe)

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

ps axu | grep имя_процесса

&& и || можно комбинировать. Например вот так: команда1 && команда2 || команда3

Стрелки вверх и вниз на клавиатуре

Помогают осуществлять навигацию по последним командам. Стрелка вверх (Ctrl+P) — предыдущая выполненная команда, стрелка вниз (Ctrl+N) — следующая.

history — история

Если вы забыли, как вы выполнили действие пять дней назад, а вот оно снова потребовалось, выполните history, и терминал выведет на экран последнюю тысячу команд.

Новая вкладка bash

Не всегда удобно иметь несколько окон. Некоторые терминалы, как и браузеры, дают возможность открыть несколько вкладок сочетанием клавиш Ctrl+Shift+T.

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

Пробовали ли вы копировать текст и вставлять в терминал? Пробовали Ctrl+C? Ctrl+C прервет выполнение текущей команды, например таблицы процессов, сбросит текст, введенный в строку. Скопировать текст из bash — Ctrl+Shift+C, вставить — Ctrl+Shift+V (для MacOS — Command+C и Command+V соответственно).

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

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

Содержание

  1. Используйте параметры команды -h или —help
  2. Использование завершения табуляции в оболочке Shell
  3. Неизвестные команды
  4. Команда help
  5. Команда man или страницы man
  6. Команда info
  7. Команда apropos
  8. Команда whatis

Используйте параметры команды -h или —help

Если вы не знаете, как использовать команду, т.е. не знаете ее параметров, типа возврата и т.д., вы можете воспользоваться командой -h или -help.

Как использовать -h или -help?

Запустите терминал, нажав Ctrl+Alt+T или просто щелкните на значке терминала на панели задач. Просто введите в терминале команду, использование которой вам нужно узнать, с -h или -help после пробела и нажмите Enter. И вы получите полную информацию об использовании этой команды, как показано ниже.

Используйте параметры команды -h или --help

Использование завершения табуляции в оболочке Shell

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

Запустите терминал, нажав Ctrl+Alt+T или просто щелкните по значку терминала на панели задач. Просто введите известное вам имя команды в терминале, а затем дважды нажмите tab, как показано ниже.

завершения табуляции

Неизвестные команды

Если вы хотите использовать команду, но не знаете, установлена ли она в Ubuntu или нет, или, если она существует, вы не знаете пакет, содержащий ее, даже тогда вы можете использовать эту команду.

Запустите терминал, нажав Ctrl+ Alt+ T или просто щелкните по значку терминала на панели задач. В любом случае просто введите команду в терминале и нажмите Enter. Терминал сообщит вам, установлена она или нет, а если установлена, то в каком пакете она находится. Это показано ниже.

Неизвестные команды

Команда help

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

Запустите терминал, нажав Ctrl+Alt+T или просто щелкните по значку терминала на панели задач. Просто введите help в терминале и нажмите клавишу Enter. Это показано ниже.

Команда help

Команда man или страницы man

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

Запустите терминал, нажав Ctrl+ Alt+ T или просто щелкните по значку терминала на панели задач. В терминале напишите man и через пробел напишите имя команды, руководство по которой вы хотите получить, и нажмите Enter. Эта команда работает, как показано ниже.

Команда man

Пример: Выполните команду

чтобы получить подробную справку по оболочке Linux bash.

Команда info

Некоторые команды не имеют своих руководств или написаны, либо они неполные. Чтобы получить помощь по этим командам, мы используем команду info.

Запустите терминал, нажав Ctrl+Alt+T или просто щелкните по значку терминала на панели задач. В терминале наберите info и через пробел введите название команды, руководство по которой не существует, и нажмите Enter. Это показано ниже.

Команда info

Пример:

Команда apropos

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

Запустите терминал, нажав Ctrl+ Alt+ T или просто щелкните по значку терминала на панели задач. Наберите в терминале apropos и после пробела введите имя команды, соответствующие man-страницы которой вы хотите найти, и нажмите Enter. Это показано ниже.

Команда apropos

Команда whatis

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

Запустите терминал, нажав Ctrl+Alt+T или просто щелкните по значку терминала на панели задач. Просто введите whatis в терминале и после пробела введите имя команды, однострочное описание которой вам нужно, а затем нажмите enter.

Это показано ниже.

Команда Whatis в Linux

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

Каждая уважающая себя система (или дистрибутив) на базе Linux содержит в своём составе так называемые man-страницы — «мануалы», т. е. справочные руководства. Ведь черпать информацию о том как пользоваться системой, в частности, о назначении команд, их опций, системной конфигурации и составляющих её (конфигурацию) файлов в итоге откуда-то нужно. Конечно, существуют большое количество технической литературы в виде изданий (как из открытых источников, так и коммерческих) по системному администрированию UNIX/Linux, однако всё это лишь дополняет (порой с качественным переводом) первоисточники, доступные локально «из коробки» в справочных системах Linux-дистрибутивов.

Конечно, man-руководства не содержат такой информации, к примеру, как сгенерировать и установить SSL-сертификат — они (man-руководства) и не предназначены для этого. Но любому системному администратору Linux получать информацию и исчерпывающее описание команд, библиотек функций, системной конфигурации и т. д. для обслуживаемого дистрибутива следует, в первую очередь, из справочной системы используемого дистрибутива.

Содержание

  1. Справочная система Linux
  2. Чтение интерактивной справки
  3. Хранение интерактивных руководств

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

Linux Solaris HP-UX Содержание
1 1 1 Пользовательские приложения и команды
2 2 2 Коды ошибок системного ядра, а также описание системных вызовов
3 3 3 Описание функций системных библиотек
4 7 7 Сетевые протоколы, драйверы устройств
5 4 4 Описание стандартных форматов файлов
6 6 Информация о демонстрационных программах и играх
7 5 5 Различного рода документация
8 1m 1m Команды системного администрирования
9 9 Спецификация системного ядра и внутренних интерфейсов
9 Основная информация и описание, касающееся системы HP-UX

По-умолчанию, без указания раздела команда man практически всегда находит требуемую информацию, поэтому на первый взгляд может показаться, что структура разделов не имеет особого значения. Но часты случаи, когда одна и та же искомая фраза содержится в разных контекстах и вот тут и полезно разбиение системной справки на разделы. К примеру, запрашиваемая фраза «passwd» подразумевает как команду, так и конфигурационных файл. Таким образом справочную информацию содержат (согласно вышеприведённой таблице) разделы 1, 4 и 5.

Стоит отметить, что в настоящее время разделы 8 всё чаще освобождаются и используются как резервные для последующего наполнения, а ранее содержащаяся в данных разделах информация (команды системного администрирования) перемещена (в большинстве дистрибутивов) в раздел 1. Также освобождаются и разделы 6.

Чтение интерактивной справки

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

man [-опции] раздел заголовок

Команда man использует для вывода руководства утилиты less или more (а также и другие инструменты для постраничного вывода текста), при этом аккуратно форматирует текст для удобства его восприятия. Используемая утилита постраничной разбивки задаётся в переменной среды PAGER. Аргумент заголовок — это чаще всего имя команды, файла или даже устройства, о котором необходимо вывести разделы справки. Как правило, в первую очередь просматриваются разделы, содержащие информацию о командах, т. е. разделы 1, 6 и 8, а далее поиск производится по возрастанию номеров разделов.

Для указания конкретного раздела справки следует передавать параметр раздел, например:

$ man sync

выведет описание для команды sync, а команда:

$ man 2 sync

отобразит страницы с описанием системного вызова sync.

Если нужно получить представление о том, в каких разделах доступна информация по интересующему запросу, нужно дать команду man -k запрос:

$ man -k sync
FD_CLR (3)           - synchronous I/O multiplexing
FD_ISSET (3)         - synchronous I/O multiplexing
FD_SET (3)           - synchronous I/O multiplexing
FD_ZERO (3)          - synchronous I/O multiplexing
_newselect (2)       - synchronous I/O multiplexing
adjtime (3)          - correct the time to synchronize the system clock
aio (7)              - POSIX asynchronous I/O overview
. . .
aio_cancel (3)       - cancel an outstanding asynchronous I/O request

Вывод содержит список страниц (с указанием раздела или подраздела справочной системы в скобках), для которых в строках их описаний содержится ключевое слово. Этого же можно добиться командой apropos запрос.

Хранение интерактивных руководств

Для определения, где в конкретной Linux-системе хранятся страницы справочных руководств (они же являются входными данными для обработки командой nroff, используемой man), достаточно выполнить команду manpath:

$ manpath
/usr/local/man:/usr/local/share/man:/usr/share/man

В данном выводе представлены каталоги, в подкаталогах которых хранится справочная информация для систем Ubuntu. Пункты представленного списка разделены двоеточиями. Расположение для хранения man-страниц можно изменить. Поскольку данная опция хранится в переменной окружения MANPATH, то для этого нужно изменить значение этой переменной:

export MANPATH=/home/share/localman:/usr/share/man

По-умолчанию для Linux-систем справочные руководства хранятся в /usr/share/man. Команда man также поддерживает работу с кэшем страниц, но только тогда, когда соответствующие каталоги /var/cache/man и /usr/share/man доступны для записи, что критично в плане безопасности. В целях экономии дискового пространства справочные руководства хранятся в сжатом виде и для сжатия используется, как правило, утилита gzip. Сжатие страниц практически не сказывается на производительности во время работы со справочной системой, поскольку команда man способна очень быстро производить разархивацию.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

10 июня 2019

74 621

10

Время чтения ≈ 22 минуты

Справочник основных команд Linux

Содержание:

  • Справки
  • Права суперпользователя
  • Файлы и каталоги
  • Навигация
  • Сеть
  • Процессы
  • Архивирование
  • Текст
  • Окружение пользователя
  • Пакетные менеджеры
  • Заключение

Одним из коренных отличий семейства ОС Linux от ОС Windows является ведущая роль командной строки или терминала в администрировании системы. Для успешной работы с «Линукс» одного графического интерфейса недостаточно. Полноценное управление тут возможно только через терминал. А в работе с терминалом никак не обойтись без изучения основных команд Linux.

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

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

Справочная информация / документация

  1. man

    (Manual). Показывает инструкцию к программам и командам Linux. Чтобы получить руководство для программы, наберите:

    man имя_программы

    Для инструкции по команде, введите:

    man имя_команды
  2. whatis

    Выводит краткое описание программы. Пример:

    whatis имя_программы
  3. whereis

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

    whereis имя_программы

    Также даёт информацию о связанной с программой справочной информации.

  4. file

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

  5. —help

    Вся необходимая информация о команде будет доступна, если набрать:

    имя_программы --help
  6. whoami

    Команда показывает действительный идентификатор пользователя (UID).

  7. TAB

    Показывает варианты автозавершения команды. Нажатие клавиши табуляция после определённой команды или их последовательности выводит подсказку с вариантами возможного продолжения команды.

  8. Ctrl + R

    Это сочетание клавиш помогает запустить обратный поиск по всем параметрам, связанным с указанной командой. Достаточно лишь указать ключевое слово для поиска. Есть серьёзный минус – за раз можно увидеть только 1 результат. Выйти из режима реверсивного поиска поможет комбинация Ctrl + C.

Права суперпользователя

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

Способы получить права root в Linux

  • Вход от имени суперпользователя в виртуальной консоли, введя логин и пароль пользователя root.
  • Разовое переключение на роль суперпользователя в терминале с помощью специальных утилит.

О втором варианте расскажем подробнее.

  1. sudo

    (Super User Do). Позволяет исполнять команды с правами суперпользователя. Перед переходом в режим root администратора система выполнит запрос пароля и логина root. Пример:

    sudo имя_команды
  2. sudo su

    Инструмент применяется, когда нужно запустить несколько «суперпользовательских» команд. Все следующие вводимые команды будут запускаться в режиме суперпользователя до закрытия командной строки.

  3. sudo gksudo

    Осуществляет запуска приложений от имени суперпользователя, использующих не терминал, а графический интерфейс. В дистрибутиве Kubuntu имя этой команды выглядит несколько иначе — sudo kdesudo.

  4. sudo !!

    Команда применяется, если нужно перезапустить с правами root уже отданную (от имени обычного пользователя) команду.

Максимальную производительность приложений Linux зависит от правильного подбора платформы для ОС. Мощный виртуальный сервер от Eternalhost обеспечит интернет-ресурсу стабильную работу и пространство для развития.

Управления файлами и каталогами

  1. ls

    (List). С помощью этой утилиты можно посмотреть, что содержится в папке. Без указания конкретного пути показывает текущий каталог. Если путь указан, то переход совершиться в конечный его каталог. Чтобы вывести каталог в виде списка с дополнительной поясняющей информацией введите:

    ls -l

    Для показа скрытых файлов:

    ls -a
  2. ll

    Команда для просмотра содержимого директорий. Более современная альтернатива этой утилиты ls -l может работать не во всех дистрибутивах Linux.

  3. cat

    (Concatenate / Catenate). Команда двойного назначения. Показывает на экране что содержит файл или стандартный ввод. Также к «склеивает» несколько переданных подряд файлов в один. Если нужно посмотреть содержимое одного файла, вводим:

    cat имя_файла

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

    cat файл_№1 файл_№2 файл_№3

    Для «склейки» файлов, вводим:

    cat файл_№1 файл_№2 > файл_№3

    Чтобы задать нужное количество строк в показанном:

    cat -n
  4. cd

    (Change Directory). Меняет текущий каталог, в котором работает терминал на указанный. Когда терминал запущен, он использует по умолчанию корневой каталог (root), вернуться в который можно, набрав:

    cd ~

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

    cd адрес_папки

    Чтобы подняться по древу каталогов на уровень вверх набираем:

    cd ..

    Чтобы вернуться к предыдущей директории:

    cd -
  5. &&

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

    команда_№1 && команда_№2 && команда_№3

    Число команд в такой последовательности не ограничено.

  6. mkdir

    (Make Directory). Создаёт новую директорию. Можно также создать полную структуру подкаталогов, если ввести сочетание:

    mkdir –p
  7. cp

    (Copy). Утилита, позволяющая скопировать файл или каталог. Копирование файлов и каталогов. Чтобы копирование прошло рекурсивно, т. е. включало все поддиректории и файлы в них, надо добавить к команде:

    cp -r

    А если надо дополнить рекурсивное копирование сохранением всех атрибутов, сведения о владельце и временный штамп, добавляем «архивную» опцию -a, чтобы получилось:

    cp –r –a
  8. mv

    (Move). Эта команда в Linux одновременно отвечает за перемещение и переименование файла или каталога. При переименовании файл перемещается в ту же папку, но уже названную по-новому.

  9. rm

    (Remove). Отвечает за удаление папок и файлов. Использовать оператор rm следует крайне осторожно. В Linux файлы удаляются не в корзину, откуда их можно восстановить, а стираются безвозвратно. Для рекурсивного удаления используйте сочетание:

    rm -r
  10. ln

    (Link). Создаёт программные ссылки на файлы. По функционалу это похоже на ярлыки в Windows.

    Типы ссылок Linux

  • символические (-s) – указание на адрес файла ил папки без метаданных;
  • твёрдые или жёсткие (-P) – содержат сведения о физическом адресе на диске, где хранится файл.
    Удалить ссылку в Linux можно при помощи атрибута –f.
  1. chmod

    (Change Mode). Изменяет разрешения доступа к файлу. Под доступом имеется в виду классическая триада: чтение r, изменение w и запуск x. Общий вид:

    chmod разрешения имя_файла

    При этом, «разрешения» могут быть указаны буквенным, символьным (rwx) или цифровым кодом. Кроме того, эта переменная может включать информацию о владельце (u / g / o / a) и операции с правами (+ / / =).

Популярные комбинации разрешений для команды chmod

Вид разрешения Символьный код Числовой код
Нет допуска  —  0
Чтение  r—  4
Изменение  -w-  2
Запуск  —x  1
Запуск + Изменение  -wx  3
Чтение + Запуск  r-x  5
Чтение + Изменение  rw-  6
Запуск + Изменение + Запуск  rwx  7
  1. chown

    (Change Owner). Команда для смены владельца файла и его группы. Для смены владельца используем синтаксис:

    chown новый_владелец имя_файла

    Для смены группы файла:

    chown новая_группа имя_файла

    Если надо поменять оба параметра:

    chown новый_владелец :новая_группа имя_файла

    Команду можно применить только с правами суперпользователя. Чтобы изменить владельца/группу рекурсивно добавляем:

    chown –R
  2. chgrp

    (Change Group). Меняет группу файла. В отличие от chown, эта команда позволяет менять группы, только тем, кто в ней состоит.

  3. dd

    (Dataset Definition). Позволяет скопировать данные на двоичном уровне из одного места в другое. Данные могут быть любого размера — от образа CD/ DVD до целого жёсткого диска.
    Утилита перемещает блоки данных из указанного источника — if имя_файла в пункт назначения — of имя_файла, который может быть устройством или файлом. Для копирования нескольких файлов применяется утилита cp.
    С данной командой надо обращаться крайне осторожно, о чём свидетельствует её альтернативное название «Data Destroyer». Ошибка в вводе данных может легко стать причиной потери данных на диске.

  4. df

    (Disk Free). Даёт полную информацию о свободном пространстве на диске. Анализ включает перечисление файловых систем смонтированных разделов, обзор занятого и свободного места на диске. Для более удобного вывода информации, лучше применять сочетание:

    df –h
  5. du

    (Disk Usage). Позволяет определить размер файла или каталога. Применяется в вместе с дополнительными операторами:

  • df –h — представляет данные о размере в удобном для восприятия формате;
  • df –s — даёт необходимый минимум данных;
  • df –d — задаёт глубину рекурсии для каталогов.
  1. mount / umount

    Команды Linux для монтажа и отключения любых файловых систем — от CD-диска и USB-флешки до ядер ОС. Тип файловой системы обычно определяется командой самостоятельно, путём чтения суперблока. Опция используется только с правами суперпользователя.

Навигация

  1. find

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

  2. pwd

    Отображает на экране текущий каталог.

  3. clear

    Команда полной очистки окна терминала удаляет все ранее выведенные сообщения.

  4. history

    Показывает ранее введённые пользователем команды. Перемещаться по списку введённых команд можно, нажимая на клавиатуре «Вверх» и «Вниз».

  5. locate

    Быстрый поиск файлов по базе данных updatedb для шаблонов имён файлов. Эта БД работает со снимком файловой системы, что многократно ускоряет процесс поиска. Но тут есть и существенный минус. Точность поиска зависит от того, насколько актуальны данные о файловой системе в текущей версии снимка.

  6. zcat / zless / zmore

    Утилиты для просмотра сжатых файлов. С помощью zcat можно найти увидеть список сжатых файлов, zless выводит их списком постранично с возможностью листать вперёд и назад, а zmore — только вперёд.

  7. ;

    Точка с запятой — ещё один оператор для последовательного запуска нескольких команд в одной строке. Если нужно, чтобы команды выполнялись параллельно, используйте оператор так:

    (команда_№1 &); (команда_№2 &); (команда_№3 &)

Управление сетью

  1. ip

    (Internet Protocol). Утилита выводит полный список параметров для настройки работы с сетью. Среди них:

  • link — сетевое устройство;
  • address — IP-адрес сетевого устройства;
  • monitor — мониторинг устройства;
  • route — маршрутизация;
  • tunnel — туннелированные.
    Каждый из выводимых объектов можно изменять при помощи дополнительных команд: add, change, del, save и т.д.
  1. ping

    Команда проверяет наличие и качество интернет-подключения.

  2. nethogs

    Утилита мониторинга сетевой активности устройств в системе. Чтобы задать сетевой интерфейс, введите:

    nethogs -i
  3. traceroute

    Утилита отслеживания интернет-подключения, отслеживая маршруты следования пакетов данных в сетях TCP/IP. Более совершенный инструмент для отслеживания проблем с подключением к Сети, чем упомянутая выше команда ping. Запускается только с правами суперпользователя.

Работа с процессами

  1. kill / xkill / pkill / killall

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

  • kill — прекращает операцию, находя ее через идентификатор процесса (PID).
  • xkill — графический способ. После ввода команды курсор превращается в крестик, который при клике на окно открытого процесса, останавливает его;
  • pkill — завершает конкретный процесс, находя его по имени.
  • killall — прекращает все процессы с указанным именем.
  1. Ctrl +C

    Данное сочетание клавиш — еще один быстрый способ завершить выполнение любого процесса в терминале Linux.

  2. Ctrl +Z

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

  3. ps / pgrep

    (Process Status / Process-ID Global Regular Expressions Print). Команды находят по заданным параметрам и выводят информацию об активных процессах. Самый доступный способ найти идентификатор процесса (PID). Модификация pstree показывает весь список («древо») исполняемых процессов.

  4. top / htop / atop

    (Table of Processes). Три варианта команды, вызывающую консольную программу мониторинга активных процессов в системе. Информация отображается в виде таблицы со списком процессов в реальном времени. Рекомендуется использовать две последних модификации программы – в них больше возможностей и продвинутых функций.

  5. crontab

    Выполнение Cron (Command Run ON) — задач по расписанию в Linux.

  6. time

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

  • real— общее время исполнения;
  • user — сколько времени пользователь занял у CPU;
  • sys — сколько времени CPU было потрачено системой.

Сделать время исполнения процесса ОС Linux минимальным поможет VPS сервер от Eternalhost! Универсальное решение по доступной цене!

Работа с архивами

  1. gzip

    Создаёт архивы со сжатыми файлами. Архивный файл будет иметь расширение .gz.

  2. gunzip

    Команда-распаковщик для zip-архивов. Извлекает сжатые файлы и удаляет архивный файл .gz.

  3. tar

    Сохраняет файлы и каталоги в архив с расширением .tar. Удобная утилита для создания резервных копий или надёжной архивации данных.

Управление пользователями

  1. useradd / userdel / usermod

    Команды управления учётными записями пользователей. Позволяют добавлять, удалять и редактировать пользовательские профили. Пример:

    useradd имя_пользователя.
  2. passwd

    Позволяет менять пароли учётных записей. Обычный пользователь может поменять только пароль, связанный с его именем: passwd имя_пользователя.В режиме суперпользователя можно «вслепую» сбросить все пользовательские пароли в системе.

Работа с текстом

  1. Ctrl + A / Ctrl + E

    Клавиши быстрого перехода в начало (А) и конец (E) строки.

  2. Ctrl + Shift + C / Ctrl + Shift + V

    Это сочетание клавиш в Linux позволит быстро скопировать (C) и вставить (V) текст в терминале.

  3. more / less

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

  4. head / tail

    Пара дополняющих друг друга команд для просмотра на одном экране начала и конца текста. Команда head выдаёт 10 (по умолчанию) первых строк текста, tail — последних. Число строк в обоих случаях меняется с помощью аргумента -n. Оператор -f позволяет отслеживать на экране изменения в файле. Чтобы лог (журнал) файла отображался в режиме реального времени, ввести команду:

    tail –nf,

    Для отслеживания логов нескольких файлов применяется модификация команды — multitail.

  5. grep

    (Global Regular Expression and Print). Ищет текст по заданному шаблону. Это очень полезно, когда надо проанализировать работу команды, которая сопровождается большим объёмом текстовой информации. Шаблон может заполняться строкой или регулярным выражением. Пример:

    alias старое_название новое_название
  6. sort

    Сортировка текстовой информации по заданным показателям. Дополнительные переменные позволяют:

  • -n ­— сортировать строки текста по числовому значению;
  • du ­— по размеру;
  • -r ­— применять обратную сортировку;
  • -u ­— удалять дубликаты при сортировке.
  1. wc

    (Word Count). Программа для подсчета заданных параметров в тексте. Считает такие показатели, как символы, слова, строки и байты.

  2. diff

    (Difference). Производит построчное сравнение двух текстовых файлов, выводя различия между ними. Алгоритм работы:

    diff файл_№1 файл_№2

    Различия между двумя версиями файлов отмечают такие символы, как:

  • c — изменённые строки;
  • d — удалённые строки;
  • а —новые строки.

Окружение пользователя

  1. su / sudo

    (Switch User / Substitute User & Do). Две команды для запуска процессов от имени другого пользователя без завершения текущего сеанса. При использовании su по умолчанию происходит переход на пользователя root. Команда sudo способна не только активировать режим суперпользователя (о чём упоминалось выше), но и выполнить команду от имени другого пользователя без реального переключения на него. Поэтому второй вариант считается более безопасным.

  2. date

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

  3. alias

    Команда для создания синонимов названий незаменяемых команд для их сокращения. Она изменяет длинное название на удобное пользователю короткое или аббревиатуру. Пример:

    alias старое_название новое_название

    Этот же приём отлично подойдёт для устранения опечаток в командах. Отменить действие утилиты переименования поможет команда unalias.

  4. uname

    Утилита, выводящая информацию об операционной системе. Без дополнительных параметров она выдаст только название ядра. Чтобы получить всю возможную системную информацию, введите:

    uname -a
  5. uptime

    Показывает аптайм – время непрерывной работы системы.

  6. sleep

    Задаёт таймер выключения системы.

  7. yes

    Утилита автозаполнения поля согласия в команде или скрипте. Введите: yes название_команды и вам не придётся делать подтверждение вручную, когда этого потребует сценарий взаимодействия программы с пользователем.

Пакетные менеджеры

Пакетные менеджеры (ПМ) в Linux отвечают за установку, обновление и удаление приложений. Принцип их работы – загрузка программных пакетов из собственных сетевых репозитариев. Данные утилиты работают только с правами суперпользователя. Для различных дистрибутивов Linux существуют свои версии ПМ.

  1. apt

    ПМ для Debian, Ubuntu и Mint. Чтобы установить приложение, введите:

    sudo apt install имя_пакета

    Чтобы удалить приложение:

    sudo apt remove имя_пакета
  2. dnf / yum

    Два самых распространённых ПМ для операционных систем Red Hat, Fedora и CentOS. Чтобы установить приложение, введите:

    sudo dnf install имя_пакета

    Чтобы удалить:

    sudo dnf remove имя_пакета
  3. pacman

    Пакетный менеджер дистрибутивов Arch и Manjaro. Чтобы установить приложение, введите:

    sudo pacman -S имя_пакета

    Чтобы удалить приложение:

    sudo pacman -R имя_пакета

Заключение

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

У каждого пользователя Linux есть свой список must have команд. Наверняка и вам есть чем дополнить данный обзор? Делитесь своими любимыми командами Linux в комментариях!

Хотите, чтобы операционка работала как швейцарские часы? Надёжная и мощная платформа для развёртывания любых дистрибутивов Linux — VDS от Eternalhost!

Оцените материал:


[Всего голосов: 8    Средний: 4.5/5]

Понравилась статья? Поделить с друзьями:
  • Д вит ламира 50000 инструкция по применению
  • Инструкция к цифровому тахометру с aliexpress
  • Базовая выкройка платья с рукавом пошаговая инструкция для начинающих
  • Руководство нижневартовского района
  • Шахматы своими руками из дерева пошаговая инструкция