SORU
2 EKİM 2009, Cuma


Bash ile nasıl başka bir süreç içine standart hata boru miyim?

Başka işlemler içinde bir boru işlemi standart çıktıya standart giriş nasıl iyi bilinmektedir:

proc1 | proc2

Ama eğer proc2 için proc1 standart hata göndermek ve standart çıkış akımı konumuna nereye gitmek istersem ne olacak? bash çizgisinde bir komut olacağını düşünüyor:

proc1 2| proc2

Ama, ne yazık ki. Bunu yapmak için herhangi bir yolu var mı?

CEVAP
2 EKİM 2009, Cuma


Aşağıdaki hile kullanabilirsiniztakasstdout stderr. O zaman sadece normal bir kanal işlevi kullanın.

( proc1 3>&1 1>&2- 2>&3- ) | proc2

Sağlanan stdout stderr her iki başında aynı yere işaret etti, bu sana ihtiyacın olanı verecek.

Ne yapar:

  • 3>&1 yeni bir dosya geçerli olan 3 1 (özgün stdout) sadece bir yere kaydetmek için bir tanıtıcı oluşturur.
  • 1>&2- stdout geçerli dosya için 2 (orijinal stderr) 2 kapatır sapı ayarlar.
  • 2>&3- stderr geçerli dosya için 3 (özgün stdout) 3 kapatır sapı ayarlar.

Etkili sıralama görüşürüz swap komutu:

temp   = value1;
value1 = value2;
value2 = temp;

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BruBearBaby

    BruBearBaby

    25 Ocak 2011
  • MagicofRahat

    MagicofRahat

    13 Temmuz 2007
  • SegaAmerica

    SegaAmerica

    5 Mart 2008