Интуитивному пониманию можно помочь путем наблюдения этого шаблона:
cmd # fork; execute cmd in child
cmd < /dev/null # fork; redirect stdin and execute cmd in child
exec cmd # execute cmd; no fork
exec cmd < /dev/null # redirect stdin and execute cmd; no fork
exec < /dev/null # redirect stdin; no fork and no execution
Посмотрите, exec
не действительно вещь. Это - антивещь. Это не означает, "выполняются" вообще. Это означает, "не разветвляются". Это заставляет выполнение перенаправления и/или команды команды произойти в текущем процессе.
Соответствие тексту между <set>
и следующее <
. Обратная косая черта требуется, чтобы устранять особое значение &
для sed.
sed 's/<set>.*</<set>Tonight\'s Menu</' yourfile