Академический Документы
Профессиональный Документы
Культура Документы
Урок 2
Работа в графическом
и консольном режиме
Консольный и графический режим в Linux. Консольные
команды. Создание и редактирование файлов.
Введение
Работа в консоли
Сигналы процессам
Компрессоры
gzip
gunzip
zcat
Ключевые понятия
Репозитории в UBUNTU
Подключение репозитория
Устройство репозитория
Защита репозиториев
Основные элементы Linux: ядро, графическая оболочка, командный интерпретатор, UNIX way
UNIX way
Ядро
Демоны
Практическое задание
Дополнительные материалы
Используемая литература
© geekbrains.ru 1
© geekbrains.ru 2
Введение
Linux может быть использован как в десктопной версии, так и в серверной. В десктопной версии
используется X11-Server и вы можете работать в окружении рабочего стола, схожего с тем, что вы
используете в Windows. Таким образом, можно установить Linux на старый компьютер и использовать
его. Часто Linux нужен, чтобы сэкономить на лицензии и оборудовать класс информатики или офис. В
Linux много графических программ, при этом не все программы, существующие в Windows, могут
быть доступны для Linux. В этом случае используют Wine, либо Virtualbox или VMWare с образом
Windows для запуска приложений. Для организации офисных рабочих мест могут использоваться
сервер приложений и доступ к Windows-приложениям с использованием RDP.
При этом основное достоинство Linux — применение в серверном администрировании. В этом случае
используется консоль. Если у вас имеется непосредственно доступ к компьютеру, переключение
между терминалами (которые называются TTY1 — TTY6) происходит по нажатию клавиш Alt-F1… Alt-
F6. Нажатие Alt-F7 переводит в режим X-11. Если X11 не запущен, он запускается командой startx.
Если вы работаете в графическом режиме, можете запустить эмулятор терминала с помощью
команды Ctrl-Alt-T, либо перейти в настоящий терминал с помощью сочетаний Ctrl-Alt-F1… Ctrl-Alt-F6.
Также возможна удаленная работа. При SSH у вас на каждое подключение будет только один
виртуальный терминал. При работе с помощью VNC вы имеете доступ ко всем TTY1-TTY6 и
графическому режиму. При SSH, впрочем, вы также можете запускать графические приложения, если
у вас установлен X11-сервер (в Linux или MAC OS по умолчанию, либо дополнительно, например
XMing для WIndows).
Работа в консоли
Переключение между виртуальными терминалами
Помимо графического пользовательского интерфейса, в любой Linux-системе существует
возможность работы с текстовым терминалом. Терминалы использовались начиная с самых ранних
версий UNIX и представляли собой простейшие символьные устройства ввода-вывода. В самых
первых реализациях это устройство выглядело как печатная машинка, совмещенная с принтером.
Терминал позволял вводить текстовые команды и печатать ответ системы в текстовым виде. Секрет
популярности такого интерфейса был в простоте физической реализации устройства (в простейшем
© geekbrains.ru 3
варианте достаточно всего 3-х проводов последовательного интерфейса) и программной поддержке,
которая не требовала драйверов клавиатуры и видеокарты. Постепенно устройства становились
более продвинутыми, позволяли использовать функциональные клавиши и управляющие
последовательности для выделения текста цветом, однако их суть оставалась неизменной: все тот
же последовательный текстовый ввод-вывод. Аппаратные терминалы до сих пор используются в
RISC UNIX-системах производства IBM, HP и Oracle (ex Sun). В Linux пользователь сталкивается с
виртуальной разновидностью терминалов.
Вместо hostname будет имя системы, которое указали при установке, tty2 — номер виртуального
терминала.
После успешной регистрации в системе выдается приглашение вида user@host~$, где user —
регистрационное имя, host — имя системы, заданное при установке, а символ ~ — домашний каталог
пользователя. Такая подсказка (или приглашение) означает, что запущен интерпретатор команд и
далее можно вводить имена системных утилит и запускать другие команды.
© geekbrains.ru 4
не совмещенные с цифровой клавиатурой. Даже если Num Lock выключен, PgUp/9 и PgDn/3 не
заработают).
Это бывает необходимо, например, когда текст ошибки появился на консоли и тут же исчез за
границами экрана.
У каждого процесса в Unix есть атрибут, который называется «текущий каталог». Есть такой атрибут и
у командного интерпретатора. По умолчанию, если не указывать путь к файлам, все команды будут
работать с файлами из текущего каталога. Поэтому для начала определим свое местонахождение в
файловой системе, или текущий каталог командного интерпретатора. Его показывает команда pwd,
которую мы вводим после приглашения командной строки user@user-virtual-machine:~$. Команда
передается на исполнение только после ввода <Enter>, до этого момента ее можно редактировать,
перемещать курсор стрелками, а также использовать <Backspace> для корректировки ввода. Затем
команда выводит результат и завершает работу, после чего на новой строке вновь появляется
приглашение.
user@user-virtual-machine:~$ pwd
/home/user
© geekbrains.ru 5
user@user-virtual-machine:~$
user@user-virtual-machine:~$ cd ..
user@user-virtual-machine:/home$
Параметр команды cd — каталог, куда мы желаем попасть, новый текущий каталог. Можно было
использовать полный путь, набрав cd /home, но мы использовали еще один вариант относительного
пути, в котором двоеточие означает вышестоящий в иерархии каталог, который также называют
родительским. Как видим, текущий каталог приглашения интерпретатора также изменился. Теперь
вернемся обратно в домашний каталог, используя относительный путь:
user@user-virtual-machine:~$ cd user
user@user-virtual-machine:~$
Того же результата мы могли добиться командами cd /home/user, cd ~ или просто cd без параметров.
user@user-virtual-machine:~$ ls
По умолчанию ls показывает текущий каталог, однако можно задать любой интересующий нас каталог
как параметр команды. В примере часть файлов показывается синим цветом: на самом деле это не
файлы, а каталоги. Выделение каталогов синим — особенности настройки команды в данной
системе, в других Linux/UNIX или в другом терминале все может быть по-другому, поэтому, чтобы
наверняка знать, где файл, а где каталог, используйте ls c опцией -l:
© geekbrains.ru 6
Команда выводит много информации о файлах текущего каталога. Запомните, что если первый
символ строки листинга — прочерк «-», это обычный файл. Каталоги отмечены буквой «d» в первой
позиции. В этом списке не все файлы. По традиции, файлы, имя которых начинается с точки по
умолчанию команда ls не показывает. Обычно это служебные файлы, о них поговорим позже. Чтобы
увидеть все файлы каталога, нужна опция -a:
Обратите внимание на файлы c именами «.» и «..». С последним мы уже сталкивались, это ссылка на
родительский каталог. А «.» обозначает специальное имя для текущего каталога. Это путевое имя
можно использовать в командах.
© geekbrains.ru 7
Например, для запуска программы c именем myprog, если она находится в текущем каталоге, можно
набрать ./myprog. Кроме того, скрытые файлы в Linux (и других UNIX-подобных операционных
системах начинаются с точки) имеют имена, первым символом которых является точка. На картинке
выше мы видим такие примеры: .bashrc и .profile. Команда ls их не отображает по умолчанию, но
команда ls -la отобразит в том числе и скрытые файлы. Команда ls -lA отобразит файлы, в том числе
и скрытые, но не покажет «.» и «..»
mkdir: невозможно создать каталог «2000/01»: Нет такого файла или каталога
user@user-virtual-machine:~/My best photos$
Ошибка появилась потому, что для подкаталога 01 отсутствует родительский каталог 2000, поэтому
надо заранее создавать каталог 2000 или использовать опцию mkdir -p для автоматического создания
родительского каталога.
Но есть более быстрый вариант для создания каталогов для годов с 2000 по 2018:
© geekbrains.ru 8
Командный интерпретатор автоматически раскроет фигурные скобки и подставит вместо последнего
параметра все значения: 2000 2001 2002 … 2018.
Фигурные скобки можно использовать с любыми командами, где требуются несколько параметров.
Кроме двоеточия, которое позволяет перечислять числовые значения, можно использовать вариант с
явным перечислением через запятую, например так:
mkdir 200{1,2,3,4,5}
mkdir -p 20{00..18}/{01..12}
> do
> do
> done
> done
Каждая строка завершается вводом. Символ > в начале строки добавляется командным
интерпретатором в знак того что конструкция требует продолжения. Мы использовали 2 вложенных
цикла for такого типа:
for i in {2000...2018} do
… $i ...
done
На каждой итерации цикла параметр i принимает одно из значений с 2000 по 2018. Чтобы
использовать значение параметра в теле цикла, к нему можно обратиться как $i. Для перемещения
группы файлов за одну операцию используется команда mv в форме:
Все параметры команды, кроме последнего — имена перемещаемых файлов. Последний параметр —
каталог назначения. Имена файлов формируются с использованием параметров циклов и
специального символа «*»: вместо IMG_$i$j* команде mv будет передан список всех файлов текущего
© geekbrains.ru 9
каталога, которые начинаются с IMG_YYYYMM. Каталог назначения формируется на основе
значений параметров цикла на данной итерации $i/$j YYYY/MM.
После того, как мы успешно перенесли все файлы в нужные каталоги и убедились, что все
правильно, можно удалить резервную копию командой rm.
Опция -r говорит, что надо удалить каталог рекурсивно. Опцию -f следует использовать с
осторожностью, она сообщает команде, что удаление будет без запросов подтверждения. При
удалении файлов в командной строке надо помнить, что в этом случае файлы удаляются
окончательно без возможности их восстановления из корзины.
Если у вас нет файлов для подобных экспериментов (их можно получить с флешки, смонтировав ее с
помощью mount или закопировать по sftp с помощью любого sftp-клиента — FileZilla, Total Commander
или FAR, если вы устанавливали openssh), можно сделать заглушки с именами файлов.
Например так:
touch IMG20{00..18}{00..12}{00..05}.jpg
Для проверки переименования можно в каждый файл записать его имя (но стоит понимать, что это не
картинка, а просто текстовый файл, названный как картинка и внутри содержащий только
оригинальное имя. Сделать это можно так:
> do
> done
© geekbrains.ru 10
Так, чтобы создать новый файл newfile.txt достаточно набрать:
mcedit newfile.txt
Подсказки в нижней части экрана указывают, какие действия можно сделать. Esc — для выхода, если
вы вносили изменения, редактор спросит, сохранять или нет.
Вы можете вводить строки, нажимая Enter — будет осуществляться ввод следующей строки.
Чтобы выйти, необходимо послать сигнал конца файла — Ctrl-D (^D). Такой способ может быть
удобен при работе с PuTTY, так как вы можете скопировать конфигурационный файл из буфера
обмена Windows в создаваемый файл (в пример file2.txt).
Также есть редактор vi, который представляет сложности для начинающих. Одна из самых больших
проблем — как из него выйти. Для этого нажмите : и наберите q! и Enter. А теперь поподробнее.
$ touch newfile
Основная задача touch — обновить время последнего изменения файла, которое показывает ls -l.
Создание пустого файла, если он не существует — приятный бонус команды touch.
Но файл можно создать и с помощью редактора. Вызывая редактор с именем файла, вы правите
существующий файл или создаете ещё не существующий.
● mcedit;
● vi;
● nano.
mcedit — самый простой редактор для тех, кто привык к Norton Commander.
© geekbrains.ru 11
vi — непривычный для многих редактор. Обладает двумя режимами работы, команд и
редактирования. Чтобы выйти, нужно нажать : и затем q и !
Это классический редактор, который есть в любой UNIX-подобной системе. У vi есть сторонники, и это
действительно мощный редактор, но, как уже было сказано, он не является интуитивно понятным и
требует минимальной подготовки. Многие начинающие пользователи сталкивались с проблемой, как
из него выйти (:q!).
Главная особенность vi, которая вызывает недоумение у новичков — редактор действует в двух
режимах — в режиме просмотра (режим команд) и в режиме редактирования текста. В режиме
просмотра нельзя редактировать, в режиме редактирования нельзя перемещать курсор по файлу. Как
только вы загружаете редактор, он сразу оказывается в режиме просмотра: вы можете перемещать
курсор, искать текст, выполнять перемещения по файлу. Но изменять текст файла вы не можете. Для
этого надо переместить курсор в нужную позицию и использовать одну из команд, переводящих vi в
режим редактирования (например i для ввода с позиции курсора). Когда потребуется снова
переместить курсор, надо опять сменить режим vi с редактирования на просмотр (клавишей ESC) и
использовать клавиши перемещения: стрелки или (стрелки в терминале могут не работать) их
буквенные аналоги — j, k,h,l (вниз, вверх, влево, вправо). Потом опять редактирование, вновь
перемещение и т. д. Когда вы закончили работу, надо сохранить файл. Для этого в режиме просмотра
надо набрать: :w <filename> <ENTER> filename и имя файла, где будут сохранены изменения. Если у
файла уже есть имя, можно не указывать filename. Для выхода из vi набрать в режиме просмотра: :q.
Если надо выйти без сохранения изменений - :q!
В nano нет разделения на редактирование и просмотр, что более привычно для пользователей
Windows. Кроме того, внизу экрана есть 2 справочные строки с самыми важными командами
редактора. У nano все команды начинаются со значка ^, что означает клавишу Control.
Например:
© geekbrains.ru 12
существующих файлов или каталогов целиком, достаточно набрать их начало и нажать клавишу
табуляции.
user@user-virtual-machine:~$ cd ~/My<TAB>
Дальше bash выполнит поиск среди файлов с таким началом и в случае однозначного совпадения
имя будет сразу дополнено:
И так далее.
Можно выполнять поиск по истории команд с помощью комбинации Ctrl-R (поиск назад):
user@user-virtual-machine:~/My best
photos$ (reverse-i-search)`':
© geekbrains.ru 13
Введите строку поиска и если в истории команд была команда с такой подстрокой, она будет
найдена и подставлена.
Можно нажать Enter для немедленного выполнения команды или <ESC>, чтобы найденную команду
можно было отредактировать.
Кроме того, существуют команды для быстрого перемещения по командной строке и быстрого
удаления текста:
● Ctrl-S остановит вывод на терминал. Иногда комбинацию используют при выводе больших
объемов текста на терминал для временной остановки вывода. Бывает, что эту комбинацию
нажимают случайно и тогда терминал как будто зависает. Не спешите паниковать, просто
выполните следующую комбинацию.
● Ctrl-Q продолжает вывод после Ctrl-S. Если кажется, что терминал завис, в первую очередь
попробуйте эту комбинацию.
● Ctrl-C завершает работу текущей программы. Используют, когда надо быстро завершить
работу текущей программы или скрипта. Программа не всегда может завершиться после Ctrl-
C: иногда реакцию на эту комбинацию в программе или скрипте намеренно блокируют.
● Ctrl-R — для поиска по истории команд.
Если на первых порах работать с командной строкой в терминале тяжело, можно установить
консольный файловый менеджер — mc (Midnight Commander). Это файловый менеджер для
текстовых терминалов с текстовыми окнами, меню и поддержкой функциональных клавиш. Кроме
того, mc содержит простой и удобный редактор для текстовых файлов — mcedit. Работа в mc не
требует дополнительного обучения. Единственная тонкость может быть связана с поддержкой
функциональных клавиш в разных моделях терминалов. Если функциональные клавиши не
работают, используйте комбинации вида <ESC>1 вместо F1, <ESC>2 вместо F2 и так далее.
В Unix существует встроенная система документации, обратившись к которой, всегда можно найти
название нужной утилиты, описание параметра команды или пример ее использования.
Например, если требуется подробное описание команды cp, используем команду man (от
MANual).
© geekbrains.ru 14
user@user-virtual-machine:~$ man cp
Справка по командам обычно занимает несколько страниц, поэтому man использует для просмотра
команду less. Для перехода к следующей странице используйте клавишу <PgDn>, обратно — <PgUp>.
Если эти клавиши не срабатывают, используйте для перехода пробел и клавишу u соответственно.
Для выхода из man служит клавиша q. Есть еще пара полезных клавиш: g — переход в начало, G —
в конец документа. Для поиска вперед используйте /чтоискать, для обратного поиска — ?что искать,
повторить поиск в том же направлении — n.
В разделе DESCRIPTION описываются опции (иногда их называют ключами) программы. Бывает, что
в описании через запятую перечислены 2 опции, например -v, --verbose. В таких случаях мы имеем
дело с разными стилями одной опции. -v — классический вариант, описанный в стандарте POSIX. --
verbose — опция в стиле GNU, новомодный вариант. Можно использовать то, что больше нравится.
Еще один полезный раздел обычно находится в конце справочной странице, он называется SEE
ALSO. Как правило, здесь приводят ссылки на другие утилиты с похожим функционалом.
Кроме man есть еще несколько полезных справочных утилит. Если мы не знаем точного имени
утилиты, можно попробовать найти ее с помощью apropos, которая выполнит поиск по ключевым
словам в описании утилит. Например найдем как называется утилита, которая меняет пароль
пользователя:
Попробуем уточнить поиск, выбрав все строчки, где встречается слово change. Используем утилиту
grep, которая ищет по заданной строке в выводе от предыдущей программы. Делается это так:
© geekbrains.ru 15
lppasswd (1) - add, change, or delete digest passwords.
Вот она, passwd — то, что нужно. Обратите внимание на число в скобках после имени команды. Это
глава или раздел справочного руководства man, в которых может встречаться описание утилиты.
Разделов много, приведем самые полезные:
● 1 — команды пользователя,
● 2 — системные вызовы ядра (используется программистами),
● 5 — форматы файлов,
● 8 — команды администрирования.
Эти номера можно использовать в командах man и apropos. Например, passwd — не только команда,
но и имя системного файла. Если нам интересен формат этого файла, надо набрать:
man 5 passwd
Для apropos полезна опция -s. Например, если мы ищем программы для работы с паролями,
набираем:
Описание passwd — по-русски. Иногда это может создать проблемы для поиска, поэтому есть еще
полезная опция, -L, она задает язык, на котором будет справка. Чтобы все искать и читать по-
английски, задаем apropos -s 1 -L C passwd.
Еще одна полезная справочная программа — whatis. От apropos отличается тем, что ищет по именам
команд:
© geekbrains.ru 16
user@user-virtual-machine:~$ whatis passwd
passwd (5) - файл паролей
passwd (1) - изменяет пароль
пользователя
passwd (1ssl) - compute password hashes
Иногда в разделе справочной страницы SEE ALSO встречается ссылка на более полное описание
утилиты в системе info и проводится команда для получения полной справки. Пример для cp:
Info — гипертекстовая система документации вроде текстового браузера, а команда в man содержит
полную ссылку на информацию о вызове команды в info. Если запустить info без параметров, мы
выйдем на главную страницу документации. Перемещение по страницам и поиск как в man. Строчки,
которые начинаются со звездочек, — гиперссылки, по которым можно пойти дальше. Чтобы вернуться
из ссылки на уровень выше, используйте клавишу u как Back в браузере. Выход — по клавише q.
Так как Linux — система многозадачная, существует три возможности реализации многозадачности,
одна — для ядра, и два — для пользовательского пространства.
Для пользовательского пространства это процесс и потоки. В Linux потоки также являются особого
рода процессами (так они тоже имеют собственные PID), но при этом они делят одну и ту же память
процесса, которому они принадлежат (первый созданный процесс, фактически первый поток
процесса). При создании копии процесса (fork) происходит копирование его ресурсов, так что это
более безопасно, но менее эффективно.
Каждый процесс, кроме упомянутых UID и GID, также имеет идентификаторы PID (process ID) и PPID
(parent process ID).
$ ps aux
$ ps -T -p 4242
© geekbrains.ru 17
Чтобы посмотреть историю запущенных процессов, можно воспользоваться командой:
$ pstree
Консольная утилита top служит для динамического просмотра списка процессов. Утилита каждые
несколько секунд выдает топ-20 процессов, по умолчанию отсортированный по потреблению
процессорного времени. Можно сортировать список процессов по объёму занимаемой памяти,
утилизации процессора, пользователям или номерам процессов.
● h — вызов справки.
k — ввести PID для команды kill.
● r — указать PID для изменения параметра nice, влияющий на приоритет процесса ( -20 макс.
приоритет, 19 мин. приоритет, 0 — по умолчанию). Обычный пользователь может только
уменьшать приоритет своих процессов, назначая им nice от 0 до 19.
● q — завершить top.
© geekbrains.ru 18
Существует более продвинутая консольная утилита для мониторинга и управления процессами —
htop. Она не установлена по умолчанию, но доступна из репозитария Ubuntu. Перечислим её
возможности в сравнении с top:
Для мониторинга ресурсов и управления процессами в графической среде Unity служит программа
«Системный монитор». Для запуска найдем её в Главном меню Dash по строке System Monitor.
Управление процессами интуитивно понятно. Меню «Вид» позволяет выбрать процессы
пользователя или посмотреть все запущенные процессы.
© geekbrains.ru 19
Порядок запуска процесса
Рассмотрим порядок запуска процесса. Например, работая в оболочке, мы запустили команду ls.
© geekbrains.ru 20
На первом этапе оболочка выполняет системный вызов fork(), в результате которого происходит ее
клонирование: создается полная копия процесса оболочки, включая копию адресного пространства и
контекста. Между клонами есть отличие: в процессе-родителе fork() возвращает PID потомка, а в
потомке код возврата — 0. Каждый из клонов начинает выполнение с момента вызова fork, но уже
самостоятельно и с учетом вышесказанного. Итак, потомок, выяснив, что он потомок (так как код
возврата 0) с помощью системного вызова exec загружает в свое адресное пространство
исполняемый код запускаемой программы, в нашем случае ls, и далее ее выполняет.
Дочерний процесс завершается функцией exit(). В случае успешного завершения, exit возвращает 0,
если произошла ошибка — код ошибки, отличный от нуля. После этого ядро освобождает ресурсы,
которые занимал потомок, и передает код его завершения родителю в качестве кода возврата для
wait().
Сигналы процессам
Допустим, программа зависла. Нажимаем Alt-F2 (или Ctrl-Alt-F2, если работали в X-сервер), смотрим
id процесса.
$ ps ax | grep hello
$ kill -9 4242
$ someprogram&
■ либо
$ someprogram
© geekbrains.ru 21
^Z
$ fg
$ nohup someprogram&
При запуске каждая программа автоматически открывает 3 специальных файла, которые ещё
называют потоками ввода-вывода. Их различают по номерам файловых дескрипторов (указателей на
файл):
© geekbrains.ru 22
Поток стандартного вывода можно перенаправить в файл (в том числе специальный, такой как
принтер или файл «в никуда» /dev/null). Стандартный ввод программе можно назначить не с
клавиатуры, а из файла. Опишем все варианты перенаправления для каждого потока:
● cmd > file перенаправить в файл с перезаписью (при каждой записи предыдущее содержимое
файла будет утрачено),
● cmd >>file в файл с добавлением (новые записи будут добавлены в конец файла),
● cmd1 | cmd2 — конвейер. Запускаются cmd1 и cmd2, при этом stdout от cmd1
перенаправляется на stdin программы cmd2,
● cmd | tee file — перенаправить копию потока в файл. После tee c потоком stdout можно
выполнять дополнительные операции,
● cmd | sudo tee file — вариант, если в file имеет возможность записать только root.
Пример:
Перенаправить поток ошибок в /dev/null (спрятать поток), поток стандартного вывода на вход
программе tee, которая дублирует его в файлы f1, f2, f3.
Направить программе cmd ввод из файла f1. затем стандартный вывод cmd направить на вход cmd2.
Объединить поток ошибок от cmd2 со стандартным выводом от cmd2 и все перенаправить в f2.
Создать файл.
© geekbrains.ru 23
● создавать архивы как объединения заданных файлов в виде одного обычного или
последовательности данных на внешнем носителе (диск, лента и т. д.),
● добавлять в архив или извлекать из него отдельные файлы или группы файлов.
В Windows архиваторы делают то же что в UNIX, плюс дополнительно занимаются сжатием архивов.
В UNIX сжатием занимаются отдельные утилиты, называемые компрессорами. Такое разделение
функций является характерным для философии unixway: каждой задаче — свой продвинутый
инструмент, плюс комбинация разных инструментов для решения новых задач. Подход оказался
оправданным, он позволяет использовать новые, более мощные компрессоры в сочетании со
старыми архиваторами. Кроме того, подход позволяет с помощью конвейеров добавлять в рабочую
цепочку архиватор-компрессор другие программы, например, для шифрования данных, что очень
актуально для хранения архивов на популярных облачных сервисах. Далее рассмотрим конкретные
примеры программ для архивации и сжатия файлов.
В UNIX с давних времен существуют две стандартные программы-архиватора: tar и cpio. В Linux
также есть GNU-версии этих утилит. Они имеют свои уникальные опции с длинными именами, но для
совместимости поддерживают стандартный набор ключей. При рассмотрении мы будем стараться
придерживаться стандарта, чтобы вы могли использовать утилиты в любой UNIX-системе.
● с — создать архив.
● z — сжимать файл архива с помощью gzip (см. ниже). Эта опция есть только в GNU-версии.
● j — сжимать файл архива с помощью bzip2 (см. ниже). Эта опция есть только в GNU-версии.
● v — (verbose) выдает в терминал имя добавляемого файла. Когда файлов много, обычно
эту опцию не указывают и tar работает молча.
● f — после этой опции указывают имя архивного файла. Часто используют специальное имя
«-», которое означает что поток данных архива надо выдать в стандартный выходной поток.
В этом режиме обычно используют конвейерную обработку, когда данные архиватора
принимаются компрессором для последующего сжатия. Если забыть указать файл после -f,
tar будет пытаться писать на ленточное устройство по умолчанию.
● file_or_dirname — список архивируемых файлов или каталогов. Каталоги архивируются
рекурсивно вместе со всем содержимым.
Пример:
t — прочитать оглавление архива. Остальные опции как в случае создания архива. Пример:
© geekbrains.ru 24
tar tvf foo.tar
x — извлечь файл(ы). Если последний параметр не указывать, будут извлечены все файлы из архива
в текущий каталог. Имена извлекаемых файлов надо указывать, так как они показаны в листинге
оглавления архива (с тем же относительным путём).
Компрессоры
В UNIX и Linux семейство компрессоров представлено сразу несколькими программами: compress,
gzip, bzip2. Они используют разные алгоритмы сжатия и в разной степени эффективны. Каждый
компрессор включает в себя три утилиты: утилита сжатия (compress, gzip, bzip2), утилита
декомпрессии (uncompress, gunzip, bunzip2, ) и ещё одна утилита декомпрессии, которая по
умолчанию выдаёт результат в стандартный вывод. Утилиты разных компрессоров имеют
унифицированный интерфейс, так что нет необходимости запоминать ключи для каждого
компрессора отдельно.
gzip
gzip — это GNU-версия программы compress, созданная, чтобы избежать патентных ограничений.
Ключи у gzip такие же, как у compress. Дополнительно есть полезная опция, задающая с помощью
числового значения от 1 до 9 степень сжатия. Это позволяет управлять соотношением сжатие/время
в зависимости от потребностей, например можно задать -5 для больших файлов и выиграть на
времени исполнения при достаточной степени сжатия. Суффиксы сжатых файлов, которые
добавляет gzip — .gz. Для декомпрессии есть утилиты gunzip и gzcat, аналогичные uncompress и zcat.
gunzip ищет файлы с суффиксами .gz и .Z, .z, tgz, taz.
Без ключей gzip выполняет сжатие каждого файла из заданного списка и записывает результат в
новый файл, добавляя к имени суффикс .gz. Исходные несжатые файлы удаляются.
gunzip
Декомпрессия с gunzip:
gunzip [файл]...
© geekbrains.ru 25
Выполняет декомпрессию файлов из списка, если надо, добавляя к именам суффикс gz.
Разархивированный файл записывается с именем без .gz. Исходный сжатый файл удаляется.
zcat
zcat [файл]...
Ключевые понятия
© geekbrains.ru 26
Основной способ установки программ. Использование
официальных репозиториев
Самый простой способ установить новую программу в Ubuntu — выбрать пункт меню Программы >
Установить/Удалить. Дальше выбрать необходимую программу в каталоге, поставить галочку и
нажать Применить. Все остальное будет сделано автоматически. Система сама загрузит
необходимые пакеты из Интернета, установит их и добавит новый пункт в меню. Более простой
способ трудно найти.
Если вы хотите иметь больше возможностей влиять на процесс, используйте более продвинутый
инструмент — Synaptic. Выберите Система > Администрирование > Менеджер пакетов Synaptic и
получите более функциональный инструмент для работы с пакетами. В частности, вы можете
устанавливать программы частично, если вам не нужна документация или еще что-то.
Кроме того, можно использовать и консольные инструменты. Например если вы хотите установить
программу для записи дисков Brasero, наберите команду sudo apt-get install brasero и она установится.
У такого метода установки программ есть масса преимуществ: это удобно, вы устанавливаете уже
протестированные программы, которые гарантированно будут работать на вашей системе,
зависимости между пакетами будут решаться автоматически, при появлении в репозитории новых
версий установленных программ вас об этом проинформируют.
Если вам попался пакет rpm (для систем типа Fedora, Mandriva, SUSE и т.д.), его можно
сконвертировать в deb с помощью утилиты alien (устанавливается отдельно). Однако делать это
рекомендуется лишь в исключительных случаях, когда пакетов deb в доступе нет (например
драйверы принтеров Canon на официальном сайте выложены исключительно в rpm).
© geekbrains.ru 27
Установка программ, которые не нуждаются инсталляции
Есть программы, которые распространяются в виде обычного архива tar.gz (часто называются
тарболлы), который достаточно куда-то распаковать. В Windows также есть такие программы, их еще
часто называют словом Portable. Устанавливать такие программы можно куда угодно, но стандартное
место — каталог /opt. Пункты на запуск в меню вам придется добавлять вручную, для этого нужно
щелкнуть правой кнопкой по заголовку меню Программы и выбрать Правка меню.
./configure make
В некоторых случаях последовательность команд для установки может отличаться. Кроме того, после
выполнения скрипта ./configure вы можете получить сообщение о том, что в системе не установлено
нужных библиотек для компиляции программы. В таком случае нужно будет установить их самому и
повторить процесс. Обычно процесс компиляции занимает определенное время и напрямую зависит
от мощности вашего компьютера.
Репозитории в UBUNTU
Репозитории — это специальные сервера-хранилища таких файлов. Их также можно назвать
«Источниками приложений». Пользовательские компьютеры подключаются к репозиториям по сети
или через интернет и при помощи специальных утилит (например Synaptic) позволяют вам увидеть,
какие пакеты установлены, какие доступны для установки. Большинство утилит поддерживают
простой поиск по ключевым словам и способны разбивать группы пакетов по категориям.
В репозиториях Ubuntu содержится достаточно разнообразного ПО, и зачастую вы можете найти там
необходимую программу. Только если вы не нашли нужную программу в репозиториях, стоит
пробовать другие пути установки.
Версии ПО, доступные через репозитории, не всегда свежие, однако они, как правило, лучше
интегрированы в Ubuntu и более стабильны.
© geekbrains.ru 28
● Main — свободное ПО, официально поддерживаемое компанией Canonical.
● Restricted — проприетарное ПО (в основном — драйверы устройств), официально
поддерживаемое компанией Canonical.
● Universe — свободное ПО, официально не поддерживаемое компанией Canonical, но
поддерживаемое сообществом пользователей.
● Multiverse — проприетарное ПО, не поддерживаемое компанией Canonical.
Подключение репозитория
Существует много сторонних репозиториев, подключив которые, вы получите доступ к
дополнительному ПО. Сделать это можно как при помощи графического интерфейса, так и в консоли.
© geekbrains.ru 29
2. Откройте пункт меню Правка→Источники приложений…
© geekbrains.ru 30
средствами. Для устранения ошибки неподписанного репозитория см. пункт про защиту
репозиториев ниже.
Добавьте туда APT-строку. Чем «выше» (ближе к началу файла) стоит строка, тем больший
приоритет получит добавленный репозиторий.
Теперь вы можете устанавливать пакеты из нового репозитория, правда, для комфортной работы
нужно импортировать в систему ключ репозитория, т.к. у вас постоянно будет появляться такое
предупреждение:
Устройство репозитория
Пакет (например *.deb файл) размещается на общедоступном интернет-ресурсе (например,
archive.ubuntu.com). Затем информация о пакете заносится в файл Packages, который, в свою
очередь, для удобства пакуется в Packages.gz
Файлов Packages.gz может быть несколько (например, по одному для каждой архитектуры). Файл
Release содержит описание репозитория в целом и ссылки на различные Packages.gz.
© geekbrains.ru 31
Защита репозиториев
Поскольку репозитории большей частью расположены в интернете, существует вероятность
подмены их злоумышленником на свои, содержащие модифицированные пакеты. Таким образом,
пользователь может установить модифицированный пакет и тем самым поставить безопасность
системы под угрозу. Многие репозитории имеют защиту от подмены. Такая защита реализована
при помощи сверки цифровых подписей репозитория и клиента. В случае, когда репозиторий имеет
цифровую подпись, а пользовательский компьютер содержит открытый ключ для него, такой
репозиторий считается доверенным.
При подключении репозитория, защищенного цифровой подписью, вам нужно скачать (обычно с
ресурса, рассказывающего про этот репозиторий, или с сервера ключей, что является более
предпочтительным в любом случае) открытый ключ и добавить его в систему. Иногда для
скачивания предоставляется доступный для установки пакет, который при установке сам
прописывает ключ репозитория. Если вы скачиваете ключ с сайта репозитория, вы получите
обычный файл с расширением .key, .gpg или другим. Добавить его в систему можно так:
© geekbrains.ru 32
1024R/123ABCD, тогда идентификатором является часть после слэша. Ключи преимущественно
хранятся на специальных серверах, откуда любой может их получить. Ключи для репозиториев
Ubuntu принято хранить на keyserver.ubuntu.com. Для получения и импортирования в систему ключа с
сервера необходимо выполнить команду:
Вместо keyserver.ubuntu.com можно подставить адрес другого сервера ключей, а вместо 12345678
написать идентификатор нужного вам ключа.
Здесь присутствует регулярное выражение, мы научимся писать их на следующем уроке. Ряд часто
встречаемых регулярных выражений и команд с их использованием можно найти в интернете, но
еще лучше уметь их писать.
При этом имеются как системные логи, так и логи для отдельных программ.
Записи в журналах обычно содержат метку времени, имя хоста, на котором выполняется
описываемый процесс, и имя процесса.
Просматривать журналы можно при помощи программы постраничного вывода, например, less,
искать определенные записи (например, сообщения ядра от определенного демона) можно при
помощи команды grep:
Например:
# less /var/log/messages
или
© geekbrains.ru 33
$ tail -25 /var/log/syslog
Если нужно выдавать последние строки файла по мере их появления, используйте ключ -f.
$ tail -f /var/log/syslog
Чтобы прервать работу tail -f, используйте комбинацию Ctrl-C. Есть команда, аналогичная tail, только
для начала файла. Это команда head. Без параметров выдает первые 10 строк указанного файла:
$ head filename
UNIX way
Философия Unix, известная как UNIX way, является подходом, которому следует архитектура UNIX-
подобных систем. Есть несколько разных определений, что такое UNIX way, при этом среди них
можно выделить несколько важных принципов. Среди них мы отметим:
Это означает, что лучше одна программа, решающая только одну задачу, но делающая это хорошо.
Благодаря использованию потоков и возможности работы с устройствами как файлами, вывод и ввод
таких программ можно совмещать, добиваясь гибкости. Мы уже использовали это на примере
комбинации команды apropos и grep.
Принципы UNIX вы будете использовать при работе Linux и наблюдать воочию постоянно.
Ядро
Центральный элемент любой операционной системы — ядро. Ядро загружается в память при старте
системы и его код выполняется процессором на привилегированном (по сравнению с
пользовательскими процессами) уровне. Для пользователя эта часть системы прозрачна — не очень
заметна, зато программисты активно используют функции ядра, называемые системными вызовами
© geekbrains.ru 34
при написании программ, которые работают с файлами и периферийным оборудованием. Ядро
взаимодействует с оборудованием посредством встроенных или динамически подгружаемых
драйверов и позволяет программистам работать с периферией как с обычными файлами. Доступ к
файлам и файловым системам — также функция ядра. Вообще унифицированное понятие файла
(файлом является почти любое устройство: жесткий диск, мышь, звуковая карта) — характерная для
систем семейства UNIX черта, составляющая вместе с остальными ключевыми особенностями так
называемый стиль UNIX way. Поскольку Linux является многозадачной и многопользовательской
системой, ядро также занимается распределением ресурсов между программами и обеспечивает
разграничение доступа к ресурсам. Например, попытка процесса (программы на этапе исполнения )
обратиться за пределы своего адресного пространства немедленно приведет к его аварийному
завершению системой без ущерба для остальных процессов. Переключение между процессами и
диспетчеризация ввода-вывода также важные функции ядра.
Демоны
Кроме системных утилит, есть класс специальных программ, которые называют демонами. Типичный
демон — программа, которая обслуживает сетевой сервис; обычно она уже запущена и находится в
ожидании запросов. Примеры демонов, с которыми мы познакомимся дальше — веб-сервер,
почтовый сервер, сервер доменных имен. Обратите внимание, что здесь слово «сервер»
используется в значении «программа, предоставляющая сервис».
© geekbrains.ru 35
пользователя и непосредственно занимается выводом графики на графическом устройстве клиента,
обслуживая запросы X-клиентов на отрисовку графических примитивов. Это немного необычное
расположение клиента и сервера, когда сервер работает на компьютере пользователя, а клиенты
находятся на удаленной системе. Клиент-серверная архитектура X Window и наличие открытого
стандартного протокола позволяет запускать графические приложения Linux на широком круге
устройств и операционных систем. X-сервер как стандартное приложение существует почти в любой
Unix/Linux системе, также доступны X-серверы для ОС семейства Windows. Linux предоставляет
великое множество графических окружений, хотя почти все они основаны на использовании X
Windows. Их разнообразие проявляется в компонентах графической подсистемы: оконных
менеджерах и графических средах. Кратко остановимся на самых распространенных.
© geekbrains.ru 36
Панель запуска (Launchpad) — набор значков вдоль левой стороны экрана для запуска
наиболее часто используемых приложений. Запуск приложения выполняется по
однократному клику на значок. При запуске значок начинает характерно пульсировать, а
стартовавшее приложение отмечается маленьким светлым треугольником слева от значка
запущенного приложения. Если приложение запущено в нескольких экземплярах, количество
треугольников слева соответствует количеству экземпляров. Окно текущего приложения
помечается светлым треугольником справа от значка приложения. По правой кнопке мыши
на значке появляется контекстное меню приложения и список уже запущенных экземпляров.
Глобальное меню (The Panel) — горизонтальная полоса вдоль верхней части экрана. В левой части
отображается меню текущего запущенного приложения; здесь же находятся кнопки управления
размером окна, если приложение запущено в полноэкранном режиме. Меню приложения появляется
только при нахождении указателя мыши в верхней части экрана. Эта особенность часто ставит в
тупик неподготовленного пользователя, который не может найти меню приложения. В правой части
меню располагаются так называемые индикаторы: индикатор сети, переключатель раскладки,
уровень громкости, уровень батарей и так далее. Самый правый индикатор — доступ к настройкам
рабочего стола и меню выключения системы.
© geekbrains.ru 37
Главное меню (The Dash) — окно, которое появляется по клику на верхний значок в панели запуска
(значок с логотипом Ubuntu). Если после этого ничего не набирать и не щелкать, на экране появятся
значки последних запускавшихся приложений и недавно использовавшихся файлов. Затем с
помощью главного меню можно выполнять поиск установленных приложений и файлов. В нижней
части экрана главного меню расположены значки, представляющие набор «линз». Так называются
области, по которым выполняется поиск. По умолчанию результаты показываются в «домашней»
линзе, которая дает результаты по локально установленным приложениям и файлам в домашнем
каталоге. Также существует линза приложений (в виде буквы A), представляющей не только
установленные приложения, но и те, которые можно установить через Центр Установки Приложений.
Кликнув по значку каждого приложения, можно получить его краткое описание и ссылку на сайт
разработчика. Остальные линзы предоставляют поиск по файлам, музыке и видео, в т.ч. в
Интернете. Дополнительно сузить область поиска можно с помощью фильтров, которые доступны по
ссылке в верхнем правом углу — «Отфильтровать результаты». В качестве фильтров можно указать
категории и источники поиска. Закрывается окно главного поиска клавишей ESC.
© geekbrains.ru 38
Доступ к графическим утилитам администрирования можно получить через самый правый значок
глобального меню, выбрав «Параметры системы».
© geekbrains.ru 39
Выполним поиск приложения через главное меню по строке «term» и запустим найденное
приложение.
Правой кнопкой мыши на значке терминала в панели запуска появится меню, в котором выберем
пункт «Закрепить на панели». Теперь терминал можно запускать непосредственно через панель
запуска.
Для добавления на панель запуска значка «Рабочие места» кликните значок «Оформление» в окне
«Настройки системы». Далее отметьте галочкой «Задействовать рабочие места» в закладке
«Режимы».
На панели запуска появится значок с экраном, разделенным на четыре части. По клику на этом значке
текущий рабочий стол уменьшится до четверти экрана и станут видны остальные четверти,
© geekbrains.ru 40
представляющие собой виртуальные рабочие пространства, в которых можно запускать набор
приложений, не загромождая окнами остальные рабочие места.
Практическое задание
При работе над практическим заданием:
2. Выяснить, для чего предназначена команда cat. Используя данную команду, создайте два
файла с данными, а затем объедините их в один. Просмотрите содержимое созданного
файла. Переименуйте файл, дав ему новое имя.
3. Создать несколько файлов. Создайте директорию, переместите файл туда. Удалите все
созданные в этом и предыдущем задании директории и файлы.
4. В ОС Linux скрытыми файлами считаются те, имена которых начинаются с символа “.”.
Сколько скрытых файлов в вашем домашнем каталоге? (Использовать конвейер. Подсказка:
для подсчета количества строк можно использовать wc).
5. Попробовать вывести с помощью cat содержимое всех файлов в директории /etc. Направить
ошибки в отдельный файл в вашей домашней директории. Сколько файлов, которые не
удалось посмотреть, оказалось в списке?
7. *Отобразить в /dev список устройств, которые в настоящее время используются вашим UID
(для этого используется команда lsof). Организовать конвейер через less, чтобы посмотреть
их должным образом.
8. *Cоздайте директорию для хранения фотографий, в ней должны быть директории по годам,
(например, за последние 5 лет), и в каждой директории года по директории для месяца.
© geekbrains.ru 41
wc подсчитать различные типы разрешений в этом каталоге. Самостоятельно решить задачу,
как сделать так, чтобы в подсчет не добавлялись строка Итого и файлы . и .. (ссылки на
текущую и родительскую директории)
Примечание. Задания с 7 по 9 даны для тех, кому упражнений 1-6 показалось недостаточно.
Дополнительные материалы
1. https://ru.wikipedia.org/wiki/%D0%A4%D0%B8%D0%BB%D0%BE%D1%81%D0%BE
%D1%84%D0%B8%D1%8F_UNIX
2. https://losst.ru/tsikly-bash
Используемая литература
Для подготовки данного методического пособия были использованы следующие ресурсы:
1. https://ru.wikipedia.org/wiki/%D0%A4%D0%B8%D0%BB%D0%BE%D1%81%D0%BE
%D1%84%D0%B8%D1%8F_UNIX
© geekbrains.ru 42