Перейти к содержимому

Shell script что это

  • автор:

Bash

Bash — это командная оболочка для UNIX-подобных операционных систем (UNIX, GNU/Linux, MacOS). Она дает пользователю систему команд для работы с файлами и папками, поиском, настройкой окружения и позволяет управлять ОС прямо из командной строки.

«IT-специалист с нуля» наш лучший курс для старта в IT

Слово bash читается как «баш» и расшифровывается как Bourne-Again Shell. Стивен Борн — это имя и фамилия создателя оболочки, а sh (расшифровывается как «шелл») — ее предыдущая версия. Она использовалась в старых версиях операционных систем UNIX. На shell основаны практически все современные системы команд для работы с ОС.

Что делает bash

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

Есть и другой способ использования: создание bash- или shell-скриптов, которые сохранены в файле. При каждом запуске файла будет выполняться набор указанных в нем команд.

Зачем использовать bash

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

Например, чтобы скопировать файл с помощью графического интерфейса, нужно открыть папку, где он расположен, кликнуть на файл правой кнопкой мыши, вызвать контекстное меню и выбрать «Скопировать». А если использовать командную строку и bash — потребуется ввести одну команду.

Команда cp означает «скопировать». — это путь к исходному файлу, например /home/file.txt. Это значит, что file.txt лежит в папке /home.

— путь к копии файла, которая создастся при выполнении команды. Например, /home/usr/file2.txt, где file2.txt — название копии. Она будет находиться в папке /usr внутри директории /home.

В некоторых системах графический интерфейс практически не используется. Все действия нужно выполнять с помощью командной строки. Здесь bash/shell незаменим.

Профессия / 8 месяцев
IT-специалист с нуля

Попробуйте 9 профессий за 2 месяца и выберите подходящую вам

vsrat_7 1 (1)

Как запустить bash

Оболочка-интерпретатор встроена в операционную систему и включается автоматически. Достаточно открыть окно терминала и начать вводить команды.

Чтобы запустить bash-скрипт, записанный в файл, нужно выдать права на его исполнение

Структура команды

Синтаксис команды выглядит так:

Флаги — это короткие входные параметры после команды, которые обычно выглядят как дефис и буква. Например, в записи ls -l -l — это флаг. Это нужно, чтобы команда выполнялась определенным образом, например по-особому выводила результат. Для большинства команд существуют десятки флагов.

Аргументы — это данные, которые передаются команде. Например, чтобы создать файл, нужно указать его имя — оно будет аргументом.

Флаги и аргументы нужны не всегда и не для всех команд.

Как устроена навигация в bash

Организация файлов и папок в Linux не такая, как в Windows. Путь к файлу отсчитывается не от названия диска, а от так называемого корневого каталога. Говоря языком «для начинающих», это начальная точка: считается, что все файлы и папки в системе расположены внутри «корня». Внутри этих папок могут лежать свои подкаталоги и файлы, но их расположение тоже отсчитывается относительно корневого каталога. Корневой каталог обозначается прямым слэшем /.

Чтобы указать на файл, лежащий в корневом каталоге, нужно написать /. Полный путь к любому файлу можно прописать так: ///…//.

Указывать весь путь необязательно. Можно прописать расположение файлов и папок относительно того места, где вы находитесь.

В системах Windows для указания пути используются обратные слэши \. В Linux это всегда прямые слэши /.

Курс для новичков «IT-специалист
с нуля» – разберемся, какая профессия вам подходит, и поможем вам ее освоить

Команды для навигации по системе

Постоянно прописывать путь целиком сложно и долго. Поэтому в bash есть система обозначений специально для навигации:

  • . — текущая папка;
  • .. — папка на уровень выше текущей;
  • ~ — домашний каталог. Его адрес по умолчанию зависит от дистрибутива операционной системы. Например, в Ubuntu это /home/;
  • — — предыдущий каталог.

Эти обозначения разрешается использовать вместо части пути или пути полностью. Например, можно написать ~/myfiles или ../docs/work.

Перемещаться по системе и ориентироваться в местоположении помогают команды:

  • pwd — показать полный путь к папке, где сейчас находится пользователь;
  • сd — перейти в другой каталог.

Команды для просмотра информации

В ходе работы бывает нужно просмотреть файл или мануал, проверить содержимое каталога. У bash для этого множество возможностей, но мы пока рассмотрим основные:

  • man — открыть мануал, руководство пользователя по какой-либо команде. Этот справочник очень полезен на начальных этапах изучения оболочки. Там приведены подробные описания команд, но на русский язык руководство не переведено;
  • cat — показать содержимое файла прямо в терминале. Можно передать команде несколько файлов, тогда она выведет содержимое каждого;
  • ls — отобразить содержимое каталога. Если не передать этой команде путь, она покажет, что находится в текущей папке.

Less. Команда less открывает переданный файл для чтения в специальном интерфейсе. Она хорошо подходит для просмотра длинных файлов, потому что внутри интерфейса less можно ориентироваться по содержимому:

  • нажатие g переводит пользователя в начало файла;
  • нажатие G переносит в конец;
  • / открывает поиск по содержимому;
  • q выходит из less.

Язык bash зависит от раскладки: если ввести g, когда включен русский язык, команда не сработает.

Nano. Так называется текстовый редактор, которым можно пользоваться из консоли. Он очень простой: это аналог Notepad, который открывается прямо внутри командной строки. Чтобы открыть в нем файл, нужно ввести команду nano . Внутри программы можно читать, редактировать, сохранять содержимое. Основные команды редактора указаны внутри его интерфейса.

Для перехода в nano без открытия файла команду можно запустить без аргументов

Команды для поиска

Пользователю может понадобиться найти какой-нибудь файл или определенную информацию внутри него. Для этого используются две программы:

  • find -name «имя файла в кавычках» ищет файл с нужным именем в указанной папке;
  • grep «любой текст в кавычках» ищет указанную строку в файле. Подходит для поиска определенного содержимого, например строчек в скриптах. Если запустить grep с аргументом -r и указать имя папки, то он будет искать нужную строку во всех файлах папки.

Работа с файлами

Со всем, что есть в системе, можно работать. Для этого bash предоставляет огромное множество команд. Вот некоторые из них:

  • mkdir — создает в текущем каталоге новую папку. Если папку нужно создать в другом месте, понадобится команда mkdir -p ;
  • touch — создает файл. Можно прописать к нему путь, а можно создать его в текущем каталоге. Тогда потребуется указать только имя файла;
  • cp — копирует файл из пути1 в путь2;
  • mv — перемещает файл из пути1 в путь2;
  • rm — удаляет файл, rm -r — удаляет каталог;
  • wget — скачивает файл с сайта по ссылке и размещает в текущем каталоге;
  • echo — выводит аргумент в консоль.

Ввод и вывод

  • — ввод аргументов из файла;
  • >— вывод результата в файл;
  • >>— вывод результата в файл с дозаписью. Если в документе уже было содержимое, оно не перезапишется — новые данные добавятся в конец.

Можно запускать сразу несколько команд, чтобы они передавали друг другу данные, — это называется конвейером. В таком случае команды перечисляются через |.

Работа с git

Популярные дистрибутивы Linux (Ubuntu, Debian и прочие) поддерживают систему контроля версий git. Узнать о ней больше можно в этой статье. С системой можно работать из командной строки.

Скрипты на bash

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

Чтобы запустить скрипт из консоли, нужно ввести команду bash или sh .

Начало скрипта. Чтобы система поняла, что файл — скрипт, его первая строка должна быть такой:

После ! пишется путь к интерпретатору bash, который по умолчанию выглядит так, как указано в коде. Если в системе другой путь, соответственно меняется и запись в начале скрипта. Узнать этот путь можно с помощью команды в терминале:

Расширение для файла скрипта традиционно указывается как .sh. На самом деле система сможет выполнить файл и с другим расширением и даже без него. В первую очередь .sh указывается для удобства пользователя, чтобы ему было легче понять, что файл — bash-скрипт.

Переменные. Скриптовый язык поддерживает переменные. У них нет типа, а объявляются они так:

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

  • $0 — передает имя скрипта;
  • $1, $2 и так далее — аргументы, которые пользователь может передать в скрипт, когда открывает его.

Обратиться к созданной переменной внутри скрипта можно так: $. Она используется для вычислений, ввода-вывода и других действий.

Условия и циклы. Скрипт может выполнять действия, если соблюдается какое-либо условие. Для этого используется конструкция:

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

IT-специалист с нуля

Наш лучший курс для старта в IT. За 2 месяца вы пробуете себя в девяти разных профессиях: мобильной и веб-разработке, тестировании, аналитике и даже Data Science — выберите подходящую и сразу освойте ее.

картинка (75)

Статьи по теме:
Анализируем требования к опыту, образованию, возрасту и навыкам

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

Основные сведения о shell-скриптах в Терминале на Mac

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

Shell-скрипт — это текстовый файл, который содержит одну или несколько команд UNIX. Вместо того чтобы вручную поочередно вводить команды в командной строке, Вы запускаете shell-скрипт, который выполняет все эти команды.

Плюс в том, что в одном shell-скрипте можно объединить большое количество стандартных задач. Это обеспечивает экономию Вашего времени и сокращает количество возможных ошибок при многократном выполнении однотипных задач. Кроме того, shell-скрипты можно автоматизировать с помощью таких инструментов, как launchd или Apple Remote Desktop.

Shell-скрипт начинается с комбинации символов, которая сообщает, что это shell-скрипт. Это символы # и ! (вместе называемые shebang), после которых указывается оболочка shell, в которой должен быть выполнен скрипт. Например, вот первая строка shell-скрипта, который будет запущен в sh :

Рекомендуется снабжать shell-скрипты комментариями. Чтобы добавить комментарий, начните строку со знака номера (#). Каждая строка комментария должна начинаться со знака номера:

#This program returns the #contents of my Home folder

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

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

Инструкции по написанию shell-скриптов см. в статье Основные сведения о shell-скриптах на веб‑сайте Apple для разработчиков.

Shell-скриптинг

Shell-скриптинг — написание сценариев командного интерпретатора пользователя (sh, bash, csh).

Действия, которые пользователь выполняется в оболочке, можно записать в файл, а потом выполнять их как единое целое. Такой файл называется сценарием или скриптом командного интепретатора (shell script). В самом простейшем случае скрипты создаются для того, чтобы сохранить некоторую повторяющуюся последовательность действий и в будущем вызывать её одной командой. Это простейшая, но далеко не единственная область применения скриптов. Вообще, скрипт — главный инструмент для автоматизации управления операционной системой.

Многие вещи можно сделать средствами самого интерпретатора, но, как правило, работа выполняется с помощью программ операционной системы, которые используются и как управляющие механизмы (например, для работы с файлами), и как расширители возможностей интерпретатора, например, такие как sed и awk, которые помогают манипулировать текстовыми потоками.

[править] Стиль

Стилистические и синтактические правила, которых рекомендуется придерживаться, при написании shell-скриптов (Bourne shell и bash):

  • https://google.github.io/styleguide/shell.xml
  • http://www.inquisitor.ru/doc/coding-style-shell.html
  • http://www.cyberciti.biz/faq/bash-shell-script-function-examples/

[править] Вопросы и ответы

[править] Как сделать завершение скрипта при возникновении ошибки

По умолчанию скрипт не прерывается в случае возникновения ошибки при выполнении его команд.

Обрабатывать каждую ошибку вручную можно так:

команда || exit $?

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

Можно сделать, что он будет завершаться, как только код выполнения командной строки [1] будет отличен от нуля.

%$ set -e

Теперь, например, при выполнении команды false скрипт будет завершаться. С другой стороны,

false || true

не приведёт к завершению, а

false ; true

Использование режима set -e обычно сопровождается назначением обработчика ошибки с помощью trap ERR. Обработчик вызывается перед тем как завершить интерпретатор при возникновении ошибки по set -e. Например, нам нужно удалить временные файлы перед завершением (условная функция cleanup_temp):

%$ trap cleanup_tmp ERR

Подробнее об этих и других способах обработки ошибок:

  • Error handling in BASH (англ.)

[править] Как в скрипте (bash) обратиться к последнему аргументу?

Если же эта конструкция не поддерживается, тогда нужно уже извращаться с eval, перебирать аргументы с помощью shift, одним словом, мудрить. Примеры вариантов решения: [1].

[править] Как узнать в каком каталоге находится текущий исполняемый скрипт?

DIR="$( cd "$( dirname "$" )" && pwd )"

Источник: [2]

[править] Как сделать чтобы команда убивалась по таймауту?

Можно поставить программу timeout, которая это делает.

$ apt-get install timeout $ timeout 10 sleep 20

Если программы ставить не хочется, то можно использовать такой трюк:

( cmdpid=$BASHPID; (sleep 10; kill $cmdpid) & exec ping www.goooooogle.com )

[править] Если bash/другой шелл такой классный и мощный, так может всё на нём писать? Чего в нём не хватает?

[править] Дополнительная информация

  • Advanced Bash-Scripting Guide (англ.)
  • Advanced Bash-Scripting Guide перевод (частичный)
  • Shell Script Mistakes (англ.) несколько частов встречающихся стилистических ошибок при написании шелл-скриптов

[править] Примечания

  1. ↑ Здесь под командной строкой понимаются синтаксические конструкции, разделённые (;) или переводом строки
Интерфейс командной строки
Основы Потоки ввода/вывода • Командная строка
Пользовательское окружение Оболочка интерпретатора • Приглашение командного интерпретатора • bash_completion • shopt
Скриптинг Скриптинг • Интерпретатор • Shebang • Shell-скриптинг • shell-framework • expect • awk • sed

Shell script

Командная оболочка UNIX (англ. Unix shell , часто просто «шелл» или «sh») — командный интерпретатор, используемый в операционных системах семейства POSIX-совместимые оболочки, восходящие к Bourne shell, появившемуся в Unix Version 7.

Разновидности

  • sh — оригинальный Bourne shell.
  • BSD, имеет Си-образный синтаксис и не является
  • ksh — клон Bourne shell, разработанный Дэвидом Корном из AT&T Labs (отсюда и её название — KornShell).
  • pdksh — открытая (почти целиком является общественным достоянием, отсюда и буквы «pd» — от английского «public domain»)[1] реализация ksh.
  • zsh — другие современные клоны Bourne shell.
  • busybox — современные микро-версии, предназначенные для встраиваемых систем, а также используемые в мини-дистрибутивах.

Программирование

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

См. также

Ссылки

  • KornShell (англ.) . Проверено 31 октября 2008.
  • Zsh (англ.) . Проверено 31 октября 2008.

ash • sh • csh • dash • es shell • fish • ksh • psh • rsh • Scsh • Sash • rc • Thompson shell • zsh • busybox • прочие…

Wikimedia Foundation . 2010 .

  • Sharp Corporation
  • Shepherdia argentea

Полезное

Смотреть что такое «Shell script» в других словарях:

  • Shell Script — Shell Script, unter Unix eine Datei, die Befehlsaufrufe für die Unix Shell enthält … Universal-Lexikon
  • Shell script — This article is about scripting in UNIX like systems. For batch programming in DOS, OS/2 and Windows, see Batch file. For batch programming in Windows PowerShell shell, see Windows PowerShell#Scripting. A shell script is a script written for the… … Wikipedia
  • shell script — apvalkalo scenarijus statusas T sritis informatika apibrėžtis ↑Tekstinės sąsajos apvalkalo komandų rinkinys (failas). DOS operacinėje sistemoje vadinamas ↑komandų failu. atitikmenys: angl. shell script ryšiai: dar žiūrėk – komandų failas dar… … Enciklopedinis kompiuterijos žodynas
  • shell script — noun A prewritten list of commands, and perhaps other control information, to be executed (interpreted) by a shell or other command interpreter. Syn: batch file … Wiktionary
  • Shell (computing) — A shell is a piece of software that provides an interface for users of an operating system which provides access to the services of a kernel. However, the term is also applied very loosely to applications and may include any software that is… … Wikipedia
  • Shell de UNIX — Este artículo trata sobre el intérprete típico de Unix. Para otros usos de este término, véase terminal (informática) . Pantalla durante una sesión muestra Bash, tomada en Gentoo Linux. Una Shell de Unix o también shell, es el término usado en… … Wikipedia Español
  • script — 1. noun /skrɪpt/ a) Written characters; style of writing. b) Type made in imitation of handwriting. Syn: manuscript, handwriting, cursive … Wiktionary
  • Script (Unix) — script ist ein Kommandozeilenprogramm unter Unix, das alle Ein und Ausgaben eines Terminals in eine Datei aufzeichnet. Benutzung Das Programm wird in der Unix Shell wie folgt benutzt: $ script [file] Weitere Optionen sind möglich. Je nach… … Deutsch Wikipedia
  • Shell sort — is a sorting algorithm that is a generalization of insertion sort, with two observations: *insertion sort is efficient if the input is almost sorted , and *insertion sort is typically inefficient because it moves values just one position at a… … Wikipedia
  • Shell-Skript — Skriptsprachen (häufig auch Scriptsprachen) sind Programmiersprachen, die vor allem für kleine, überschaubare Programmieraufgaben gedacht sind. Sie verzichten oft auf bestimmte Sprachelemente, deren Nutzen erst bei der Bearbeitung größerer… … Deutsch Wikipedia
  • Обратная связь: Техподдержка, Реклама на сайте
  • �� Путешествия

Экспорт словарей на сайты, сделанные на PHP,
WordPress, MODx.

  • Пометить текст и поделитьсяИскать в этом же словареИскать синонимы
  • Искать во всех словарях
  • Искать в переводах
  • Искать в ИнтернетеИскать в этой же категории

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

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