Як поєднати stdout і stderr для різних оболонок?


18

Я знаю відповідь на деякі снаряди, наприклад, з cmd.exeвами:

some.exe > out.txt 2>&1

Як ви досягаєте того ж для інших снарядів (bash, ksh, tcsh, powerhell тощо)?

Відповіді:


16

Рибна шкаралупа

Щоб перенаправити стандартний вихід і стандартну помилку на файл all_output.txt, ви можете написати:

echo Hello > all_output.txt ^&1

3
якщо трубопровід виводиться до наступної команди, використовуйте 2> | замість цього: echo Привіт 2> | менше
Jeffrey04

Синтаксис трубопроводів, можливо, змінився. Моя рибна оболонка використовує однаковий синтаксис "^ & 1" для обох.
Кіт Бентруп

2>&1також працює - ^це по суті стенограма риби для >2. Зверніть увагу , що 2>| lessабо ^| lessсам по собі трубах тільки STDERR; труба і наших, і помиляється, зробіть^&1 | less
Бені Чернявський-Паскін

Синтаксичні скорочення для переадресації / виправлення і помилок
Бені Чернявський-Паскін


2

У Powershell точно так само:

2> & 1 Відправляє помилки в get-process none, powershell 2> & 1
          успішний вихідний потік.

about_Redirection)

В bashі ksh принаймні я також знаю, що це працює так.

Здається, це звичайна конвенція.

Швидкий спосіб дізнатися про це - відкрити довідкову сторінку оболонки та здійснити пошук &1(за допомогою, /а потім набравши &1). Це рідко трапляється в інших контекстах.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.