Linux/Unix Örneklerinde Giriş Çıkış Yönlendirmesi
⚡ Akıllı Özet
Linux ve Unix'te yönlendirme, bir komutun girdiyi okuduğu veya çıktıyı gönderdiği yeri değiştirir, yani yer değiştirir.ping Büyüktür işareti, küçüktür işareti ve ekleme operatörü gibi operatörler kullanan dosyalar veya cihazlar için klavye ve ekran.

Yönlendirme, en kullanışlı özelliklerinden biridir. Linux Unix kabuğu da bu özelliği destekler çünkü bir komutun girdisini nereden okuyacağına ve çıktısını nereye göndereceğine karar vermenizi sağlar. Bu sayfa, örneklerle birlikte çıktı, girdi ve hata yönlendirmesini açıklamaktadır.
Yönlendirme Nedir?
Yönlendirme, Linux'ta bir komut çalıştırılırken standart giriş ve çıkış aygıtlarını değiştirmenize olanak tanıyan bir özelliktir. Herhangi bir işlemin temel iş akışı şu şekildedir: Linux komutu Yani bir girdi alır ve bir çıktı verir.
- Standart giriş (stdin) cihazı klavyedir.
- Standart çıkış (stdout) cihazı ekrandır.
Yönlendirme ile yukarıdaki standart giriş ve çıkış değiştirilebilir.
Çıkış Yönlendirme
Aşağıdaki grafik, çıktı yönlendirme örneklerinin başlangıcını göstermektedir.
'>' sembolü çıktı (STDOUT) yönlendirmesi için kullanılır.
Örnek:
ls -al > listings
Burada `ls -al` komutunun çıktısı ekranınız yerine "listings" dosyasına yönlendiriliyor. Aşağıdaki ekran görüntüsü sonucu göstermektedir.
Not: Komut çıktısını bir dosyaya yönlendirirken doğru dosya adını kullanın. Aynı ada sahip bir dosya zaten varsa, yönlendirilen komut içeriğini siler ve ardından üzerine yazar.
Eğer bir dosyanın üzerine yazılmasını istemiyor ancak mevcut bir dosyaya daha fazla içerik eklemek istiyorsanız, '>>' operatörünü kullanın. Aşağıdaki ekran görüntüsü, '>>' ile eklenmiş içeriği göstermektedir.
Standart çıktıyı yalnızca dosyalara değil, cihazlara da yönlendirebilirsiniz.
$ cat music.mp3 > /dev/audio
`cat` komutu `music` dosyasını okur.mp3 ve çıktıyı ses aygıtı olan /dev/audio'ya gönderir. Bilgisayarınızdaki ses yapılandırması doğruysa, bu komut müzik dosyasını oynatır.mp3.
Giriş yönlendirmesi
Aşağıdaki grafik, girdi yönlendirmesini tanıtmaktadır.
'<' sembolü, giriş (STDIN) yönlendirmesi için kullanılır.
Örnek: Linux'taki mail programı, terminalden e-posta göndermenize yardımcı olabilir.
E-postanın içeriğini standart giriş aygıtı olan klavyeyi kullanarak yazabilirsiniz. Ancak e-postaya dosya eklemek isterseniz, aşağıdaki formatta giriş yönlendirme operatörünü kullanabilirsiniz.
mail -s "Subject" to-address < Filename
Aşağıdaki ekran görüntüsü, mail komutunun girdi olarak bir dosya okuduğunu göstermektedir.
Bu işlem dosyayı e-postaya ekler ve dosya alıcıya gönderilir.
Yukarıdaki örnekler basitti. Şimdi dosya tanımlayıcılarından yararlanan bazı gelişmiş yönlendirme tekniklerine bakalım.
fileto Descriptveya (FD)
Linux ve Unix'te her şey bir dosyadır. Normal dosyalar, dizinler ve hatta aygıtlar bile dosyadır. Her dosyanın dosya tanımlayıcısı (FD) adı verilen ilişkili bir numarası vardır.
Aşağıdaki diyagram standart akışları ve dosya tanımlayıcılarını göstermektedir.
Ekranınızda da bir dosya tanımlayıcısı bulunur. Bir program çalıştırıldığında, çıktı ekranın dosya tanımlayıcısına gönderilir ve program çıktısını monitörünüzde görürsünüz. Çıktı yazıcının dosya tanımlayıcısına gönderilseydi, program çıktısı yazdırılırdı.
Hata Yönlendirme
Terminalde bir program veya komut çalıştırdığınızda, her zaman üç dosya açık olur: standart giriş, standart çıkış ve standart hata.
Bu dosyalar, bir program çalıştırıldığında her zaman mevcuttur. Daha önce açıklandığı gibi, bu dosyaların her biriyle bir dosya tanımlayıcısı ilişkilidir.
| fileto | fileto Descriptor |
|---|---|
| Standart Giriş STDIN'i | 0 |
| Standart Çıkış STDOUT | 1 |
| Standart Hata STDERR | 2 |
Varsayılan olarak, hata akışı ekranda görüntülenir. Hata yönlendirme, hataları ekran dışında bir dosyaya yönlendirir.
Neden Hata Yönlendirme?
Hata yönlendirme, Unix ve Linux'un en popüler özelliklerinden biridir.
Sık sık Unix kullananlar, birçok komutun çok sayıda hata verdiğini bilirler. Örneğin, dosya ararken genellikle şu hata mesajı alınır: izin Reddedilen hatalar genellikle belirli bir dosyayı arayan kişiye yardımcı olmaz. Kabuk komut dosyalarını çalıştırırken, hata mesajlarının normal program çıktısını karmaşıklaştırmasını genellikle istemezsiniz.
Çözüm, hata mesajlarını bir dosyaya yönlendirmektir.
Örnek 1
$ myprogram 2>errorsfile
Aşağıdaki ekran görüntüsü, terminalde bu komutun nasıl çalıştığını göstermektedir.
Yukarıda, myprogram adlı bir programı çalıştırıyoruz. Standart hata için dosya tanımlayıcısı 2'dir. "2>" kullanarak, hata çıktısını "errorsfile" adlı bir dosyaya yönlendiriyoruz. Böylece, program çıktısı hatalarla dolu olmuyor.
Örnek 2
İşte find ifadesini kullanan başka bir örnek.
find . -name 'my*' 2>error.log
`find` komutunu kullanarak, mevcut dizin olan "." dizininde adı "my" ile başlayan bir dosyayı arıyoruz ve herhangi bir hatayı `error.log` dosyasına gönderiyoruz.
Örnek 3: Daha karmaşık bir örneğe bakalım.
Sunucu yöneticileri sıklıkla dizinleri listeler ve hem hata hem de standart çıktıyı daha sonra işlenebilecek bir dosyaya kaydeder. İşte komut.
ls Documents ABC> dirlist 2>&1
Aşağıdaki diyagram, her iki akışın da tek bir dosyada nasıl yakalandığını göstermektedir.
İşte:
- 2>&1 ifadesi, STDERR'in STDOUT ile aynı hedefe (yani dosya dizin listesine) yönlendirildiği anlamına gelir.
- Hata çıktısı standart çıktıya yönlendirilir ve bu da dirlist dosyasına yönlendirilir. Dolayısıyla, her iki akış da dirlist dosyasına yazılır.
Aşağıdaki diyagram, girdi, çıktı ve hata yönlendirmesinin nasıl bir araya geldiğini özetlemektedir.






.png)