Введение в оболочку Linux и сценарии оболочки

Опубликовано: 28 Декабря, 2021

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

  • Ядро
  • Оболочка
  • Терминал

      Что такое ядро

      Ядро - это компьютерная программа, которая является ядром операционной системы компьютера и полностью контролирует все в системе. Он управляет следующими ресурсами системы Linux -

      • Управление файлами
      • Управление процессом
      • Управление вводом / выводом
      • Управление памятью
      • Управление устройством и т. Д.
          Часто ошибочно полагают, что Линус Торвальдс разработал ОС Linux, но на самом деле он отвечает только за разработку ядра Linux.
          Полная система Linux = ядро + системные утилиты и библиотеки GNU + другие сценарии управления + сценарии установки.

          Что такое Shell

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

          оболочка linux


          Shell можно разделить на две категории:
          • Командная строка
          • Графическая оболочка

          Командная строка

          Пользователь может получить доступ к оболочке с помощью интерфейса командной строки. Специальная программа под названием « Терминал» в linux / macOS или « Командная строка в ОС Windows» предназначена для ввода удобочитаемых команд, таких как «cat», «ls» и т. Д., А затем она выполняется. Затем результат отображается на терминале пользователю. Терминал в системе Ubuntu 16.4 выглядит так:

          командная строка linux


          На скриншоте выше выполняется команда «ls» с параметром «-l».

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

          Графические оболочки

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

          Оболочка графического интерфейса

          Для систем Linux доступно несколько оболочек, например:

          • BASH (Bourne Again SHell) - это наиболее широко используемая оболочка в системах Linux. Он используется в качестве оболочки входа по умолчанию в системах Linux и macOS. Его также можно установить в ОС Windows.
          • CSH (C SHell) - синтаксис и использование оболочки C очень похожи на язык программирования C.
          • KSH (Korn SHell) - Korn Shell также была базой для стандартных спецификаций POSIX Shell и т. Д.

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



          Сценарии оболочки

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

          Сценарий оболочки имеет синтаксис, как и любой другой язык программирования. Если у вас есть опыт работы с любым языком программирования, таким как Python, C / C ++ и т. Д., Было бы очень легко начать с ним.
          Сценарий оболочки состоит из следующих элементов -

          • Ключевые слова оболочки - if, else, break и т. Д.
          • Команды оболочки - cd, ls, echo, pwd, touch и т. Д.
          • Функции
          • Поток управления - if..then..else, case, shell и т. Д.

          Зачем нужны сценарии оболочки

          Есть много причин писать сценарии оболочки -

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

          Преимущества сценариев оболочки

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

          Недостатки сценариев оболочки

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

          Простая демонстрация сценариев оболочки с использованием Bash Shell

          Если вы работаете на терминале, вы путешествуете по каталогам глубоко. Затем для перехода на несколько каталогов по пути мы должны выполнить команду, подобную этой, как показано ниже, чтобы перейти в каталог «python» -

          Это довольно неприятно, так почему бы нам не иметь утилиту, в которой нам просто нужно ввести имя каталога, и мы можем напрямую переходить к нему, не выполняя команду «cd ../» снова и снова. Сохраните сценарий как «jump.sh».

          # !/bin/bash
          # A simple bash script to move up to desired directory level directly
          function jump()
          {
          # original value of Internal Field Separator
          OLDIFS=$IFS
          # setting field separator to "/"
          IFS=/
          # converting working path into array of directories in path
          # eg. /my/path/is/like/this
          # into [, my, path, is, like, this]
          path_arr=($PWD)
          # setting IFS to original value
          IFS=$OLDIFS
          local pos=-1
          # ${path_arr[@]} gives all the values in path_arr
          for dir in "${path_arr[@]}"
          do
          # find the number of directories to move up to
          # reach at target directory
          pos=$[$pos+1]
          if [ "$1" = "$dir" ]; then
          # length of the path_arr
          dir_in_path=${ #path_arr[@]}
          #current working directory
          cwd=$PWD
          limit=$[$dir_in_path-$pos-1]
          for ((i=0; i<limit; i++))
          do
          cwd=$cwd/..
          done
          cd $cwd
          break
          fi
          done
          }

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

          $ chmod -x путь / к / нашему / файлу / jump.sh
          

          Теперь, чтобы сделать это доступным в каждом сеансе терминала, мы должны поместить это в файл «.bashrc».
          «.Bashrc» - это сценарий оболочки, который оболочка Bash запускает всякий раз, когда запускается в интерактивном режиме. Цель файла .bashrc - предоставить место, где вы можете настроить переменные, функции и псевдонимы, определить нашу подсказку и определить другие настройки, которые мы хотим использовать всякий раз, когда мы открываем новое окно терминала.
          Теперь откройте терминал и введите следующую команду -

          $ echo «источник ~ / путь / к / нашему / файлу / jump.sh» >> ~ / .bashrc
          

          Теперь откройте терминал и попробуйте новую функцию «прыжка», набрав следующую команду:

          $ jump dir_name
          

          как показано на скриншоте ниже -

          Ресурсы для изучения сценариев Bash

          • https://bash.cyberciti.biz/guide/The_bash_shell
          • http://tldp.org/LDP/abs/html/

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

          • https://en.wikipedia.org/wiki/Shell_script
          • https://en.wikipedia.org/wiki/Shell_(computing)

          Эта статья предоставлена Атулом Кумаром . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам. Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное или хотите поделиться дополнительной информацией по теме, обсуждаемой выше.

Предыдущий
Основные команды оболочки в Linux
Следующий
Основные операторы в сценариях оболочки
Рекомендуемые статьи
Страница :
Статья предоставлена:
GeeksforGeeks
Голосуйте за трудности
Текущая сложность: Легко
Теги статьи:
  • Linux-Unix
  • Операционные системы
Теги практики:
  • Операционные системы
Сообщить о проблеме
Linux-Unix

РЕКОМЕНДУЕМЫЕ СТАТЬИ