Командная оболочка (интерпретатор) bash является самой популярной в Linux: пользователь вводит команду, bash ищет программу/скрипт, соответствующую команде, в каталогах, указанных в переменной окружения PATH и запускает ее в случае обнаружения, передавая указанные пользователем параметры, в противном случае выводит сообщение о невозможности/отсутствии выполнения команды.

Файлы параметров:

/etc/profile - глобальные настройки bash (влияют на всю систему)
~/.bash_profile - параметры bash, обрабатываются при входе в систему
~/.bashrc - обрабатываются при запуске дочерней оболочки
~/.bash_logout - обрабатываются при выходе из системы
  • Файл ~/.bash_profile часто отсутствует, либо содержит одну строку, указывающую на .bashrc, который стоит считать основным конфигурационным файлом для каждого определенного пользователя (находится в домашнем каталоге (~) пользователя и влияет только на его оболочку), на всех пользователей могут влиять настройки в /etc/profile.
  • Файл ~/.bash_history хранит историю команд, введенных пользователем.

В файле .bashrc задаются псевдонимы команды (alias), определяется внешний вид приглашения командной строки, задаются значения переменных окружения.

# псевдонимы команды (замена команды ввода)
alias h='fc -l'
alias ll='ls -laFo'
alias g='egrep -i'
# Переменная PS1 отвечает за внешний вид командной строки
пользователь@компьютер:рабочий_каталог    # по умолчанию PS1='\u@\h:\w$'
    # модификаторы
    \a    # ASCII-символ звонка (код 07)
    \d    # дата в формате "день недели, месяц, число"
    \h    # имя компьютера до первой точки
    \H    # полное имя компьютера
    \j    # количество задач, запущенных в оболочке в данное время
    \l    # название терминала
    \n    # символ новой строки
    \r    # возврат каретки
    \s    # название оболочки
    \t    # время в 24-часовом формате (ЧЧ: ММ: СС)
    \T    # время в 12-часовом формате (ЧЧ: ММ: СС)
    \@    # время в 12-часовом формате (am/pm)
    \u    # имя пользователя
    \v    # версия bash (сокращенная версия)
    \V    # версия bash (полная версия: номер релиза, номер патча)
    \w    # текущий каталог (полный путь)
    \W    # текущий каталог (только название каталога, без пути)
    \!    # номер команды в истории
    \#    # системный номер команды
    \$    # если UID пользователя 0 вывод #, иначе $
    \\    # обратный слэш
    $ ( )    # подстановка внешней команды
PS1=’[\u@\h] $(date +%m/%d/%y) \$’     # пример альтернативного приглашения
export <env>    # установить переменную окружения

Автоматизация при помощи скриптов bash (сценарии):

Первой строкой в файле сценария необходимо указать программу для его обработки.

#!/bin/bash
# комментарий
echo "Привет, мир!"

Далее необходимо сохранить сценарий, например, как script и дать возможность выполнения.

chmod +x script # сделаем файл исполняемым
./script    # запустим наш сценарий
cp ./script /usr/bin    # добавим сценарий в каталог PATH для выполнения по команде
sh scriptname    # запуск сценария, либо bash scriptname (не рекомендуется)
# рекомендуется дать права на чтения и на выполнение файла сценария
chmod 555 scriptname    # права для любого пользователя
chmod +rx scriptname    # права для любого пользователя
chmod u+rx scriptname    # права только для владельца сценария
./scriptname    # стандартный запуск сценария
# объявление переменной в сценарии

переменная=значение    # до и после = не должно быть пробелов
ADDRESS=ww.dkws.org.ru   # пример объявления
echo $ADDRESS    # использование переменной
read ADDRESS    # прочитать с клавиатуры значение переменной
ADDRESS='hostname'    # прочитать значение с вывода программы hostname
# переменные окружения: спец. переменные, содержащие служебные данные
BASH    # полный путь до файла командной оболочки bash
BASH_VERSION    # версия bash
HOME    # домашний каталог пользователя, запустившего сценарий
HOSTNAME    # имя компьютера
RANDOM    # случайное число от 0 до 32767
OSTYPE    # тип операционной системы
PWD    # текущий каталог
PS1    # строка приглашения
UID    # ID пользователя, запустившего сценарий
GID    # ID группы пользователя, запустившего сценарий
USER    # имя пользователя, запустившего сценарий
# установка собственной переменной окружения
$ADDRESS=www.dkws.org.ru   # присваиваем значение
export $ADDRESS    # экспортируем переменную
# передача параметров сценарию команда/сценарий параметры    
# пример вызова сценария или команды
    $0    # содержит имя сценария
    $n    # содержит значение параметра под номером n
    $#    # содержит количество переданных параметров

# Анализ параметров на примере case
case "$1" in
    start)
        # действие при получении параметра start
        echo "запустить сетевой сервис"
        ;;
    stop)
        # действие при получении параметра stop
        echo "остановить сетевой сервис"
        ;;
    *)
        # действия в остальных случаях (например, подсказка об использовании сценария)
        echo "Usage: $0 {start|stop}"
        exit    1
        ;;
esac

# массивы в сценариях
ARRAY[0]=1;
ARRAY[1]=2;
echo $ARRAY[0];

# циклы (for/while/until/select)
# синтаксис цикла for
for переменная in список    # при каждой итерации будет присвоен очередной элемент списка
do
    команды
done
# пример цикла for 
for n in 1 2 3;
do
echo $n;
done    # выведет на экран 1 2 3 

# синтаксис цикла while (выполнение команд, пока истинно заданное условие)
while условие
do
    команды
done
# пример
n=1
while [ $n -lt 4 ]
do
    echo "$n "
    n=$(( $n+1 ));
done

# условные операторы (if/case)
# синтаксис оператора if (выполнить список команд при истинном условии)
if условие_1 then
    команды_1
elif условие_2 then
    команды_2
elif условие_N then
    команды_N
else
    команды_N+1
fi
# условия в if
    [ N==10 ]    # переменная N=10
    [ N!=10 ]    # переменная N не равна 10
    -lt    # меньше
    -gt    # больше
    -le    # меньше или равно
    -ge    # больше или равно
    -eq    # равно (вместо ==)
[ переменная выражение значение|переменная ]    # применение условий
    [ $N -lt 10 ]    # N меньше 10
    [ $N -lt $A ]    # N меньше А
# выражения для проверки существования файла/каталога
-e файл    # условие истинно, если файл существует
-d каталог    # условие истинно, если каталог существует
-x файл    # условие истинно, если файл является исполнимым

# синтаксис оператора case
case переменная in
значение_1) команды_1 ;;
...
значение_N) команды_N ;;
*) команды_по_умолчанию ;;
esac
# значения по очереди сравниваются с приведенными в списке, а при совпадении выполняются команды, если совпадений не было, то выполняются команды по умолчанию

# использование функций
имя () { список; }
# пример использования функции
list_txt()
{
echo "Выводим текстовые файлы"
ls *.txt
}

results matching ""

    No results matching ""