Как мне объединить stdout и stderr для разных оболочек?


18

Я знаю ответ для некоторых оболочек, например, cmd.exeвы можете:

some.exe > out.txt 2>&1

Как добиться того же для других оболочек (bash, ksh, tcsh, powershell и т. Д.)?

Ответы:


16

Рыбная раковина

Чтобы перенаправить как стандартный вывод, так и стандартную ошибку в файл all_output.txt, вы можете написать:

echo Hello > all_output.txt ^&1

3
если передается вывод следующей команды, используйте 2> | вместо этого: echo Hello 2> | меньше
Jeffrey04

Синтаксис трубопровода мог измениться. Моя оболочка рыбы использует один и тот же синтаксис «^ & 1» для обоих.
Кит Бентруп

2>&1также работает - ^это, по сути, сокращение от рыбы >2. Обратите внимание, что 2>| lessили ^| lessтолько трубы только stderr; ^&1 | less
Бени Чернявский-Паскин

Сокращения синтаксиса для перенаправления /
Бени Чернявский-Паскин


2

В Powershell это точно так же:

2> & 1 Отправляет ошибки процессу get none, powershell 2> & 1
          поток вывода успеха.

about_Redirection).

По bashкрайней мере, я знаю, что так и работает.

Кажется, это общее соглашение.

Быстрый способ узнать об этом - открыть справочную страницу оболочки и выполнить поиск &1(с помощью /и затем набрать &1). Это редко происходит в других контекстах.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.