<> file
відкриває файл (на файловий дескриптор 0 (стандартного введення) за замовчуванням, як <
) в читання + запис режимі без усічення і створення файлу , якщо він не існує заздалегідь .
Це відповідає O_RDWR|O_CREAT
прапорам, переданим open()
системному виклику. На противагу <
є O_RDONLY
і >
є O_WRONLY|O_CREAT|O_TRUNC
і є >>
O_WRONLY|O_CREAT|O_APPEND
.
Написання stdin для запису не часто корисне, оскільки програми, як правило, не пишуть на їх stdin. Зазвичай програми не сподіваються на читання та запис у дескрипторі файлів, який вони отримують при запуску; вони зазвичай читають з stdin (або дескриптора файлу, який вони відкривають) і записують у stdout або stderr (або дескриптор файлу, який вони відкривають самі).
<>
може використовувати його:
- Ви можете віддати перевагу
cat <> file
над, cat < file
якщо ви не хочете, щоб команда file
вийшла з ладу, якщо її немає, а file
натомість створена порожня .
Анонімний обрізний аспект <>
робить корисним перезаписування файлів на місці. Однак у цьому випадку ви, як правило, не використовуєте його в дескрипторі файлів 0:
printf xxx 1<> file
замінює перші 3 байти file
з xxx
.
У деяких системах, таких як Linux, <>
на іменованій трубі (FIFO) відкривається названа труба без блокування (не чекаючи, коли інший процес відкриє інший кінець) і забезпечує структуру труби залишеною. Наприклад у:
mkfifo pipe; sed 's/foo/bar/g' <> pipe
sed
обробляє вхідні дані з будь-якої кількості інших процесів, що записуються до нього, і ніколи не бачить eof
.