<> 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.