SlideShare a Scribd company logo
1 of 19
Download to read offline
Bash Scripting
ilya.lapitan@gmail.com
Bash Scripting
Указываем командный интерпретатор:
#! [путь_к_интерпретатору]
Посмотреть список доступных:
cat /etc/shells
Для комментариев используем конструкцию:
#[текст_комментария]
Выполняем скрипт в режиме отладки (для bash):
#!/bin/bash -x
Bash Scripting
Выполняем скрипт:
- ./ [скрипт]
- [командный_интерпретатор] [скрипт]
- source [скрипт]
Bash Scripting
3 файловых дескриптора
Числовое значение Имя POSIX.1
0 стандартный ввод
stdin
STDIN_FILENO
1 стандартный вывод
stdout
STDOUT_FILENO
2 стандартный поток
ошибок
stderr
STDERR_FILENO
Bash Scripting
Перенаправляем вывод:
[команда] > [файл]
Перенаправляем ввод:
[команда] < [файл]
Перенаправляем заданный дескриптор в файл:
[команда] * [дескриптор] > [файл]
Перенапрвляем дескрипторы:
[команда] * [дескриптор]>& [дескриптор]
Bash Scripting
Конвеерная обработка (pipe - труба):
[команда_1] | [команда_2] | [команда_3]
Bash Scripting
Переменные:
-не имеют типов данных
-переменная может включать число, символ и строку
символов
-нет необходимости объявлять переменную,
достаточно просто присвоить значение
Bash Scripting
Типы переменных по доступу:
- глобальные - переменные среды окружения, которые
доступны во всех оболочках
- локальные - доступны только в локальной оболочке
Типы переменных по содержимому:
- строки
- целые числа
- константные значения
- массивы
Bash Scripting
Инициализация переменной:
[имя_переменной] = [значение_переменной]
Локальная переменная:
local [имя_переменной] = [значение_переменной]
Доступ к переменной:
$[имя_переменной]
Безымянная переменная:
[команда] $([команда])
Bash Scripting
Задаем тип переменной:
declare [имя] = [значение_переменной]
Константная переменная:
readonly [имя] = [значение_переменной]
Bash Scripting
Массивы:
[имя] = ([значение_1] [значение_2] [значение_N])
Удаляем значение:
unset [имя][[индекс]]
Удаляем массив:
unset [имя][*]
Просмотреть весь массив:
echo ${[имя][*]}
Bash Scripting
Условный оператор:
If:
if [ [логическое_выражение] ]; then
[команды_на_выполнение_если_истина]
fi
If - Else:
if [ [логическое_выражение] ]; then
[команды_на_выполнение_если_истина]
else
[команды_на_выполнение_если_ложь]
fi
Bash Scripting
Case:
case [переменная] in
[значение_1])
[команды_на_выполнение]
break
;;
[значение_N])
[команды_на_выполнение]
break
;;
esac
Bash Scripting
Операторы цикла:
For:
for [переменная] in [массив_объектов]; do
[команды_на_выполнение]
$[переменная]
done
While:
while [ [логическое_выражение] ]; do
[команды_на_выполение]
done
Bash Scripting
Until:
until [ [логическое_выражение] ]; do
[команды_на_выполнение]
done
Bash Scripting
Операторы отношения:
-lt <
-gt >
-le <=
-ge >=
-eq ==
-ne !=
Bash Scripting
Функции:
без параметров:
function [имя_функции] {
[команды_на_выполнение]
}
c параметрами:
function [имя_функции] {
[команды_на_выполнение]
$[номер_переданного_параметра]
}
Bash Scripting
Вывод:
- echo
echo [строка]
Note: используются для простого вывода.
- printf
Note: используется для форматированного вывода.
Bash Scripting
Ввод:
- read
read [переменная]

More Related Content

What's hot

04 web server_deployment_ru
04 web server_deployment_ru04 web server_deployment_ru
04 web server_deployment_rumcroitor
 
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)Ontico
 
Кеширование. Api. http 1.1 (rfc 2616)
Кеширование. Api. http 1.1 (rfc 2616)Кеширование. Api. http 1.1 (rfc 2616)
Кеширование. Api. http 1.1 (rfc 2616)Artjoker
 
Работа с большими файлами под перлом‎
Работа с большими файлами под перлом‎Работа с большими файлами под перлом‎
Работа с большими файлами под перлом‎mayperl
 
17 - Web-технологии. Real Time сообщения
17 - Web-технологии. Real Time сообщения17 - Web-технологии. Real Time сообщения
17 - Web-технологии. Real Time сообщенияRoman Brovko
 
Linux basics. Занятие 3.
Linux basics. Занятие 3. Linux basics. Занятие 3.
Linux basics. Занятие 3. Vikentsi Lapa
 
Serhii Aleynikov - Remote Forensics of a Linux Server Without Physical Access
Serhii Aleynikov - Remote Forensics of a Linux Server Without Physical AccessSerhii Aleynikov - Remote Forensics of a Linux Server Without Physical Access
Serhii Aleynikov - Remote Forensics of a Linux Server Without Physical AccessNoNameCon
 
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2rit2011
 
Web осень 2013 лекция 1
Web осень 2013 лекция 1Web осень 2013 лекция 1
Web осень 2013 лекция 1Technopark
 
2014.10.15 Сергей Бурладян, Avito.ru
2014.10.15 Сергей Бурладян, Avito.ru2014.10.15 Сергей Бурладян, Avito.ru
2014.10.15 Сергей Бурладян, Avito.ruNikolay Samokhvalov
 
Находим и эксплуатируем уязвимости. Теория и практические примеры уязвимых ре...
Находим и эксплуатируем уязвимости. Теория и практические примеры уязвимых ре...Находим и эксплуатируем уязвимости. Теория и практические примеры уязвимых ре...
Находим и эксплуатируем уязвимости. Теория и практические примеры уязвимых ре...Kristina Pomozova
 
Александр Крашенинников "Hadoop High Availability: опыт Badoo"
Александр Крашенинников "Hadoop High Availability: опыт Badoo"Александр Крашенинников "Hadoop High Availability: опыт Badoo"
Александр Крашенинников "Hadoop High Availability: опыт Badoo"IT Event
 
02 - Hadoop. Архитектура HDFS
02 - Hadoop. Архитектура HDFS02 - Hadoop. Архитектура HDFS
02 - Hadoop. Архитектура HDFSRoman Brovko
 
Дмитрий Перлов openSUSE Build Server: tips & tricks кросс-дистрибутивной сб...
Дмитрий Перлов openSUSE Build Server: tips & tricks кросс-дистрибутивной   сб...Дмитрий Перлов openSUSE Build Server: tips & tricks кросс-дистрибутивной   сб...
Дмитрий Перлов openSUSE Build Server: tips & tricks кросс-дистрибутивной сб...Minsk Linux User Group
 

What's hot (19)

04 web server_deployment_ru
04 web server_deployment_ru04 web server_deployment_ru
04 web server_deployment_ru
 
Сокеты
СокетыСокеты
Сокеты
 
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
 
работа с файлами в с++
работа с файлами в с++работа с файлами в с++
работа с файлами в с++
 
Кеширование. Api. http 1.1 (rfc 2616)
Кеширование. Api. http 1.1 (rfc 2616)Кеширование. Api. http 1.1 (rfc 2616)
Кеширование. Api. http 1.1 (rfc 2616)
 
Работа с большими файлами под перлом‎
Работа с большими файлами под перлом‎Работа с большими файлами под перлом‎
Работа с большими файлами под перлом‎
 
17 - Web-технологии. Real Time сообщения
17 - Web-технологии. Real Time сообщения17 - Web-технологии. Real Time сообщения
17 - Web-технологии. Real Time сообщения
 
Linux basics. Занятие 3.
Linux basics. Занятие 3. Linux basics. Занятие 3.
Linux basics. Занятие 3.
 
Serhii Aleynikov - Remote Forensics of a Linux Server Without Physical Access
Serhii Aleynikov - Remote Forensics of a Linux Server Without Physical AccessSerhii Aleynikov - Remote Forensics of a Linux Server Without Physical Access
Serhii Aleynikov - Remote Forensics of a Linux Server Without Physical Access
 
Administrarea DSpace
Administrarea DSpaceAdministrarea DSpace
Administrarea DSpace
 
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
 
Web осень 2013 лекция 1
Web осень 2013 лекция 1Web осень 2013 лекция 1
Web осень 2013 лекция 1
 
2014.10.15 Сергей Бурладян, Avito.ru
2014.10.15 Сергей Бурладян, Avito.ru2014.10.15 Сергей Бурладян, Avito.ru
2014.10.15 Сергей Бурладян, Avito.ru
 
Находим и эксплуатируем уязвимости. Теория и практические примеры уязвимых ре...
Находим и эксплуатируем уязвимости. Теория и практические примеры уязвимых ре...Находим и эксплуатируем уязвимости. Теория и практические примеры уязвимых ре...
Находим и эксплуатируем уязвимости. Теория и практические примеры уязвимых ре...
 
Александр Крашенинников "Hadoop High Availability: опыт Badoo"
Александр Крашенинников "Hadoop High Availability: опыт Badoo"Александр Крашенинников "Hadoop High Availability: опыт Badoo"
Александр Крашенинников "Hadoop High Availability: опыт Badoo"
 
Веб-сервер
Веб-серверВеб-сервер
Веб-сервер
 
Спецификация WSGI (PEP-333)
Спецификация WSGI (PEP-333)Спецификация WSGI (PEP-333)
Спецификация WSGI (PEP-333)
 
02 - Hadoop. Архитектура HDFS
02 - Hadoop. Архитектура HDFS02 - Hadoop. Архитектура HDFS
02 - Hadoop. Архитектура HDFS
 
Дмитрий Перлов openSUSE Build Server: tips & tricks кросс-дистрибутивной сб...
Дмитрий Перлов openSUSE Build Server: tips & tricks кросс-дистрибутивной   сб...Дмитрий Перлов openSUSE Build Server: tips & tricks кросс-дистрибутивной   сб...
Дмитрий Перлов openSUSE Build Server: tips & tricks кросс-дистрибутивной сб...
 

Viewers also liked

Google советы успешного поиска
 Google советы успешного поиска Google советы успешного поиска
Google советы успешного поискаIlya Lapitan
 
Стратегии выполнения тестов в Gradle
Стратегии выполнения тестов в GradleСтратегии выполнения тестов в Gradle
Стратегии выполнения тестов в GradleIlya Lapitan
 
Javaone 2013 moscow gradle
Javaone 2013 moscow gradleJavaone 2013 moscow gradle
Javaone 2013 moscow gradleEvgeny Borisov
 
Архивы в Java
Архивы в JavaАрхивы в Java
Архивы в JavaIlya Lapitan
 
Learn Java with Coursera
Learn Java  with  CourseraLearn Java  with  Coursera
Learn Java with CourseraIlya Lapitan
 
Apache Camel Lifecycle
Apache Camel LifecycleApache Camel Lifecycle
Apache Camel LifecycleIlya Lapitan
 
Apache Camel + Apache ActiveMQ persistence
Apache Camel + Apache ActiveMQ persistenceApache Camel + Apache ActiveMQ persistence
Apache Camel + Apache ActiveMQ persistenceIlya Lapitan
 
Date & Time in Java SE 8
Date & Time in Java SE 8Date & Time in Java SE 8
Date & Time in Java SE 8Ilya Lapitan
 

Viewers also liked (13)

Google советы успешного поиска
 Google советы успешного поиска Google советы успешного поиска
Google советы успешного поиска
 
Стратегии выполнения тестов в Gradle
Стратегии выполнения тестов в GradleСтратегии выполнения тестов в Gradle
Стратегии выполнения тестов в Gradle
 
Gradle
GradleGradle
Gradle
 
Enter the gradle
Enter the gradleEnter the gradle
Enter the gradle
 
Javaone 2013 moscow gradle
Javaone 2013 moscow gradleJavaone 2013 moscow gradle
Javaone 2013 moscow gradle
 
Архивы в Java
Архивы в JavaАрхивы в Java
Архивы в Java
 
Apache2
Apache2Apache2
Apache2
 
Amazon S3
Amazon S3 Amazon S3
Amazon S3
 
Learn Java with Coursera
Learn Java  with  CourseraLearn Java  with  Coursera
Learn Java with Coursera
 
Apache Camel Lifecycle
Apache Camel LifecycleApache Camel Lifecycle
Apache Camel Lifecycle
 
Maven lifecycle
Maven lifecycleMaven lifecycle
Maven lifecycle
 
Apache Camel + Apache ActiveMQ persistence
Apache Camel + Apache ActiveMQ persistenceApache Camel + Apache ActiveMQ persistence
Apache Camel + Apache ActiveMQ persistence
 
Date & Time in Java SE 8
Date & Time in Java SE 8Date & Time in Java SE 8
Date & Time in Java SE 8
 

Bash scripting

  • 2. Bash Scripting Указываем командный интерпретатор: #! [путь_к_интерпретатору] Посмотреть список доступных: cat /etc/shells Для комментариев используем конструкцию: #[текст_комментария] Выполняем скрипт в режиме отладки (для bash): #!/bin/bash -x
  • 3. Bash Scripting Выполняем скрипт: - ./ [скрипт] - [командный_интерпретатор] [скрипт] - source [скрипт]
  • 4. Bash Scripting 3 файловых дескриптора Числовое значение Имя POSIX.1 0 стандартный ввод stdin STDIN_FILENO 1 стандартный вывод stdout STDOUT_FILENO 2 стандартный поток ошибок stderr STDERR_FILENO
  • 5. Bash Scripting Перенаправляем вывод: [команда] > [файл] Перенаправляем ввод: [команда] < [файл] Перенаправляем заданный дескриптор в файл: [команда] * [дескриптор] > [файл] Перенапрвляем дескрипторы: [команда] * [дескриптор]>& [дескриптор]
  • 6. Bash Scripting Конвеерная обработка (pipe - труба): [команда_1] | [команда_2] | [команда_3]
  • 7. Bash Scripting Переменные: -не имеют типов данных -переменная может включать число, символ и строку символов -нет необходимости объявлять переменную, достаточно просто присвоить значение
  • 8. Bash Scripting Типы переменных по доступу: - глобальные - переменные среды окружения, которые доступны во всех оболочках - локальные - доступны только в локальной оболочке Типы переменных по содержимому: - строки - целые числа - константные значения - массивы
  • 9. Bash Scripting Инициализация переменной: [имя_переменной] = [значение_переменной] Локальная переменная: local [имя_переменной] = [значение_переменной] Доступ к переменной: $[имя_переменной] Безымянная переменная: [команда] $([команда])
  • 10. Bash Scripting Задаем тип переменной: declare [имя] = [значение_переменной] Константная переменная: readonly [имя] = [значение_переменной]
  • 11. Bash Scripting Массивы: [имя] = ([значение_1] [значение_2] [значение_N]) Удаляем значение: unset [имя][[индекс]] Удаляем массив: unset [имя][*] Просмотреть весь массив: echo ${[имя][*]}
  • 12. Bash Scripting Условный оператор: If: if [ [логическое_выражение] ]; then [команды_на_выполнение_если_истина] fi If - Else: if [ [логическое_выражение] ]; then [команды_на_выполнение_если_истина] else [команды_на_выполнение_если_ложь] fi
  • 13. Bash Scripting Case: case [переменная] in [значение_1]) [команды_на_выполнение] break ;; [значение_N]) [команды_на_выполнение] break ;; esac
  • 14. Bash Scripting Операторы цикла: For: for [переменная] in [массив_объектов]; do [команды_на_выполнение] $[переменная] done While: while [ [логическое_выражение] ]; do [команды_на_выполение] done
  • 15. Bash Scripting Until: until [ [логическое_выражение] ]; do [команды_на_выполнение] done
  • 16. Bash Scripting Операторы отношения: -lt < -gt > -le <= -ge >= -eq == -ne !=
  • 17. Bash Scripting Функции: без параметров: function [имя_функции] { [команды_на_выполнение] } c параметрами: function [имя_функции] { [команды_на_выполнение] $[номер_переданного_параметра] }
  • 18. Bash Scripting Вывод: - echo echo [строка] Note: используются для простого вывода. - printf Note: используется для форматированного вывода.
  • 19. Bash Scripting Ввод: - read read [переменная]