Время на прочтение
8 мин
Количество просмотров 32K
Первый отрывок третьей части серии руководств для новичков. Практически всё, что нужно знать, чтобы найти справочную информацию по вашей системе. Короче, RTFM и не задавайте глупых вопросов.
Навигация по основам Linux от основателя Gentoo:
Часть I: 1, 2, 3, 4
Часть II: 1, 2, 3, 4, 5
Часть III
- Документация (вступление)
- Модель прав доступа
- Управление аккаунтами
- Настройка окружения (итоги и ссылки)
Предисловие
Об этом руководстве
Встречайте «Администрирование для продолжающих», третье из четырех пособий, созданных для подготовки к экзамену «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 разных способов, самый простой:
> имя_файла
На самом деле >, как и обратный знак < не совсем являются командами, это символы перенаправления или связи. Однако, если перед именем несуществующего файла поставить знак > вместе с указанием расширения файла, в текущей директории появится пустой файл.
Но нам требуется поместить по 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' -> 'dir17/dir'
переименован 'dir19/text00.txt' -> 'dir17/text00.txt'
переименован 'dir19/text01.txt' -> 'dir17/text01.txt'
переименован 'dir19/text02.txt' -> 'dir17/text02.txt'
переименован 'dir19/text03.txt' -> 'dir17/text03.txt'
переименован 'dir19/text40.txt' -> 'dir17/text40.txt'
переименован 'dir19/text41.txt' -> 'dir17/text41.txt'
переименован 'dir19/text42.txt' -> '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 или интерфейс командной строки также предоставляет нам множество способов получить помощь.
Содержание
- Используйте параметры команды -h или —help
- Использование завершения табуляции в оболочке Shell
- Неизвестные команды
- Команда help
- Команда man или страницы man
- Команда info
- Команда apropos
- Команда whatis
Используйте параметры команды -h или —help
Если вы не знаете, как использовать команду, т.е. не знаете ее параметров, типа возврата и т.д., вы можете воспользоваться командой -h или -help.
Как использовать -h или -help?
Запустите терминал, нажав Ctrl+Alt+T или просто щелкните на значке терминала на панели задач. Просто введите в терминале команду, использование которой вам нужно узнать, с -h или -help после пробела и нажмите Enter. И вы получите полную информацию об использовании этой команды, как показано ниже.
Использование завершения табуляции в оболочке Shell
Если вы не знаете точного названия команды, то можете воспользоваться завершением табуляции.
Запустите терминал, нажав Ctrl+Alt+T или просто щелкните по значку терминала на панели задач. Просто введите известное вам имя команды в терминале, а затем дважды нажмите tab, как показано ниже.
Неизвестные команды
Если вы хотите использовать команду, но не знаете, установлена ли она в Ubuntu или нет, или, если она существует, вы не знаете пакет, содержащий ее, даже тогда вы можете использовать эту команду.
Запустите терминал, нажав Ctrl+ Alt+ T или просто щелкните по значку терминала на панели задач. В любом случае просто введите команду в терминале и нажмите Enter. Терминал сообщит вам, установлена она или нет, а если установлена, то в каком пакете она находится. Это показано ниже.
Команда help
Это команда, которая используется для перечисления всех возможных команд, предустановленных в Ubuntu.
Запустите терминал, нажав Ctrl+Alt+T или просто щелкните по значку терминала на панели задач. Просто введите help в терминале и нажмите клавишу Enter. Это показано ниже.
Команда man или страницы man
Команда man используется, когда вы хотите получить подробное руководство по работе с командой.
Запустите терминал, нажав Ctrl+ Alt+ T или просто щелкните по значку терминала на панели задач. В терминале напишите man и через пробел напишите имя команды, руководство по которой вы хотите получить, и нажмите Enter. Эта команда работает, как показано ниже.
Пример: Выполните команду
чтобы получить подробную справку по оболочке Linux bash.
Команда info
Некоторые команды не имеют своих руководств или написаны, либо они неполные. Чтобы получить помощь по этим командам, мы используем команду info.
Запустите терминал, нажав Ctrl+Alt+T или просто щелкните по значку терминала на панели задач. В терминале наберите info и через пробел введите название команды, руководство по которой не существует, и нажмите Enter. Это показано ниже.
Пример:
Команда apropos
Эта команда используется вместе с другой командой для поиска всех страниц man, в которых присутствует последняя команда.
Запустите терминал, нажав Ctrl+ Alt+ T или просто щелкните по значку терминала на панели задач. Наберите в терминале apropos и после пробела введите имя команды, соответствующие man-страницы которой вы хотите найти, и нажмите Enter. Это показано ниже.
Команда whatis
Эта команда используется вместе с другой командой только для того, чтобы показать однострочное использование последней команды из ее руководства. Это быстрый способ узнать об использовании команды, не просматривая все руководство.
Запустите терминал, нажав Ctrl+Alt+T или просто щелкните по значку терминала на панели задач. Просто введите whatis в терминале и после пробела введите имя команды, однострочное описание которой вам нужно, а затем нажмите enter.
Это показано ниже.
Используя любой из перечисленных выше способов, вы можете получить необходимую помощь из терминала или командной строки Ubuntu, если у вас возникнут проблемы при работе с ней.
Каждая уважающая себя система (или дистрибутив) на базе Linux содержит в своём составе так называемые man-страницы — «мануалы», т. е. справочные руководства. Ведь черпать информацию о том как пользоваться системой, в частности, о назначении команд, их опций, системной конфигурации и составляющих её (конфигурацию) файлов в итоге откуда-то нужно. Конечно, существуют большое количество технической литературы в виде изданий (как из открытых источников, так и коммерческих) по системному администрированию UNIX/Linux, однако всё это лишь дополняет (порой с качественным переводом) первоисточники, доступные локально «из коробки» в справочных системах Linux-дистрибутивов.
Конечно, man-руководства не содержат такой информации, к примеру, как сгенерировать и установить SSL-сертификат — они (man-руководства) и не предназначены для этого. Но любому системному администратору Linux получать информацию и исчерпывающее описание команд, библиотек функций, системной конфигурации и т. д. для обслуживаемого дистрибутива следует, в первую очередь, из справочной системы используемого дистрибутива.
Содержание
- Справочная система Linux
- Чтение интерактивной справки
- Хранение интерактивных руководств
Для удобства организации и хранения справочной документации все страницы справочных руководств в 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 от ОС Windows является ведущая роль командной строки или терминала в администрировании системы. Для успешной работы с «Линукс» одного графического интерфейса недостаточно. Полноценное управление тут возможно только через терминал. А в работе с терминалом никак не обойтись без изучения основных команд Linux.
В Linux насчитывается несколько сотен основных команд и их модификаций. Они группируются по нескольким категориям. По расположению — могут быть утилитами командной строки или встроенной функцией командной оболочки. По частоте применения – используемыми постоянно, эпизодически и редко. По типам действий – от получения справки до управления файлами и процессами. Именно третья, функциональная составляющая и станет основой группировки утилит в этой статье.
В обзоре собраны все важнейшие команды Linux, которые могут пригодиться для администрирования ОС Linux. Статья рассчитана как на новичков, так и на продвинутых пользователей, уже знакомых с основным функционалом терминала. Эту своеобразную шпаргалку можно смело добавлять в закладки всем, кто хочет извлечь из «Линукс» максимум полезных свойств и повысить свою продуктивность в несколько раз.
Справочная информация / документация
-
man
(Manual). Показывает инструкцию к программам и командам Linux. Чтобы получить руководство для программы, наберите:
man имя_программы
Для инструкции по команде, введите:
man имя_команды
-
whatis
Выводит краткое описание программы. Пример:
whatis имя_программы
-
whereis
Показывает полный путь к исполняемому файлу и другим файлам программы. Пример:
whereis имя_программы
Также даёт информацию о связанной с программой справочной информации.
-
file
Показывает к какому типу относится файл. Особенность Linux в том, что рабочие файлы могут и не иметь расширения. Поэтому у пользователя могут возникнуть проблемы с идентификацией файлов, которые снимает эта команда.
-
—help
Вся необходимая информация о команде будет доступна, если набрать:
имя_программы --help
-
whoami
Команда показывает действительный идентификатор пользователя (UID).
-
TAB
Показывает варианты автозавершения команды. Нажатие клавиши табуляция после определённой команды или их последовательности выводит подсказку с вариантами возможного продолжения команды.
-
Ctrl + R
Это сочетание клавиш помогает запустить обратный поиск по всем параметрам, связанным с указанной командой. Достаточно лишь указать ключевое слово для поиска. Есть серьёзный минус – за раз можно увидеть только 1 результат. Выйти из режима реверсивного поиска поможет комбинация Ctrl + C.
Права суперпользователя
Большое число базовых команд Linux, например, установка программ или создание файлов в корневой системе, требуют для исполнения права пользователя root или суперпользователя. Применение данного режима несёт серьёзные изменения для операционной системы, поэтому нужно точно понимать, как сработает запущенная команда.
Способы получить права root в Linux
- Вход от имени суперпользователя в виртуальной консоли, введя логин и пароль пользователя root.
- Разовое переключение на роль суперпользователя в терминале с помощью специальных утилит.
О втором варианте расскажем подробнее.
-
sudo
(Super User Do). Позволяет исполнять команды с правами суперпользователя. Перед переходом в режим root администратора система выполнит запрос пароля и логина root. Пример:
sudo имя_команды
-
sudo su
Инструмент применяется, когда нужно запустить несколько «суперпользовательских» команд. Все следующие вводимые команды будут запускаться в режиме суперпользователя до закрытия командной строки.
-
sudo gksudo
Осуществляет запуска приложений от имени суперпользователя, использующих не терминал, а графический интерфейс. В дистрибутиве Kubuntu имя этой команды выглядит несколько иначе — sudo kdesudo.
-
sudo !!
Команда применяется, если нужно перезапустить с правами root уже отданную (от имени обычного пользователя) команду.
Максимальную производительность приложений Linux зависит от правильного подбора платформы для ОС. Мощный виртуальный сервер от Eternalhost обеспечит интернет-ресурсу стабильную работу и пространство для развития.
Управления файлами и каталогами
-
ls
(List). С помощью этой утилиты можно посмотреть, что содержится в папке. Без указания конкретного пути показывает текущий каталог. Если путь указан, то переход совершиться в конечный его каталог. Чтобы вывести каталог в виде списка с дополнительной поясняющей информацией введите:
ls -l
Для показа скрытых файлов:
ls -a
-
ll
Команда для просмотра содержимого директорий. Более современная альтернатива этой утилиты ls -l может работать не во всех дистрибутивах Linux.
-
cat
(Concatenate / Catenate). Команда двойного назначения. Показывает на экране что содержит файл или стандартный ввод. Также к «склеивает» несколько переданных подряд файлов в один. Если нужно посмотреть содержимое одного файла, вводим:
cat имя_файла
Если нужно узнать содержимое нескольких файлов подряд:
cat файл_№1 файл_№2 файл_№3
Для «склейки» файлов, вводим:
cat файл_№1 файл_№2 > файл_№3
Чтобы задать нужное количество строк в показанном:
cat -n
-
cd
(Change Directory). Меняет текущий каталог, в котором работает терминал на указанный. Когда терминал запущен, он использует по умолчанию корневой каталог (root), вернуться в который можно, набрав:
cd ~
Чтобы указать другую папку для работы с файлами, нужно ввести:
cd адрес_папки
Чтобы подняться по древу каталогов на уровень вверх набираем:
cd ..
Чтобы вернуться к предыдущей директории:
cd -
-
&&
Двойной амперсанд – не полноценная команда, а управляющий оператор. Он предназначен для выполнения последовательного ряда команд. Чтобы терминал выполнил команды одну за другой, нужно разделить их следующим образом:
команда_№1 && команда_№2 && команда_№3
Число команд в такой последовательности не ограничено.
-
mkdir
(Make Directory). Создаёт новую директорию. Можно также создать полную структуру подкаталогов, если ввести сочетание:
mkdir –p
-
cp
(Copy). Утилита, позволяющая скопировать файл или каталог. Копирование файлов и каталогов. Чтобы копирование прошло рекурсивно, т. е. включало все поддиректории и файлы в них, надо добавить к команде:
cp -r
А если надо дополнить рекурсивное копирование сохранением всех атрибутов, сведения о владельце и временный штамп, добавляем «архивную» опцию -a, чтобы получилось:
cp –r –a
-
mv
(Move). Эта команда в Linux одновременно отвечает за перемещение и переименование файла или каталога. При переименовании файл перемещается в ту же папку, но уже названную по-новому.
-
rm
(Remove). Отвечает за удаление папок и файлов. Использовать оператор rm следует крайне осторожно. В Linux файлы удаляются не в корзину, откуда их можно восстановить, а стираются безвозвратно. Для рекурсивного удаления используйте сочетание:
rm -r
-
ln
(Link). Создаёт программные ссылки на файлы. По функционалу это похоже на ярлыки в Windows.
Типы ссылок Linux
- символические (-s) – указание на адрес файла ил папки без метаданных;
- твёрдые или жёсткие (-P) – содержат сведения о физическом адресе на диске, где хранится файл.
Удалить ссылку в Linux можно при помощи атрибута –f.
-
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 |
-
chown
(Change Owner). Команда для смены владельца файла и его группы. Для смены владельца используем синтаксис:
chown новый_владелец имя_файла
Для смены группы файла:
chown новая_группа имя_файла
Если надо поменять оба параметра:
chown новый_владелец :новая_группа имя_файла
Команду можно применить только с правами суперпользователя. Чтобы изменить владельца/группу рекурсивно добавляем:
chown –R
-
chgrp
(Change Group). Меняет группу файла. В отличие от chown, эта команда позволяет менять группы, только тем, кто в ней состоит.
-
dd
(Dataset Definition). Позволяет скопировать данные на двоичном уровне из одного места в другое. Данные могут быть любого размера — от образа CD/ DVD до целого жёсткого диска.
Утилита перемещает блоки данных из указанного источника — if имя_файла в пункт назначения — of имя_файла, который может быть устройством или файлом. Для копирования нескольких файлов применяется утилита cp.
С данной командой надо обращаться крайне осторожно, о чём свидетельствует её альтернативное название «Data Destroyer». Ошибка в вводе данных может легко стать причиной потери данных на диске. -
df
(Disk Free). Даёт полную информацию о свободном пространстве на диске. Анализ включает перечисление файловых систем смонтированных разделов, обзор занятого и свободного места на диске. Для более удобного вывода информации, лучше применять сочетание:
df –h
-
du
(Disk Usage). Позволяет определить размер файла или каталога. Применяется в вместе с дополнительными операторами:
- df –h — представляет данные о размере в удобном для восприятия формате;
- df –s — даёт необходимый минимум данных;
- df –d — задаёт глубину рекурсии для каталогов.
-
mount / umount
Команды Linux для монтажа и отключения любых файловых систем — от CD-диска и USB-флешки до ядер ОС. Тип файловой системы обычно определяется командой самостоятельно, путём чтения суперблока. Опция используется только с правами суперпользователя.
Навигация
-
find
Осуществляет поиск в файловой системе, файлах и папках. Для результатов поиска можно выполнять дополнительные команды.
-
pwd
Отображает на экране текущий каталог.
-
clear
Команда полной очистки окна терминала удаляет все ранее выведенные сообщения.
-
history
Показывает ранее введённые пользователем команды. Перемещаться по списку введённых команд можно, нажимая на клавиатуре «Вверх» и «Вниз».
-
locate
Быстрый поиск файлов по базе данных updatedb для шаблонов имён файлов. Эта БД работает со снимком файловой системы, что многократно ускоряет процесс поиска. Но тут есть и существенный минус. Точность поиска зависит от того, насколько актуальны данные о файловой системе в текущей версии снимка.
-
zcat / zless / zmore
Утилиты для просмотра сжатых файлов. С помощью zcat можно найти увидеть список сжатых файлов, zless выводит их списком постранично с возможностью листать вперёд и назад, а zmore — только вперёд.
-
;
Точка с запятой — ещё один оператор для последовательного запуска нескольких команд в одной строке. Если нужно, чтобы команды выполнялись параллельно, используйте оператор так:
(команда_№1 &); (команда_№2 &); (команда_№3 &)
Управление сетью
-
ip
(Internet Protocol). Утилита выводит полный список параметров для настройки работы с сетью. Среди них:
- link — сетевое устройство;
- address — IP-адрес сетевого устройства;
- monitor — мониторинг устройства;
- route — маршрутизация;
- tunnel — туннелированные.
Каждый из выводимых объектов можно изменять при помощи дополнительных команд: add, change, del, save и т.д.
-
ping
Команда проверяет наличие и качество интернет-подключения.
-
nethogs
Утилита мониторинга сетевой активности устройств в системе. Чтобы задать сетевой интерфейс, введите:
nethogs -i
-
traceroute
Утилита отслеживания интернет-подключения, отслеживая маршруты следования пакетов данных в сетях TCP/IP. Более совершенный инструмент для отслеживания проблем с подключением к Сети, чем упомянутая выше команда ping. Запускается только с правами суперпользователя.
Работа с процессами
-
kill / xkill / pkill / killall
Вариации команды для завершения операций. Основное различие между ними — способ идентификации.
- kill — прекращает операцию, находя ее через идентификатор процесса (PID).
- xkill — графический способ. После ввода команды курсор превращается в крестик, который при клике на окно открытого процесса, останавливает его;
- pkill — завершает конкретный процесс, находя его по имени.
- killall — прекращает все процессы с указанным именем.
-
Ctrl +C
Данное сочетание клавиш — еще один быстрый способ завершить выполнение любого процесса в терминале Linux.
-
Ctrl +Z
Комбинация ставит любой запущенный в консоли процесс на паузу. Снова запустить его можно, введя %.
-
ps / pgrep
(Process Status / Process-ID Global Regular Expressions Print). Команды находят по заданным параметрам и выводят информацию об активных процессах. Самый доступный способ найти идентификатор процесса (PID). Модификация pstree показывает весь список («древо») исполняемых процессов.
-
top / htop / atop
(Table of Processes). Три варианта команды, вызывающую консольную программу мониторинга активных процессов в системе. Информация отображается в виде таблицы со списком процессов в реальном времени. Рекомендуется использовать две последних модификации программы – в них больше возможностей и продвинутых функций.
-
crontab
Выполнение Cron (Command Run ON) — задач по расписанию в Linux.
-
time
Команда-секундомер, позволяющая подсчитать время исполнения процесса. Результатом измерения станет блок данных с тремя важнейшими параметрами:
- real— общее время исполнения;
- user — сколько времени пользователь занял у CPU;
- sys — сколько времени CPU было потрачено системой.
Сделать время исполнения процесса ОС Linux минимальным поможет VPS сервер от Eternalhost! Универсальное решение по доступной цене!
Работа с архивами
-
gzip
Создаёт архивы со сжатыми файлами. Архивный файл будет иметь расширение .gz.
-
gunzip
Команда-распаковщик для zip-архивов. Извлекает сжатые файлы и удаляет архивный файл .gz.
-
tar
Сохраняет файлы и каталоги в архив с расширением .tar. Удобная утилита для создания резервных копий или надёжной архивации данных.
Управление пользователями
-
useradd / userdel / usermod
Команды управления учётными записями пользователей. Позволяют добавлять, удалять и редактировать пользовательские профили. Пример:
useradd имя_пользователя.
-
passwd
Позволяет менять пароли учётных записей. Обычный пользователь может поменять только пароль, связанный с его именем: passwd имя_пользователя.В режиме суперпользователя можно «вслепую» сбросить все пользовательские пароли в системе.
Работа с текстом
-
Ctrl + A / Ctrl + E
Клавиши быстрого перехода в начало (А) и конец (E) строки.
-
Ctrl + Shift + C / Ctrl + Shift + V
Это сочетание клавиш в Linux позволит быстро скопировать (C) и вставить (V) текст в терминале.
-
more / less
Две команды для облегчения просмотра больших текстов, не умещающихся на одном экране эмулятора терминала. Т.к. функционально команды одинаковы, но less — новее и поддерживает больше опций, рекомендуется использовать именно её.
-
head / tail
Пара дополняющих друг друга команд для просмотра на одном экране начала и конца текста. Команда head выдаёт 10 (по умолчанию) первых строк текста, tail — последних. Число строк в обоих случаях меняется с помощью аргумента -n. Оператор -f позволяет отслеживать на экране изменения в файле. Чтобы лог (журнал) файла отображался в режиме реального времени, ввести команду:
tail –nf,
Для отслеживания логов нескольких файлов применяется модификация команды — multitail.
-
grep
(Global Regular Expression and Print). Ищет текст по заданному шаблону. Это очень полезно, когда надо проанализировать работу команды, которая сопровождается большим объёмом текстовой информации. Шаблон может заполняться строкой или регулярным выражением. Пример:
alias старое_название новое_название
-
sort
Сортировка текстовой информации по заданным показателям. Дополнительные переменные позволяют:
- -n — сортировать строки текста по числовому значению;
- du — по размеру;
- -r — применять обратную сортировку;
- -u — удалять дубликаты при сортировке.
-
wc
(Word Count). Программа для подсчета заданных параметров в тексте. Считает такие показатели, как символы, слова, строки и байты.
-
diff
(Difference). Производит построчное сравнение двух текстовых файлов, выводя различия между ними. Алгоритм работы:
diff файл_№1 файл_№2
Различия между двумя версиями файлов отмечают такие символы, как:
- c — изменённые строки;
- d — удалённые строки;
- а —новые строки.
Окружение пользователя
-
su / sudo
(Switch User / Substitute User & Do). Две команды для запуска процессов от имени другого пользователя без завершения текущего сеанса. При использовании su по умолчанию происходит переход на пользователя root. Команда sudo способна не только активировать режим суперпользователя (о чём упоминалось выше), но и выполнить команду от имени другого пользователя без реального переключения на него. Поэтому второй вариант считается более безопасным.
-
date
Команда Linux, сообщающая информацию о времени. Отдельными переменными можно задать удобный формат вывода и число отображаемых параметров, вплоть до миллисекунд.
-
alias
Команда для создания синонимов названий незаменяемых команд для их сокращения. Она изменяет длинное название на удобное пользователю короткое или аббревиатуру. Пример:
alias старое_название новое_название
Этот же приём отлично подойдёт для устранения опечаток в командах. Отменить действие утилиты переименования поможет команда unalias.
-
uname
Утилита, выводящая информацию об операционной системе. Без дополнительных параметров она выдаст только название ядра. Чтобы получить всю возможную системную информацию, введите:
uname -a
-
uptime
Показывает аптайм – время непрерывной работы системы.
-
sleep
Задаёт таймер выключения системы.
-
yes
Утилита автозаполнения поля согласия в команде или скрипте. Введите: yes название_команды и вам не придётся делать подтверждение вручную, когда этого потребует сценарий взаимодействия программы с пользователем.
Пакетные менеджеры
Пакетные менеджеры (ПМ) в Linux отвечают за установку, обновление и удаление приложений. Принцип их работы – загрузка программных пакетов из собственных сетевых репозитариев. Данные утилиты работают только с правами суперпользователя. Для различных дистрибутивов Linux существуют свои версии ПМ.
-
apt
ПМ для Debian, Ubuntu и Mint. Чтобы установить приложение, введите:
sudo apt install имя_пакета
Чтобы удалить приложение:
sudo apt remove имя_пакета
-
dnf / yum
Два самых распространённых ПМ для операционных систем Red Hat, Fedora и CentOS. Чтобы установить приложение, введите:
sudo dnf install имя_пакета
Чтобы удалить:
sudo dnf remove имя_пакета
-
pacman
Пакетный менеджер дистрибутивов Arch и Manjaro. Чтобы установить приложение, введите:
sudo pacman -S имя_пакета
Чтобы удалить приложение:
sudo pacman -R имя_пакета
Заключение
Полный список команд для дистрибутивов Linux — материал скорее для объемной книги, чем для одной статьи. Однако, в данном обзоре мы постарались собрать самые важные из них. Эти команды будут гарантированно полезны как в повседневных задачах, так и для раскрытия продвинутых возможностей этой операционной системы.
У каждого пользователя Linux есть свой список must have команд. Наверняка и вам есть чем дополнить данный обзор? Делитесь своими любимыми командами Linux в комментариях!
Хотите, чтобы операционка работала как швейцарские часы? Надёжная и мощная платформа для развёртывания любых дистрибутивов Linux — VDS от Eternalhost!
Оцените материал:
[Всего голосов: 8 Средний: 4.5/5]