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.
Пример