Если ответ Джона Т был именно тем, что вы хотели, значит, вы неправильно сформулировали вопрос :)
Он кратко описал операторы <и>, но вы спросили о <>. Это редко используемый оператор, который я не уверен, что ожидал бы увидеть в LPIC-1, но только для записи (учитывая, что вы, вероятно, уже прошли этот экзамен):
Когда вы в интерактивном режиме запускаете команду без перенаправления, ее стандартный ввод, вывод и ошибка обычно присоединяются к tty; он будет читать со стандартного ввода и писать в стандартный вывод / стандартный вывод. Хотя вы можете этого и не ожидать, эти файловые дескрипторы обычно открываются для чтения и записи. Попробуйте запустить скрипт как
#!/bin/bash echo "I'm writing to stdin!" >&0
Запуск этого голого будет работать, по крайней мере, в текущих версиях Bash . Однако, когда вы используете редиректоры <и>, дескрипторы файлов stdin и stdout открываются только для чтения и записи соответственно, поэтому, если вы вызываете это с вводом, перенаправленным из файла -
./write-to-stdin < /tmp/some-input
это не будет работать (достаточно разумно). Если вы действительно хотите, чтобы программа, которую вы вызываете с перенаправлением, могла писать и писать в один дескриптор файла, <> выполнит эту работу.
./read-and-write-stdin <> /tmp/some-input-and-output ./read-and-write-stdout 1<> /tmp/some-input-and-output
Поскольку большинство программ ожидают, что stdin будет только дескриптором чтения, а stdout - дескриптором записи, вы, вероятно, сможете понять, почему это довольно редко полезно, но если вы пишете подчиненные скрипты (или используете функции), вы можете воспользоваться поведением сам.