Yönlendirme, stdout ile stderr ve borular
Bir yedekleme betiğinin normal çıktısını ve hatalarını ayrı ayrı yakalar, ikisini birleştirir, gereksizi /dev/null’a atar, dosyadan girdi verir, here-doc ve here-string kullanır, tee ile hem ekrana hem dosyaya yazar, noclobber ile kazara üzerine yazmayı önlersin; sonunda betiği sessizce çalıştırıp günlüklerini ayırırsın. Hata ve kayıt sayıları her labda farklıdır.
Seviye 101 · 45 dk
Gece yedekleme betiği her sabah ekrana karmakarışık bir çıktı bırakıyor: başarılı kopyalar ve hatalar iç içe. Deniz bunları ayırmanı ve hataları ayrı bir dosyada toplamanı istiyor.
Her komutun üç standart kanalı vardır: stdin (0, girdi, varsayılan klavye), stdout (1, normal çıktı, varsayılan ekran) ve stderr (2, hata çıktısı, o da varsayılan ekran). İki çıktı aynı ekrana gittiği için karışık görünür; ama aslında ayrı borulardır ve ayrı ayrı yönlendirilebilir.
Benzetme: bir fabrikanın iki çıkışı var; biri ürünler, öteki hurdalar için. İkisi de aynı avluya döküldüğü için karışık görünüyor. Yönlendirme, her çıkışın önüne ayrı bir kamyon koymaktır. Çizim üç kanalı gösteriyor.
Bu derste ne yapacaksın
- Yalnızca normal çıktıyı yakala: >
- Hataları ayrı dosyaya: 2>
- İkisi birden: 2>&1 ve &>
- Kara delik: /dev/null
- Dosyadan girdi: <
- Here-doc ve here-string
- Hem ekrana hem dosyaya: tee
- Kazara üzerine yazmayı önle: noclobber
- Sessiz çalıştırma
- Kısa sınav
Kazanacağın beceriler
- > ve >> ile çıktıyı dosyaya yönlendirmek
- Hata çıktısını yönlendirmek (2>)
- İki çıktıyı birlikte yönlendirmek (2>&1, &>)
- Gereksiz çıktıyı atmak (/dev/null)
- Dosyadan girdi vermek (<)
- Here-doc ve here-string kullanmak
- Hem ekrana hem dosyaya yazmak (tee)
- Kazara üzerine yazmayı önlemek (noclobber)
- Kısa ve kesin bir bulgu yazmak
← Kısa görev: dağınık proje klasörünü düzenle ve kayıp dosyayı bul · Linux temelleri · Süzmek ve saymak: grep, sort, uniq, wc, cut →
Ücretsiz başla