Я учусь на LPIC-1, и меня смущает & lt; & gt; оператор перенаправления. Я знаю, что официальное определение для этого состоит в том, что он «заставляет указанный файл использоваться как для стандартного ввода, так и для стандартного вывода» ... но я все еще в замешательстве.
Может ли кто-нибудь предоставить пример того, как / когда я буду использовать & lt; & gt; оператор перенаправления в Linux?
linux
command-line
redirection
Mike B
источник
источник
Ответы:
Примером может служить ситуация, когда вам необходимо предоставить входные данные программы, а также отправить куда-нибудь выходные данные (например, файл):
это запускает данные в
data.txt
через команду сортировки и отправляет выводresult.txt
, Это идентично выполнению этого:Думайте об этом так:
Средний файл подается в программу под номером 2, а результат в итоге отправляется на 3.
источник
Если ответ Джона Т был именно тем, что вы хотели, значит, вы неправильно сформулировали вопрос :)
Он кратко описал & lt; и & gt; операторы, но вы спрашивали о & lt; & gt ;. Это редко используемый оператор, который я не уверен, что ожидал бы увидеть в LPIC-1, но только для записи (учитывая, что вы, вероятно, уже прошли этот экзамен):
Когда вы в интерактивном режиме запускаете команду без перенаправления, ее стандартный ввод, вывод и ошибка обычно присоединяются к tty; он будет читать со стандартного ввода и писать в стандартный вывод / стандартный вывод. Хотя вы можете этого и не ожидать, эти файловые дескрипторы обычно открываются для чтения и записи. Попробуйте запустить скрипт как
Запуск этого голого будет работать, по крайней мере, в текущем удар версии. Тем не менее, когда вы используете & lt; и & gt; редиректоры, дескрипторы файлов stdin и stdout открываются только для чтения и записи соответственно, поэтому, если вы вызываете это с вводом, перенаправленным из файла -
Это не будет работать (достаточно разумно). Если вы действительно хотите, чтобы программа, которую вы вызываете с перенаправлением, могла писать и писать в один файловый дескриптор, & lt; & gt; сделаю работу.
Поскольку большинство программ ожидают, что stdin будет только дескриптором чтения, а stdout - дескриптором записи, вы, вероятно, сможете понять, почему это довольно редко полезно, но если вы пишете подчиненные скрипты (или используете функции), вы можете воспользоваться поведением сам.
источник