Bash'de stderr stdout'a nasıl yönlendirilir

How Redirect Stderr Stdout Bash



Linux'taki komutlar, kullanıcıdan bir dosya veya herhangi bir öznitelik olabilecek bazı girdileri alır ve yürütüldüğünde standart çıktı adı verilen çıktılar verir. Standart çıktı, bir başarı çıktısı veya bir hata çıktısı olabilir; her ikisi de terminal ekranınızda görüntülenecektir. Ancak bazı durumlarda, kodu test etmek veya hata ayıklamak için standart çıktıları bir dosyada depolamak istersiniz. Linux'ta bu çıktılar bir dosyaya yeniden yönlendirilebilir ve onu yakalama işlemine yeniden yönlendirme denir.







Linux'taki her işlem üç veri akışı üretir: stdin, stdout ve stderr:



  • standart : Kullanıcıdan klavye aracılığıyla girdi alır
  • standart : Ekranda çıktıyı görüntüler
  • standart : Ekranda hata bilgilerini gösterir

Her veri akışının sayısal bir kimliği vardır:



Sayısal Kimlik İsim
0 standart
1 standart
2 standart

Yeniden yönlendirmeyi biraz daha ayrıntılı olarak açıklayalım:





Bash'de Standart çıktı ve Standart hata nasıl yönlendirilir:

Komutun standart çıktısını yeniden yönlendirmek için, > işaretinden daha büyük bir yeniden yönlendirme operatörü ile 1 kullanacağız:

$ls 1>stdout.txt

Yukarıdaki komut bir dosya oluşturacak ve ls komutunun standart çıktısını stdout.txt dosyasına yerleştirecektir.



stdout.txt dosyasını okumak için şunu kullanın:

$kedistdout.txt

Standart hatayı şu komutu kullanarak da bir dosyaya yönlendirebiliriz:

$kedidosyam.txt2>stderr.txt

stderr.txt dosyasını görüntülemek için şunu kullanın:

$kedistderr.txt

Kullanım 2'nin > işaretinden daha büyük olduğundan emin olun. Dizinde myfile.txt dosyası olmadığı için cat komutu stderr.txt dosyasına eklenecek bir hata verecektir.

Bu standart çıktılar ayrıca tek bir komutla yeniden yönlendirilebilir, şunu kullanın:

$ls 1>stdout.txt2>stderr.txt

ls komutunun çıktısı şuraya yazılacaktır: stdout.txt dosya, ancak stderr.txt hata olmayacağı için boş kalacaktır.

Şimdi stderr.txt için yapalım:

$kedidosyam.txt1>stdout.txt2>stderr.txt

stderr.txt dosyasını okumak için aşağıda belirtilen komutu kullanın.

$kedistderr.txt

Ve elbette, stdout.txt boş olacaktır.

Çözüm :

Yürütülmesi üzerine Linux komutu, başarılı bir çıktı veya bir hata çıktısı olabilecek standart çıktı verir. Genellikle bu çıktılar, yeniden yönlendirme operatörleri kullanılarak yeniden yönlendirilemez; > işaretiyle belirli sayısal kimlikler kullanmamız gerekiyor. Bu kılavuzda, standart çıktıyı örneklerle bir dosyaya yönlendirmek için bu sayısal tuşların nasıl kullanılacağını öğrendik.