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

Что такое TerminalКогда я начинал свою аспирантуру в Университете Хельсинки, самое страшное, что я мог видеть у моих коллег - это черный экран, в котором есть только текст и мигающий курсор. Позже я узнал, что эта программа называется Terminal и является незаменимым инструментом для биоинформатиков и других специалистов, анализирующих большие массивы данных. Так как большинство генетиков и эволюционных биологов рано или поздно столкнётся с необходимостью работы в Терминале, я решил написать вводную статью о том, что такое Terminal и для чего он нужен.

Что такое Терминал?

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

Terminal в MacOS

До появления привычных нам графических интерфейсов люди пользовались текстовыми терминалами, в которые вводили команды при помощи клавиатуры, а результат вычислений выводился на экран. Однако, и по сей день терминал, точнее эмулятор терминала, есть в каждой операционной системе: в Windows – это приложение cmd.exe (Command Line или просто «Консоль»), в Linux и MacOS– программа Terminal. Все эмуляторы выглядят примерно одинаково: это командная строка, работающая по принципу «задал вопрос, получил ответ». Зачастую это черный экран, на фоне которого отображен белый текст и мигающий курсор, который используется для навигации по строке ввода.

Зачем нужен Терминал?

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

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

Разберем каждый из этих аспектов подробнее.

Терминал, как манипулятор файлов и папкок

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

Допустим, мне нужно переименовать фотографию и добавить к текущему названию дату, когда эта фотография была сделана. Что может быть проще, скажите Вы: "открой свойства файла, скопируй дату создания файла, закрой окно «Свойства» и вставь дату в название файла". Так и есть, все довольно просто, вот только повторить это действие нужно для всех фотографий на моем компьютере (а их у меня более 25 тысяч). Очевидно, что если я буду делать это подобным образом, то это задание отнимет у меня несколько недель.

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

Использование Терминала для создания скриптов

Другая важная особенность эмуляторов терминала – это возможность запуска в нем других программ, чтобы автоматизировать процессы в программах и обеспечить автономное взаимодействие между ними. Если входные и выходные данные этих программ оформить в виде файлов, то Терминал сможет запускать последовательно программы. Алгоритм будет напоминать цепочку из таких действий: запустить программу А, загрузить туда входные данные (файл А), экспортировать результаты анализа в файл B, закрыть программу A, запустить программу B, загрузить туда файл B, ну и так далее…

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

Управления суперкомпьютерами и серверами через Терминал

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

Как правило, на суперкомпьютерах и серверах стоят версии операционной системы Linux. Так как различий между эмуляторами терминала на Линуксе и на Маке практически нет, в дальнейших статьях я буду писать только об эмуляторах терминала, работающих на языке программирования bash (например, программа Terminal).

Заключение

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

В следующей статье мы рассмотрим как открыть Terminal на Linux и на MacOS, а также настроим его под себя для последующей удобной работы.

Оставить комментарий

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