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.txtYukarı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.