Bagaimana cara menggabungkan stdout dan stderr untuk shell yang berbeda?


18

Saya tahu jawaban untuk beberapa kerang, misalnya dengan cmd.exeAnda dapat:

some.exe > out.txt 2>&1

Bagaimana Anda mencapai hal yang sama untuk shell lain (bash, ksh, tcsh, powershell, dll)?

Jawaban:


16

Kulit ikan

Untuk mengarahkan ulang output standar dan kesalahan standar ke file all_output.txt, Anda dapat menulis:

echo Hello > all_output.txt ^&1

3
jika piping output ke perintah selanjutnya, gunakan 2> | sebagai gantinya: echo Hello 2> | kurang
Jeffrey04

Sintaks perpipaan mungkin telah berubah. Kulit ikan saya menggunakan sintaks yang sama "^ & 1" untuk keduanya.
Keith Bentrup

2>&1juga berfungsi - ^pada dasarnya adalah singkatan ikan >2. Perhatikan bahwa 2>| lessatau ^| lessdengan sendirinya pipa hanya stderr; untuk menyalurkan kami dan err, lakukan^&1 | less
Beni Cherniavsky-Paskin

Sintaks singkatan untuk mengarahkan / menyalurkan baik keluar dan salah masih dalam diskusi github.com/fish-shell/fish-shell/issues/110
Beni Cherniavsky-Paskin


2

Dalam Powershell persis sama:

2> & 1 Mengirim kesalahan ke proses get none, powershell 2> & 1
          aliran keluaran sukses.

(dari about_Redirection).

In bashdan ksh setidaknya saya juga tahu cara kerjanya seperti ini.

Tampaknya menjadi konvensi umum.

Cara cepat untuk mengetahuinya adalah dengan membuka halaman manual shell dan melakukan pencarian &1(dengan /dan kemudian mengetik &1). Ini jarang terjadi dalam konteks lain.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.