Shell что дальше
Перейти к содержимому

Shell что дальше

  • автор:

Unix shell: абсолютно первые шаги

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

Здесь не будет пересказа манов (документации), и статья никак не отменяет и не заменяет их чтение. Вместо этого я расскажу о главных вещах (командах, приемах и принципах), которые надо осознать с самого начала работы в unix shell-е, чтобы работа происходила эффективно и приятно.

Статья касается полноценных unix-подобных окружений, с полнофункциональным шеллом (предпочтительно zsh или bash)и достаточно широким набором стандартных программ.

Что такое шелл

Shell (шелл, он же «командная строка», он же CLI, он же «консоль», он же «терминал», он же «черное окошко с белыми буковками») — это текстовый интерфейс общения с операционной системой (ну, строго говря, это программа, которая таковой интерфейс обеспечивает, но сейчас это различие несущественно).

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

типичный вид шелла

Типичный вид шелла:

Шелл — это основной способ для взаимодействия со всеми Unix-подобными серверными системами.

Где встречаются системы с командной строкой?

  • MacOS (bash);
  • удаленный доступ на сервер по работе или для личного веб-проекта;
  • домашний файл-сервер с удаленным доступом;
  • Ubuntu, PC-BSD на ноутбуке/десктопе — unix-подобные системы сегодня просты в установке и использовании.

Какие задачи разумно решать шеллом?

  • интерактивная работа в терминале:
    • выполнение компиляции, запуск заданий через make;
    • сравнение текстовых файлов;
    • быстрый ad-hoc анализ данных (количество уникальных ip в логе, распределение записей по часам/минутам и т.п.);
    • разовые массовые действия (прибить много процессов; если работаете с системой контроля версий — ревертнуть или зарезолвить кучу файлов);
    • диагностика происходящего в системе (семафоры, локи, процессы, дескрипторы, место на диске и т.п.);
    • установочные скрипты, для выполнения которых нельзя рассчитывать на наличие других интерпретаторов — это не для новичков;
    • функции для кастомизации интерактивного шелла (влияющие на приглашение, меняющие каталог, устанавливающие переменные окружения) — тоже не совсем для новичков;
    • одноразовые скрипты типа массового перекодирования файлов;
    • makefile-ы.

    Абсолютно первые шаги

    Начинаем работу: войти и выйти

    Убедитесь, что точно знаете, как запустить шелл и как из него выйти.

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

    На MacOS — тоже запустить Terminal.

    Для доступа к удаленному серверу — воспользоваться ssh (если локально у вас MacOS, Ubuntu или другая unix-like система) или putty (если у вас Windows).

    Кто я, где я?

    • hostname — выводит имя машины (сервера), на которой вы сейчас находитесь;
    • whoami — выводит ваш логин (ваше имя в системе);
    • tree -d / |less — псевдографическое изображение дерева каталогов на машине; выход из пролистывания — q ;
    • pwd — выводит каталог, в котором вы сейчас находитесь; в командной строке вы не можете быть «просто так», вы обязательно находитесь в каком-то каталоге (=текущий каталог, рабочий каталог). Вероятно, текущий рабочий каталог выводится у вас в приглашении (prompt).
    • ls — список файлов в текущем каталоге; ls /home — список файлов в указанном каталоге;

    История команд (history)

    Важное свойство полноценной командной строки — история команд.

    Выполните несколько команд: hostname , ls , pwd , whoami . Теперь нажмите клавишу «вверх». В строке ввода появилась предыдущая команда. Клавишами «вверх» и «вниз» можно перемещаться вперед и назад по истории. Когда долистаете до hostname , нажмите Enter — команда выполнится еще раз.

    Команды из истории можно не просто выполнять повторно, а еще и редактировать. Долистайте историю до команды ls , добавьте к ней ключ -l (получилось ls -l , перед минусом пробел есть, а после — нет). Нажмите Enter — выполнится модифицированная команда.

    Пролистывание истории, редактирование и повторное выполнение команд — самые типичные действия при работе в командной строке, привыкайте.

    Copy-paste

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

    Прекрасной особенностью текста является то, что его можно копировать и вставлять, это верно и для командной строки.

    Попробуйте выполнить команду date +»%y-%m-%d, %A»
    Вводили ли вы ее целиком руками или скопировали из статьи? Убедитесь, что вы можете ее скопировать, вставить в терминал и выполнить.

    После того, как научитесь пользоваться man ‘ом, убедитесь, что можете скопировать и выполнить примеры команд из справки. Для проверки найдите в справке по программе date раздел EXAMPLES , скопируйте и выполните первый приведенный пример (на всякий случай: знак доллара не является частью команды, это условное изображение приглашения к вводу).

    Как именно копировать текст из терминала и вставлять его в терминал — зависит от вашей системы и от ее настроек, поэтому дать универсальную инструкцию, к сожалению, не получится. На Ubuntu попробуйте так: копирование — просто выделение мышью, вставка — средняя кнопка мыши. Если не работает, или если у вас другая система — поищите в Интернете или спросите более опытных знакомых.

    Ключи и опции

    При исследовании истории команд вы уже столкнулись с тем, что у команды ls есть по крайней мере два варианта. Если вызвать ее просто так, она выводит простой список:

    [22:26]akira@latitude-e7240: ~/shell-survival-quide> ls Makefile shell-first-steps.md shell-first-steps.pdf shell-survival-quide.md shell-survival-quide.pdf 

    Если же добавить ключ -l , к каждому файлу выводится подробная информация:

    [22:28]akira@latitude-e7240: ~/shell-survival-quide> ls -l total 332 -rw-rw-r-- 1 akira akira 198 Feb 13 11:48 Makefile -rw-rw-r-- 1 akira akira 15107 Feb 14 22:26 shell-first-steps.md -rw-rw-r-- 1 akira akira 146226 Feb 13 11:49 shell-first-steps.pdf -rw-rw-r-- 1 akira akira 16626 Feb 13 11:45 shell-survival-quide.md -rw-rw-r-- 1 akira akira 146203 Feb 13 11:35 shell-survival-quide.pdf 

    Это очень типичная ситуация: если к вызову команды добавлять специальные модификаторы (ключи, опции, параметры), поведение команды меняется. Сравните: tree / и tree -d / , hostname и hostname -f .

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

    ls -ld /home ls -l /home grep root /etc/passwd 

    man

    man — справка по командам и программам, доступным на вашей машине, а также по системным вызовам и стандартной библиотеке C.

    Попробуйте: man grep , man atoi , man chdir , man man .

    Пролистывание вперед и назад делается кнопками «вверх», «вниз», «PageUp», «PageDown», выход из просмотра справки — кнопкой q . Поиск определенного текста в справочной статье: нажимите / (прямой слеш), введите текст для поиска, нажимите Enter. Перемещение к следующим вхождениям — клавиша n .

    • 1 — исполняемые программы и шелльные команды ( wc , ls , pwd и т.п.);
    • 2 — системные вызовы ( fork , dup2 и т.п.)
    • 3 — библиотечные функции ( printf , scanf , cos , exec ).

    Посмотреть список всех доступных на машине справочных статей можно с помощью команды man -k . (точка — тоже часть комады).

    less

    Когда в небольшом окне терминала надо просмотреть очень длинный текст (содержимое какого-то файла, длинный man и т.п.), используют специальные программы-«пейджеры» (от слова page/страница, то есть постраничные листатели). Самый популярный листатель — less , и именно он обеспечивает вам пролистывание, когда вы читаете man-ы.

    Попробуйте и сравните поведение:

    cat /etc/bash.bashrc cat /etc/bash.bashrc |less 

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

    less /etc/bash.bashrc 

    Пролистывание вверхи и вниз — кнопки «вверх», «вниз», «PageUp», «PageDown», выход — кнопка q . Поиск определенного текста: нажимите / (прямой слеш), введите текст для поиска, нажимите Enter. Перемещение к следующим вхождениям — клавиша n . (Узнаете инструкцию про man ? Ничего удивительного, для вывода справки тоже используется less .)

    Права

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

    Посмотреть права на файл можно с помощью ls -l . Например:

    > ls -l Makefile -rw-r--r-- 1 akira students 198 Feb 13 11:48 Makefile 

    Этот вывод означает, что владельцу (akira) можно читать и писать файл, группе (students) — только читать, всем прочим пользователя — тоже только читать.

    Если при работе вы получаете сообщение permission denied , это значит, что у вас недостаточно правна объект, с которым вы хотели работать.

    Подробнее читайте в man chmod .

    STDIN, STDOUT, конвейеры (пайпы)

    С каждой исполняющейся программой связаны 3 стандартных потока данных: поток входных данных STDIN , поток выходных данных STDOUT , поток для вывода ошибок STDERR .

    Запустите программу wc , введите текст Good day today , нажмите Enter, введтие текст good day , нажмите Enter, нажмите Ctrl+d. Программа wc покажет статистику по количеству букв, слов и строк в вашем тексте и завершится:

    > wc good day today good day 2 5 24 

    В данном случае вы подали в STDIN программы двухстрочный текст, а в STDOUT получили три числа.

    Теперь запустите команду head -n3 /etc/passwd , должно получиться примерно так:

    > head -n3 /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin 

    В этом случае программа head ничего не читала из STDIN , а в STDOUT написала три строки.

    Можно представить себе так: программа — это труба, в которую втекает STDIN , а вытекает STDOUT .

    Важнейшее свойство юниксовой командной строки состоит в том, что программы-«трубы» можно соединять между собой: выход ( STDOUT ) одной программы передавать в качестве входных данных ( STDIN ) другой программе.

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

    Объединение программ в конвейер делается символом | (вертикальная черта)

    Выполните команду head -n3 /etc/passwd |wc , получится примерно следующее:

    > head -n3 /etc/passwd |wc 3 3 117 

    Произошло вот что: программа head выдала в STDOUT три строки текста, которые сразу же попали на вход программе wc , которая в свою очередь подсчитала количество символов, слов и строк в полученном тексте.

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

    > head -n3 /etc/passwd |wc |wc 1 3 24 

    Составление конвейеров (пайпов) — очень частое дело при работе в командной строке. Пример того, как это делается на практике, читайте в разделе «Составление конвейера-однострочника».

    Перенаправление ввода-вывода

    Вывод ( STDOUT ) програмы можно не только передать другой программе по конвейеру, но и просто записать в файл. Такое перенаправление делается с помощью > (знак «больше»):

    date > /tmp/today.txt 

    В результате выполнения этой команды на диске появится файл /tmp/today.txt . Посмотрите его содержимое с помощью cat /tmp/today.txt

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

    Если надо не перезаписать файл, а добавить вывод в его конец, используйте >> :

    date >> /tmp/today.txt 

    Проверьте, что теперь записано в файле.

    Кроме того, программе можно вместо STDIN передать любой файл. Попробуйте:

    Что делать, когда что-то непонятно

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

    • насколько возможно четко сформулируйте вопрос или задачу — нет ничего сложнее, чем решать «то, не знаю что»;
    • вспомните, сталкивались ли вы уже с такой же или подобной проблемой — в этом случае стоит попробовать решение, которое сработало в прошлый раз;
    • почитайте подходящие man-ы (если понимаете, какие man-ы подходят в вашем случае) — возможно, вы найдете подходящие примеры использования команд, нужные опции или ссылки на другие команды;
    • подумайте: нельзя ли немного поменять задачу? — возможно, чуть-чуть изменив условия, вы получите задачу, которую уже умеете решать;
    • задайте свой четко сформулированный вопрос в поисковой системе — возможно, ответ найдется на Stack Overflow или других сайтах;

    Если вы разобрались со сложной проблемой (самостоятельно, с помощью Интернета или других людей) — запишите свое решение на случай, если такая же проблема снова возникнет у вас или ваших товарищей. Записывать можно в простой текстовый файл, в Evernote, публиковать в соц.сетях.

    Методы работы

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

    Читать man. Nuff said.

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

    Базовые команды

    • переход в другой каталог: cd ;
    • просмотр содержимого файлов: саt , less , head , tail ;
    • манипуляции с файлами: cp , mv , rm ;
    • просмотр содержимого каталогов: ls , ls -l , ls -lS ;
    • структура каталогов: tree , tree -d (можно передать в качестве параметра каталог);
    • поиск файлов: find . -name . ;

    Аналитика

    • wc , wc -l ;
    • sort -k — сортировка по указанному полю;
    • sort -n — числовая соритровка;
    • diff — сравнение файлов;
    • grep , grep -v , grep -w , grep ‘\’ , grep -E — поиск текста;
    • uniq , uniq -c — уникализация строк;
    • awk — в варианте awk » , чтобы оставить только первое поле из каждой строки, $1 можно менять на $2 , $3 и т.д.;

    Диагностика системы

    • ps axuww — информация о процессах (запущенных программах), работающих на машине;
    • top — интерактивный просмотр самых ресурсоемких процессов;
    • df — занятое и свободное место на диске;
    • du — суммарный размер файлов в каталоге (рекурсивно с подкаталогами);
    • strace , ktrace — какие системные вызовы выполняет процесс;
    • lsof — какие файлы использует процесс;
    • netstat -na , netstat -nap — какие порты и сокеты открыты в системе.

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

    Массовое и полуавтоматическое выполнение

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

    • test — проврека условий;
    • while read — цикл по строчкам STDIN ;
    • xargs — подстановка строк из STDIN в параметры указанной программе;
    • seq — генерация последовательностей натуральных чисел;
    • () — объединить вывод нескольких команд;
    • ; — выполнить одно за другим;
    • && — выполнить при условии успешного завершения первой команды;
    • || — выполнить при условии неудачного завершения первой команды;
    • tee — продублировать вывод программы в STDOUT и в файл на диске.

    Разное

    • date — текущая дата;
    • curl — скачивает документ по указаному url и пишет результат на STDOUT ;
    • touch — обновить дату модификации файла;
    • kill — послать процессу сигнал;
    • true — ничего не делает, возвращает истину, полезна для организации вечных циклов;
    • sudo — выполнить команду от имени root ‘а.

    Составление конвейера-однострочника

    Давайте рассмотрим пример реальной задачи: требуется прибить все процессы task-6-server , запущенные от имени текущего пользователя.

    Шаг 1.
    Понять, какая программа выдает примерно нужные данные, хотя бы и не в чистом виде. Для нашей задачи стоит получить список всех процессов в системе: ps axuww . Запустить.

    Шаг 2.
    Посмотреть на полученные данные глазами, придумать фильтр, который выкинет часть ненужных данных. Часто это grep или grep -v . Клавишей «Вверх» вытащить из истории предыдущую команду, приписать к ней придуманный фильтр, запустить.

    ps axuww |grep `whoami` 

    — только процессы текущего пользователя.

    Шаг 3.
    Повторять пункт 2, пока не получатся чистые нужные данные.

    ps axuww |grep `whoami` | grep '\' 

    — все процессы с нужным именем (плюс, может быть, лишние вроде vim task-6-server.c и т.п.),

    ps axuww |grep `whoami` | grep '\' | grep -v vim ps axuww |grep `whoami` | grep '\' | grep -v vim |grep -v less 

    — только процессы с нужным именем

    ps axuww |grep `whoami` | grep '\' | grep -v vim |grep -v less |awk '' 

    — pid-ы нужных процессов, п. 3 выполнен

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

    • |wc -l чтобы посчитать количество процессов;
    • >pids чтобы записать pid-ы в файл;
    • |xargs kill -9 убить процессы.

    Задания для тренировки

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

    • получите список всех файлов и каталогов в вашем домашнем каталоге;
    • получите список всех man -статей из категории 2 (системные вызовы);
    • посчитайте, сколько раз в man-е по программе grep встречается слово grep;
    • посчитайте, сколько процессов запущено в данный момент от имени пользователя root ;
    • найдите, какая команда встречается в максимальном количестве категорий справки (man);
    • подсчитайте, сколько раз встречается слово var на странице ya.ru.

    Что изучать дальше?

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

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

    • awk
    • sed
    • find со сложными опциями
    • apropos
    • locate
    • telnet
    • netcat
    • tcpdump
    • rsync
    • screen
    • ssh
    • tar
    • zgrep , zless
    • visudo
    • crontab -e
    • sendmail

    Кому это надо?

    А стоит ли вообще изучать сегодня командную строку и шелльный скриптинг? Определенно стоит. Приведу только несколько примеров из требований Facebook к кандидатам, которые хотят поступить на работу в FB.

    Data Scientist, Economic Research: Comfort with the command line and with Unix core tools; preferred: adeptness with a scripting language such as Python, or previous software engineering experience.

    MySQL Database Engineer: High degree of proficiency in Shell scripting (Bash, Awk, etc); high degree of proficiency in Linux administration.

    Manufacturing Quality Engineer, Server: Scripting skills in Bash, Perl, or Python is desirable.

    Data Platform Engineer: 2 years experience with Unix/Linux systems.

    DevOps Engineer, Data: 2 years experience with Unix/Linux system administration and programming.

    Вопросы?

    Если у вас есть вопросы по этой статье или вообще по работе в юниксовой командной строке, задавайте их в комментариях или по емейлу liruoko (at) yandex (dot) ru .

    Bash скрипты

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

    В этой статье мы обсудим основы написания сценариев bash, включая переменные, команды, ввод/вывод и отладку. Каждый пункт сопроводим примерами.

    Оглавление

    1. Минимальные требования
    2. Введение
    • Определение Bash-скрипта
    • Преимущества Bash-скриптов
    • Обзор оболочки Bash и интерфейса командной строки
    • Как запускать команды Bash из командной строки
    • Как создавать и выполнять сценарии Bash
    • Комментарии в сценариях bash
    • Переменные и типы данных в Bash
    • Ввод и вывод в Bash-скриптах
    • Основные команды Bash (echo, read и т. д.)
    • Условные операторы (если/иначе)
    • Цикл While
    • Цикл For
    • Оператор Case

    Минимальные требования

    Чтобы следовать этому руководству, необходимо иметь следующее:

    Работающая версия Linux с доступом к командной строке.
    Если у вас не установлен Linux или вы только начинаете его изучать, вы можете легко получить доступ к командной строке Linux через Replit. Replit — это браузерная IDE, в которой вы можете получить доступ к оболочке bash за несколько минут.

    Вы также можете установить Linux поверх вашей системы Windows, используя WSL (подсистема Windows для Linux). Инструкция по ссылке.

    Введение

    Определение Bash-скрипта

    Bash-скрипт — это файл, содержащий последовательность команд, которые выполняются программой bash построчно. Он позволяет выполнять ряд действий, таких как переход к определенному каталогу, создание папки и запуск процесса с помощью командной строки.

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

    Преимущества Bash-скриптов

    Сценарии Bash — это мощный и универсальный инструмент для автоматизации задач системного администрирования, управления системными ресурсами и выполнения других рутинных задач в системах Unix/Linux. Некоторые преимущества сценариев оболочки:

    • Автоматизация: сценарии оболочки позволяют автоматизировать повторяющиеся задачи и процессы, экономя время и снижая риск ошибок, которые могут возникнуть при ручном выполнении.
    • Портативность: сценарии оболочки можно запускать на различных платформах и операционных системах, включая Unix, Linux, macOS и даже Windows, с помощью эмуляторов или виртуальных машин.
    • Гибкость: сценарии оболочки легко настраиваются и могут быть легко изменены в соответствии с конкретными требованиями. Их также можно комбинировать с другими языками программирования или утилитами для создания более мощных сценариев.
    • Доступность. Сценарии оболочки легко писать и не требуют специальных инструментов или программного обеспечения. Их можно редактировать с помощью любого текстового редактора, а в большинстве операционных систем есть встроенный интерпретатор оболочки.
    • Интеграция: сценарии оболочки можно интегрировать с другими инструментами и приложениями, такими как базы данных, веб-серверы и облачные службы, что позволяет решать более сложные задачи автоматизации и управления системой.
    • Отладка: сценарии оболочки легко отлаживать, и большинство оболочек имеют встроенные инструменты отладки и сообщения об ошибках, которые помогают быстро выявлять и устранять проблемы.

    Обзор оболочки Bash и интерфейса командной строки

    Термины «оболочка» и «bash» взаимозаменяемы. Но между ними есть тонкая разница.

    Термин «оболочка» относится к программе, которая предоставляет интерфейс командной строки для взаимодействия с операционной системой. Bash (Bourne Again SHell) является одной из наиболее часто используемых оболочек Unix/Linux и является оболочкой по умолчанию во многих дистрибутивах Linux.

    Интерфейс оболочки zsh или командной строки выглядит следующим образом:

    Оболочка принимает команды от пользователя и отображает вывод

    В приведенном выше выводе clockber::~>> — это приглашение оболочки zsh. Когда оболочка используется в интерактивном режиме, в Linux она отображает $, когда ожидает команды от пользователя.

    Если оболочка запущена от имени пользователя root (пользователь с правами администратора), приглашение меняется на #. Приглашение оболочки суперпользователя выглядит следующим образом:

    [root@host ~]#

    Хотя Bash — это тип оболочки, существуют и другие доступные оболочки, такие как оболочка Korn (ksh), оболочка C (csh) и оболочка Z (zsh). Каждая оболочка имеет свой собственный синтаксис и набор функций, но все они имеют общую цель — предоставить интерфейс командной строки для взаимодействия с операционной системой.

    Вы можете определить свой тип оболочки с помощью команды ps:

    Пример вывода моего терминала:

    Проверка типа оболочки. Я использую оболочку zsh

    Таким образом, в то время как «оболочка» — это широкий термин, относящийся к любой программе, предоставляющей интерфейс командной строки, «Bash» — это особый тип оболочки, который широко используется в системах Unix/Linux.

    Примечание: в этом руководстве мы будем использовать оболочку «bash».

    Как начать работать с Bash-скриптами

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

    [user@host ~]$

    Вы можете ввести любую команду после знака $ и увидеть результат на терминале.

    Как правило, команды имеют следующий синтаксис:

    command [OPTIONS] arguments

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

    • date : отображает текущую дату
    admin@user-new:/$ date Sat 25 Mar 2023 14 12:04:17 PM MSK
    • pwd : Отображает текущий рабочий каталог.
    admin@user-new:/usr/lib$ pwd /usr/lib
    • ls : Выводит содержимое текущего каталога.
    admin@user-new:/home$ ls clockber
    • echo : Выводит на терминал строку текста или значение переменной.
    admin@user-new:/home$ echo "Hello bash" Hello bash

    Вы всегда можете обратиться к руководству по командам с помощью команды man.

    Например, руководство по echo выглядит примерно так:

    Как создавать и выполнять сценарии Bash

    Соглашения об именах сценариев

    По соглашению об именах сценарии bash заканчиваются на .sh. Однако сценарии bash могут прекрасно работать без расширения sh.

    Добавляем Шебанг(Shebang)

    Скрипты Bash начинаются с шебанга. Шебанг(Shebang) — это комбинация bash # и bang ! за которым следует путь оболочки bash. Это первая строка скрипта. Шебанг говорит оболочке выполнить его через оболочку bash. Shebang — это просто абсолютный путь к интерпретатору bash.

    Ниже приведен пример оператора шебанг.

    #!/bin/bash

    Вы можете найти путь к оболочке bash (который может отличаться от указанного выше) с помощью команды:

    which bash

    Наш первый bash-скрипт

    Наш первый скрипт предлагает пользователю ввести путь. В свою очередь он вернет все содержимое указанного каталога.

    Создайте файл с именем show_all.sh с помощью команды vi . Вы можете использовать любой редактор по вашему выбору.

    vi show_all.sh

    Добавьте следующие команды в свой файл и сохраните его:

    #!/bin/bash echo "сегодня " `date` echo -e "\n введите путь к директории:" read path_to echo -e "\n ваша директория содержит файлы и папки:" ls $path_to

    Скрипт отобразит текущую дату и содержимое предоставленного пользователем каталога.

    Давайте более подробно рассмотрим сценарий построчно. Я снова привожу тот же сценарий, но на этот раз с номерами строк.

    #!/bin/bash echo "Сегодня " `date` echo -e "\n введите путь к директории:" read path_to echo -e "\n ваша директория содержит файлы и папки:" ls $path_to
    • Строка #1: Шебанг (#!/bin/bash) указывает на путь к оболочке bash.
    • Строка #2: команда echo отображает текущую дату и время на терминале. Обратите внимание, что дата указана в обратных кавычках.
    • Строка #4: мы хотим, чтобы пользователь ввел правильный путь.Строка #5: Команда чтения считывает ввод и сохраняет его в переменной path_to.
    • строка #8: Команда lh берет переменную с сохраненным путем и отображает текущие файлы и папки.

    Выполнение bash-скрипта

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

    chmod u+x show_all.sh
    • chmod изменяет владельца файла для текущего пользователя u: .
    • +x добавляет права на выполнение текущему пользователю. Это означает, что пользователь, являющийся владельцем, теперь может запустить сценарий.
    • show_all.sh — это файл, который мы хотим запустить.

    Вы можете запустить скрипт любым из указанных способов:

    • sh show_all.sh
    • bash show_all.sh
    • ./show_all.sh

    Давайте посмотрим, как он работает��

    Основы Bash скриптов

    Комментарии в сценариях bash

    Комментарии начинаются с # в сценариях bash. Это означает, что любая строка, начинающаяся с #, является комментарием и будет игнорироваться интерпретатором.

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

    Вот примеры комментариев:

    # This is an example comment # Можно комментить на русском # These lines will be ignored by the interpreter

    Переменные и типы данных в Bash

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

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

    В Bash вы можете использовать и устанавливать значения переменных следующими способами:

    1. Назначьте значение напрямую:
    country=Russia

    2. Присвоение значение на основе вывода, полученного от программы или команды, используя подстановку команд. Обратите внимание, что $ требуется для доступа к значению существующей переменной.

    same_country=$country

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

    admin@user-new:/$ country=Russia admin@user-new:/$ echo $country Russia admin@user-new:/$ new_country=$country admin@user-new:/$ echo $new_country Russia

    Соглашения об именах переменных

    В сценариях Bash следующие соглашения об именах переменных:

    1. Имена переменных должны начинаться с буквы или символа подчеркивания ().
    2. Имена переменных могут содержать буквы, цифры и символы подчеркивания ().
    3. Имена переменных чувствительны к регистру.
    4. Имена переменных не должны содержать пробелов или специальных символов.
    5. Используйте описательные имена, отражающие назначение переменной.
    6. Избегайте использования зарезервированных ключевых слов, таких как if, then, else, fi и т. д., в качестве имен переменных.

    Вот несколько примеров допустимых имен переменных в Bash:

    name count _var myVar MY_VAR

    А вот несколько примеров недопустимых имен переменных:

    2ndvar (начинается с цифры) my var (содержит пробел) my-var (содержит дефис)

    Соблюдение этих соглашений об именах помогает делать сценарии Bash более читабельными и простыми в использовании.

    Ввод и вывод в Bash-скриптах

    Обработка входных данных

    В этом разделе мы обсудим некоторые методы ввода данных в наши сценарии.

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

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

    #!/bin/bash echo -e "\n Enter your name:" read the_name echo -e "\n welcome to Medium $the_name"

    2. Чтение из файла

    Этот код считывает каждую строку из файла с именем input.txt и выводит ее на терминал. Мы изучим циклы while позже в этой статье.

    while read line do echo $line done < input.txt

    3. Аргументы командной строки

    В скрипте или функции bash $1 обозначает переданный начальный аргумент, $2 обозначает переданный второй аргумент и так далее.

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

    echo "Hello, $1!"

    Мы передаем скрипту clockber как аргумент.

    #!/bin/bash echo "Hello, $1!"

    Отображение вывода

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

    1. Печать в терминал:
    echo "Hello, World!"

    Этой командой напечатаем текст “Hello, World!” в терминале.

    2. Запись в файл:

    echo "let's write text." > output.txt

    Эта команда запишет текст “let’s write text.” в файл с именем output.txt. Обратите внимание, что оператор > перезапишет файл, если в нем уже есть содержимое.

    3. Добавление в файл:

    echo "More text." >> output.txt

    Добавляем текст “More text.” в конец файла output.txt.

    4. Перенаправление вывода:

    ls > files.txt

    Перечисляем файлы в текущем каталоге и записываем вывод в файл с именем files.txt. Таким образом вы можете перенаправить вывод любой команды в файл.

    Основные команды Bash (echo, read и т. д.)

    Вот список некоторых наиболее часто используемых команд bash:

    1. cd : Изменение директории на другую.
    2. ls : Отображение содержимого в текущей директории.
    3. mkdir : Создание новой директории.
    4. touch : Создать новый файл.
    5. rm : Удаление файла или директории.
    6. cp : Копирование файла или директории.
    7. mv : Перемещение или переименование файла или директории.
    8. echo : Печать текста в терминал.
    9. cat : Читает данные из файла и выводит их на экран.
    10. grep : Поиск в файлах.
    11. chmod : Изменение прав доступа к файлу или директории.
    12. sudo : Запуск команд с правами администратора.
    13. df : Отображение дискового пространства.
    14. history : Отображение истории предыдущих комманд.
    15. ps : Отображение информации о запущенных процессах.

    Условные операторы (if/else)

    Выражения, дающие логический результат, истинный или ложный, называются условиями. Существует несколько способов оценки условий, включая if , if-else , if-elif-else и вложенные условные операторы.

    if [[ condition ]]; then statement elif [[ condition ]]; then statement else do this by default fi

    Можно использовать логические операторы, такие как AND -a и OR -o , чтобы делать сравнения, которые имеют большее значение.

    if [ $a -gt 60 -a $b -lt 100 ]

    Давайте рассмотрим пример сценария Bash, который использует операторы if , if-else , if-elif-else , чтобы определить, является ли введенное пользователем число положительным, отрицательным или нулевым:

    #!/bin/bash echo "Please enter a number: " read num if [ $num -gt 0 ]; then echo "$num is positive" elif [ $num -lt 0 ]; then echo "$num is negative" else echo "$num is zero" fi

    Сначала скрипт предлагает пользователю ввести число. Затем он использует оператор if , чтобы проверить, больше ли число, чем 0. Если это так, сценарий выводит, что число положительное. Если число не больше 0, скрипт переходит к следующему оператору, который является оператором if-elif . Здесь скрипт проверяет, меньше ли число 0. Если да, то скрипт выводит отрицательное число. Наконец, если число не больше 0 и не меньше 0, скрипт использует оператор else для вывода того, что число равно нулю.

    Циклы и ветвление в Bash

    Цикл While

    Циклы while проверяют условие в цикле, пока это условие остается true . Для управления циклом принято использовать счетчики.

    В приведенном ниже примере (( i += 1 )) — это оператор счетчика, который увеличивает значение i. Цикл будет выполняться ровно 10 раз.

    #!/bin/bash i=1 while [[ $i -le 10 ]] ; do echo "$i" (( i += 1 )) done

    Цикл For

    Цикл for, как и цикл while, позволяет выполнять операторы определенное количество раз. Каждый цикл отличается своим синтаксисом и использованием.

    В приведенном ниже примере цикл повторяется 5 раз.

    #!/bin/bash for i in do echo $i done

    Оператор Case

    В Bash операторы case используются для сравнения заданного значения со списком шаблонов и выполнения блока кода на основе первого совпавщего шаблона. Синтаксис оператора case в Bash следующий:

    case expression in pattern1) # code to execute if expression matches pattern1 ;; pattern2) # code to execute if expression matches pattern2 ;; pattern3) # code to execute if expression matches pattern3 ;; *) # code to execute if none of the above patterns match expression ;; esac

    Здесь expression — это значение, которое мы хотим сравнить, а pattern1 , pattern2 , pattern3 и т. д. — это шаблоны, с которыми мы хотим его сравнить.

    Двойная точка с запятой “;;” отделяет каждый блок кода для выполнения для каждого шаблона. Звездочка “*” представляет случай по умолчанию, который выполняется, если ни один из указанных шаблонов не соответствует выражению.

    Давайте посмотрим пример.

    fruit="apple"case in "apple") echo "This is a red fruit." ;; "banana") echo "This is a yellow fruit." ;; "orange") echo "This is an orange fruit." ;; *) echo "Unknown fruit." ;;esac

    В данном примере, поскольку значение “fruit” является “apple”, чему соответствует первый шаблон и блок кода, следовательно в терминале мы увидем “This is a red fruit.”. Если бы значением “fruit” было “banana”, второй шаблон соответствовал бы и блоку кода, который повторяет “This is a yellow fruit.”. будет выполняться и так далее. Если значение “fruit”не соответствует ни одному из указанных шаблонов, выполняется случай по умолчанию, который повторяет “Unknown fruit.”.

    Планирование сценариев с помощью Сron

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

    Ниже приведен синтаксис для планирования crons:

    # Cron job example* * * * * sh /path/to/script.sh

    Здесь * представляют собой минуты (минуты), часы (часы), день (дни), месяцы и дни недели соответственно.

    Ниже приведены несколько примеров планирования заданий cron.

    schedule description example0 0 * * * Run a script at midnight every day 0 0 * * * /path/to/script.sh*/5 * * * * Run a script every 5 minutes */5 * * * * /path/to/script.sh0 6 * * 1-5 Run a script at 6 am from Monday to Friday 0 6 * * 1-5 /path/to/script.sh0 0 1-7 * * Run a script on the first 7 days of every month 0 0 1-7 * * /path/to/script.sh0 12 1 * * Run a script on the first day of every month at noon

    Использование crontab
    Утилита crontab используется для добавления и редактирования заданий cron.

    crontab -l перечисляет уже запланированные сценарии для конкретного пользователя.

    Вы можете добавлять и редактировать cron через crontab -e .

    Вы можете прочитать больше о работе с Cron здесь.

    Как отлаживать и устранять неполадки Bash-скриптов

    Отладка и устранение неполадок являются важными навыками для любого Bash-скриптора. Хотя сценарии Bash могут быть невероятно мощными, они также могут быть подвержены ошибкам и неожиданному поведению. В этом разделе мы обсудим некоторые советы и методы по отладке и устранению неполадок сценариев Bash.

    Установите параметр set -x

    Один из наиболее полезных способов отладки сценариев Bash — установка параметра set -x в начале сценария. Эта опция включает режим отладки, в котором Bash печатает каждую команду, которую он выполняет, на терминал, перед которой ставится знак +. Это может быть невероятно полезно для определения того, где в сценарии возникают ошибки.

    #!/bin/bashset -x# Your script goes here

    Проверьте код выхода

    Когда Bash обнаруживает ошибку, он устанавливает код выхода, который указывает характер ошибки. Вы можете проверить код выхода самой последней команды, используя $? переменная. Значение 0 указывает на успех, а любое другое значение указывает на ошибку.

    #!/bin/bash# Your script goes hereif [ $? -ne 0 ]; then echo "Error occurred."fi

    Используйте операторы echo

    Другой полезный метод отладки скриптов Bash — вставка echo-оператора в ваш код. Это может помочь вам определить, где возникают ошибки и какие значения передаются в переменные.

    #!/bin/bash# Your script goes hereecho "Value of variable x is: " >x"# More code goes here

    Используйте опцию set -e

    Если вы хотите, чтобы ваш сценарий завершался немедленно, когда какая-либо команда в сценарии не удалась, вы можете использовать опцию set -e. Этот параметр заставит Bash завершить работу с ошибкой, если какая-либо команда в сценарии завершится неудачно, что упростит выявление и исправление ошибок в вашем сценарии.

    #!/bin/bashset -e# Your script goes here

    Устранение неполадок Cron путем проверки log журналов

    Мы можем устранять неполадки crons с помощью файлов журнала. Журналы ведутся для всех запланированных заданий. Вы можете проверить и проверить в журналах, выполнялось ли конкретное задание должным образом или нет.

    Для Ubuntu/Debian вы можете найти cronlogs по адресу:

    /var/log/syslog

    Расположение отличается для других дистрибутивов.

    Файл журнала заданий cron может выглядеть следующим образом:

    2022-03-11 00:00:01 Task started2022-03-11 00:00:02 Running script /path/to/script.sh2022-03-11 00:00:03 Script completed successfully2022-03-11 00:05:01 Task started2022-03-11 00:05:02 Running script /path/to/script.sh2022-03-11 00:05:03 Error: unable to connect to database2022-03-11 00:05:03 Script exited with error code 12022-03-11 00:10:01 Task started2022-03-11 00:10:02 Running script /path/to/script.sh2022-03-11 00:10:03 Script completed successfully

    Заключение

    В этой статье мы начали с того, как получить доступ к терминалу, а затем выполнили некоторые основные команды bash. Также изучили, что такое оболочка bash. Кратко рассмотрели ветвление кода с использованием циклов и условий. Наконец, мы обсудили автоматизацию сценариев с помощью cron, а затем некоторые методы устранения неполадок.

    Надеюсь вся вышеперечисленная информация вам помогла 🙂

    Shell вышел из сделки с «Газпром нефтью» по освоению месторождений в ЯНАО

    Фото: Jeff J Mitchell / Getty Images

    Концерн Shell не будет завершать сделку по созданию совместного предприятия на базе «Меретояханефтегаз», сообщается на сайте «Газпром нефть». Решение принято в связи с негативным воздействием внешних факторов, говорится в сообщении. Российская компания самостоятельно продолжит разработку активов в Ямало-Ненецком автономном округе (ЯНАО), входивших в периметр создаваемого предприятия. Это Меретояхинское месторождение, Тазовский, Северо-Самбургский и два Западно-Юбилейных участка, уточняет «Газпром нефть».

    До конца 2020 года планируется начать освоение Тазовского месторождения.

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

    Фото:Юрий Смитюк / ТАСС

    Компании подписали договор о создании совместного предприятия на базе месторождений в ЯНАО на Петербургском экономическом форуме в июне 2019 года. Компании оформили сделку купли-продажи 50% доли в «Меретояханефтегаз». Управление компанией планировалось осуществлять на паритетных началах.

    Главный исполнительный директор Shell Бен ван Берден оценивал сделку с приобретением 50% «Меретояханефтегаза» как крупнейшее вложение концерна в разведку и добычу нефти в России за последние пять лет. В январе глава Shell в России Седрик Кремерс подтверждал, что у компании «есть аппетит к расширению сотрудничества» с «Газпром нефтью». «Нам интересно увеличивать наш портфель активов в России с точки зрения новых блоков», — говорил Кремерс. В конце марта стало известно, что концерн Shell намерен сократить свои расходы на $9 млрд для того, чтобы выдержать обвал нефтяных цен на фоне пандемии коронавируса. Совокупные геологические запасы Меретояхинского месторождения и остальных участков, на базе которых создается предприятие, составляют более 1,1 млрд т нефти.

    Mortal Shell: Прохождение

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

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

    Игрой задумано, что вы проиграете Хадерну. Однако, если запасетесь терпением, то сможете его победить. Битву Хадерн начинает с разбега и последующей атаки. Практически всегда за ней последует один тяжелый удар. Подождите, когда враг выполнит оба приема, затем зафиксируйте на нем цель и начните кружить. Держитесь подальше от него и ждите, когда сможете уклониться от удара в прыжке, укора или тяжелой атаки. В случае с укором или ударом с разбега нужно использовать кувырок. После один раз ударьте врага ЛКМ. Хадерн попытается контратаковать вас, но вы можете ударить его еще один раз ПКМ (для ошеломления) и ЛКМ. А затем откатиться.

    Если Хадерн использует окаменение, то немного подождите, а затем, после его выпада, нанесите собственный удар. Когда он попытается контратаковать, включите свое окаменение, чтобы ошеломить врага и нанести ему еще один удар. Следите за выносливостью. Оставляйте немного выносливости, чтобы всегда была возможность откатиться от противника. И никогда не сближайтесь с Хадерном, если окаменение еще не успело восстановиться. Поскольку наносимый вами урон невелик, то для достижения победы вам придется потратить немало времени. К тому же нужно допустить минимум ошибок, поскольку каждая приводит к значительной потере ХП. Если удастся победить Хадерна, то получите отсвет.

    Проиграете вы или победите Хадерна, запустится кат-сцена, после чего вы переместитесь в Фолгрим.

    Хадерн, с которым вы будете сражаться не один раз.

    Хадерн, с которым вы будете сражаться не один раз.

    Фолгрим

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

    Когда спуститесь к болоту, то увидите видеоролик, намекающий на то, что дальше нужно идти по тропинке вперед. Так вы и должны поступить, поэтому пройдите через болото и следуйте вверх по тропинке. Здесь вы увидите пять простых разбойников, которые погибают от трех ударов меча. А когда разбойник, стоящий рядом, видит, как на его глазах погибает союзник, то в большинстве случаев начинает пятиться назад. Используйте это, чтобы сражаться с противниками по одному. Противники слева и справа устроили засаду, поэтому будьте предельно осторожны. Также следите за капканами, разбросанными по земле: на них может попасть ваш герой или противник.

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

    Башня Фолгрима

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

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

    Гриша

    Гриша – огромный, громкий, медленный монстр. Вы сможете победить его даже с самым простым снаряжением. Как и в случае с Хадерном, ваша стратегия – пережидать выпады Гриши, а затем контратаковать. Большинство его атак состоят из 2-3 взмахов лапами. Поскольку все эти атаки телеграфируются громким ревом Гриши, вы сможете легко их распознать, уклониться или отбить окаменением. Лучше всего использовать кувырок, чтобы сохранить окаменение, ошеломить врага в другой раз и продлить атакующее комбо. Атаки Гриши также легко парируются, что позволит нанести большой урон. Однако это риск, который может вылиться в неудачу, если вы неправильно рассчитаете время.

    Гриша.

    Его фирменная атака – апперкот. Он сигнализирует о нем, опуская обе руки вниз, что сопровождается громким ревом. Вы не можете заблокировать атаку парированием или окаменением, поэтому проще всего совершить рывок назад. Такая атака также выводит Гришу из равновесия, открывая возможность для 2-3 ударов. Однако, стоять позади Гриши слишком долго не стоит, поскольку это затруднит распознавание их атак.

    Победив Гришу, вы получите 6 отсветов, 750 тар и улучшение для освященного меча, механический шип, который лежит в сундуке. Если спуститесь вниз за сундуком, то сможете пробраться через дыру в стене и отыскать еще одну оболочку, ученого Соломона. Получив ее, вернитесь в башню Фолгрима. Улучшите освященный меч на верстаке, добавив к нему механическим шип. Так вы получите первое умение для оружия. Расходуя два деления решимости, вы сможете наносить мощный удар копьем, мгновенно ошеломляющий цели. Это очень эффективное умение против боссов.

    Теперь вам нужно посетить три разных храма, убить трех разных боссов (больших, «мини» не в счет) и принести Старому узнику 3 железы. Примечательно, что за каждую железу узник будет давать вам определенное умение для руны, позволяющее вам при совершении усиленное контратаки получать ХП, выносливость и так далее. Но когда вы принесете ему третью руну, узник скроется, так и не предоставив вам финальное умение. Его вы сможете получить в «Новой игре+».

    Территория храма

    Фолгрим поначалу может показаться запутанной локацией, однако здесь не так много развилок, и всего есть три маршрута, ведущие в разные храмы. Вы можете посещать их в любом порядке, но в нашем прохождении текущая локация указана первой. Когда проберетесь туда через окрестности Фолгрима (локация, которая будет знакома вам по открытой бете игры), то разбудите Сестру Генессу. Воспользуйтесь книгой в соседнем коридоре, чтобы переместиться к Хадерну. Победив его, вы разблокируете новое оружие – курящуюся булаву.

    В первой комнате храма есть четыре обычных врага и один противник со щитом. Убейте всех, найдите в углу мухомор и статуэтку Тиля. Идите в другое помещение, чтобы увидеть развилку. Пройдите по пути, уходящему вниз (и вправо), чтобы добраться до склепа, в котором спрятано первое улучшение для курящейся булавы. Убейте огненных призраков.

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

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

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

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

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

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

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

    Святилище пламени

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

    Имрод.

    Имрод Нераскаянный

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

    После победы вы получите железу. Бегите назад к выходу. Убивать всех врагов необязательно. Каждый раз, когда вы получаете железу, Фолгрим погружается в туман. Вместо обычных врагов появляются другие монстры. И их бывает очень много, поэтому далеко не всегда разумно вступать с ними в схватку. Вернитесь к Старому узнику и передайте железу, чтобы убрать туман. Осталось найти еще две. Также в башне появится персонаж, который за 1 отсвет может включать или отключать туман. При включенном тумане вы можете открывать сундуки в форме каменных лягушек.

    Заброшенные залы

    Теперь идите в окрестности Фолгрима и отыщите локацию, на которой были в открытой бете. В начале окрестностей будет костер с двумя обычными врагами и одним палачом. Справа есть скала с дырой. Проберитесь через нее, чтобы убить мини-босса и получить оболочку Тиля. Следуйте дальше, пока не обнаружите другую пещеру, которая ведет на новую локацию. В ее начале будет сестра Генесса. Чуть дальше вы найдете книгу, которая перенесет вас к Хадерну. Победив его, вы сможете воспользоваться новым оружием – клинком Великомученика.

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

    Двигайтесь далее, сверните в комнату слева, чтобы обнаружить сидящего монстра. За ним будет сундук с закалочной кислотой. Продолжайте движение, пока не встретите босса – Порабощенную Гришу. Это усиленная Гриша, с которой вы сражались ранее. Да, в этой игре Гриша – существо женского пола.

    Порабощенная Гриша.

    Порабощенная Гриша.

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

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

    Первый Великомученик Таррус

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

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

    Первый великомученик Таррус.

    Первый великомученик Таррус.

    Вековечный притвор

    Перед входом в притвор найдите оболочку Эредрима. Подобрав ее, убейте противника и войдите внутрь. Слева будет Генесса и подставка для книги. Книга перенесет вас на арену с Хадерном. Победите его, чтобы получить новое оружие – молоток и зубило для тех, кто любит пользоваться быстрым оружием. Это идеальный вариант для оболочки с максимальным запасом выносливости.

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

    Мглистые врата

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

    Круцикс Дваждырожденный

    Испейте нектар, а затем сразитесь с новым боссом. Запомните его движения и уклоняйтесь от выстрела из арбалета. При этом, как только завершится первый этап, мелкие сиамский близнец погибнет, и по вам уже никто не будет стрелять. Будьте осторожны с Круциксом и на втором этапе, особенно когда тот пытается ударить вас ногой. Если у него получится это сделать, вы упадете на землю, и потратите некоторое время на то, чтобы встать на ноги.

    Освобожденный

    Когда соберете все три железы и передадите их Узнику, он упадет вниз, а вы сможете последовать за ним. Здесь вас ждет битва против финального босса, Освобожденного. Когда появляются тени, обязательно убивайте их в первую очередь, а после возвращайтесь к сражению с Освобожденным. Когда на вас идут волны, перепрыгивайте через них, используя кувырки. Наконец, если видите водоворот, то бегите от него прочь. Он исчезнет, как только вы убьете все тени. Если есть баллистазука, то стреляйте из нее точно в голову Освобожденного. Так вы будете оглушать монстра, и сможете атаковать его 1-2 раза тяжелыми ударами. Не забывайте про окаменение и способности оружия. После победы заберите священную железу. Начнется «Новая игра+», о которой я подробнее рассказал в нашем общем руководстве по Mortal Shell.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *