Вячеслав Вячеславович Ткачев

BASH. Справочное пособие


Скачать книгу

echo -e "Hello Friend"

      Hello Friend

      $ echo -e "Hello\nFriend"

      Hello

      Friend

      $ echo -e "Hello Friend" \?

      Hello Friend ?

      2.7 Формы команд.

      –Выполнить команду в фоновом режиме $ cmd &.

      –Выполнить команды группой в текущей оболочке {cmd1; cmd2}.

      Пример 1

      $ { who;pwd; }

      max tty7 2019-08-12 05:17 (:0)

      /home/max

      –Выполнить команды в подоболочке (cmd1 ;cmd2)

      Пример 2

      $ (date; who; pwd) > logfile

      $ cat logfile

      Сб авг 3 09:03:21 MSK 2019

      max tty7 2019-08-03 08:23 (:0)

      /home/max

      –Передать выход cmd1 на вход cmd2. $ cmd1 | cmd2

      Пример 3, найти все файлы с расширением .sh и

      сделать их исполняемыми

      $ find *.sh -type f |xargs chmod +x

      Проверка

      $ ls -l *.sh

      –Результат команды cmd2 как аргумент cmd1.

      $ cmd1 `cmd2`

      $ cat `pwd`

      cat: /home/max: Это каталог

      –Подстановка команд сmd1 $(cmd2)

      Пример 4, создадим файл с датой

      $ touch f01 $(date)

      $ ls -l f01

      –rw-rw-r– 1 max max 0 авг 3 09:39 f01

      Числовой результат в качестве аргумента

      cmd $ (выражение)

      –Логическое И. $ cmd1 && cmd2

      –Логическое ИЛИ $ cmd1 || cmd2

      –Логическое НЕ $!cmd

      Пример 5

      $ date || touch f81.txt; ls f81.txt

      Сб 30 мая 2020 06:43:33 MSK

      ls: невозможно получить доступ к 'f81.txt': Нет такого файла или каталога

      $ date && touch f81.txt; ls f81.txt

      Сб 30 мая 2020 06:43:54 MSK

      f81.txt

      2.8 Простая переадресация ввода-вывода.

      Ниже отображены формы переадресации ввода-вывода

      cmd>file Направить результат команды в файл.

      Пример 1

      $ date >f30.txt; cat f30.txt

      Вт июн 11 22:10:14 MSK 2019

      cmd>> file Добавить результат команды в файл

      Пример 2

      $ date >>f30.txt; cat f30.txt

      Вт июн 11 22:10:14 MSK 2019

      Вт июн 11 22:11:45 MSK 2019

      cmd <file Взять входные данные для команды из

      файла.

      Пример 3

      $ cat <f30.txt

      Вт июн 11 22:10:14 MSK 2019

      Вт июн 11 22:11:45 MSK 2019

      Пример 4 Встраиваемая строка.

      Представить текст заданного слова в качестве входных данных для указанной команды.

      $ cat <<<"Privet"

      Privet

      Пример 5

      cmd <>file Записать в файл результат команды,

      содержимое файла не нарушается.

      $ date <> f30.txt; cat f30.txt

      Вт июн 11 21:58:17 MSK 2019

      Вт июн 11 17:15:49 MSK 2019

      cmd >| file Направить результат команды в файл

      переписав его содержимое.

      Пример 5 Направить результаты в файл, переписав его содержимое.

      $ date

      Пн 12 июл 2021 08:02:24 MSK

      $ cat >f30.txt

      Hello

      $ date >| f30.txt

      $ cat f30.txt

      Пн 12 июл 2021 08:03:13 MSK

      2.9 Переадресация ввода-вывода с использованием дескрипторов файлов.

      Файловый дескриптор – целое число,которое указывает доступ к файлу.

      Стандартный ввод stdin дескриптор 0.

      Стандартный вывод stdout дескриптор 1.

      Стандартный вывод ошибок stderr дескриптор 2. Клавиатура stdin файл.

      Экран stdout файл. Файловый дескриптор привязан к индефикатору процесса.

      Пример

      # sleep 1000 &

      [2] 5021

      # cd /proc/5021/fd ; ls

      0 1 2

      cmd >&n Направить результат команды в файл с

      дескриптором n.

      Пример