Farklı mermiler için stdout ve stderr'ı nasıl birleştiririm?


18

Bazı mermilerin cevabını biliyorum, örneğin cmd.exe:

some.exe > out.txt 2>&1

Aynı şeyi diğer mermiler (bash, ksh, tcsh, powershell, vb.) İçin nasıl elde edersiniz?

Yanıtlar:


16

Balık kabuğu

Hem standart çıktıyı hem de standart hatayı all_output.txt dosyasına yeniden yönlendirmek için şunu yazabilirsiniz:

echo Hello > all_output.txt ^&1

3
çıkış sonraki komuta boru ise, 2> | bunun yerine: yankı Merhaba 2> | daha az
Jeffrey04

Boru sözdizimi değişmiş olabilir. Balık kabuğum her ikisi için aynı sözdizimini "^ & 1" kullanır.
Keith Bentrup

2>&1ayrıca çalışır - ^aslında balık kısayoludur >2. Unutmayın 2>| lessveya ^| lesstek başına sadece stderr boruları ; bizim ve err boru, yapmak^&1 | less
Beni Cherniavsky-Paskin

Hem dışarı hem de hata yönlendirme / borulama için sözdizimi kısayolları hala tartışma altındadır github.com/fish-shell/fish-shell/issues/110
Beni Cherniavsky-Paskin


2

In Powershell tam olarak aynıdır:

2> & 1 Get-process hiçbirine hata göndermez, powershell 2> & 1
          başarı çıktı akışı.

(itibaren about_Redirection).

Gelen bashve Ksh en azından ben de bu şekilde çalışır biliyorum.

Ortak bir sözleşme gibi görünüyor.

Bunu öğrenmenin hızlı bir yolu, kabuğun man sayfasını açmak ve &1(ile /ve sonra yazarak &1) bir arama yapmaktır . Bu nadiren başka bağlamlarda meydana gelir.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.