Я начинаю новичком Bash, но я пытаюсь изучить этот инструмент для работы на компьютерах на днях.
Сейчас я пытаюсь научиться описать файлы. Позвольте мне поделиться некоторыми из моих экспериментов:
#!/bin/bash
# Some dummy multi-line content
read -d '' colours <<- 'EOF'
red
green
blue
EOF
# File descriptor 3 produces colours
exec 3< <(echo "$colours")
# File descriptor 4 filters colours
exec 4> >(grep --color=never green)
# File descriptor 5 is an unlimited supply of violet
exec 5< <(yes violet)
echo Reading colours from file descriptor 3...
cat <&3
echo ... done.
echo Reading colours from file descriptor 3 again...
cat <&3
echo ... done.
echo Filtering colours through file descriptor 4...
echo "$colours" >&4
echo ... done. # Race condition?
echo Dipping into some violet...
head <&5
echo ... done.
echo Dipping into some more violet...
head <&5
echo ... done.
Некоторые вопросы spring, поскольку я вижу вывод, исходящий из вышеперечисленного:
- fd3 кажется "истощенным" после "потребления", автоматически ли он закрывается после первого использования?
- Как fd3 отличается от именованного канала? (что-то я уже посмотрел)
- когда команда
yes
начинает выполнять? после объявления fd? позже? - делает
yes
stop (CTRL-Z
или другое) и перезапускается, когда требуется больше фиолетового? - Как я могу получить PID
yes
? - Можно ли получить список "активных" fds?
- Очень интересное состояние гонки при фильтрации через fd4, можно ли его избежать?
- будет
yes
останавливаться только при яexec 5>&-
? - Имеет ли значение, закрываюсь ли я с
>&-
или<&-
?
Я остановлюсь здесь, пока.
Спасибо!
PS: частичные (пронумерованные) ответы в порядке. Я сам собираю разные кусочки. (хотя всеобъемлющий ответ от одного человека будет впечатляющим!)