Böyle bir örnek /dev/null. Her Linux sisteminde bulunan özel bir dosyadır. Ancak, diğer birçok sanal dosyanın aksine, okumak yerine yazmak için kullanılır. /dev/null'a ne yazarsan yaz atılacak, boşluğa unutulacak. UNIX sisteminde boş aygıt olarak bilinir.
Neden boşluğa bir şey atmak isteyesin ki?? /dev/null'un ne olduğunu ve kullanımını kontrol edelim.
Önkoşullar
/dev/null kullanımına derinlemesine dalmadan önce, standart ve standart veri akışı. Bu ayrıntılı kılavuza göz atın standart, standart, ve standart.
Hızlı bir yenileme yapalım. Herhangi bir komut satırı yardımcı programı çalıştırıldığında, iki çıktı üretir. çıkış gidiyor standart ve hata (oluşturulduysa) standart. Varsayılan olarak, bu veri akışlarının her ikisi de terminal ile ilişkilendirilir.
Örneğin, aşağıdaki komut dizeyi çift tırnak işareti içinde yazdıracaktır. Burada çıktı depolanır standart.
$ echo “Merhaba Dünya”
Bir sonraki komut bize önceden çalıştırılan komutun çıkış durumunu gösterecektir.
$ yankı $?
Önceki komut başarıyla çalıştırıldığından çıkış durumu 0'dır. Aksi takdirde çıkış durumu farklı olacaktır. Geçersiz bir komut çalıştırmayı denediğinizde ne olur??
$ adfadsf$ yankı $?
Şimdi, dosya tanımlayıcı hakkında bilgi sahibi olmamız gerekiyor. UNIX ekosisteminde bunlar bir dosyaya atanan tamsayı değerleridir. Her ikisi de standart (dosya tanımlayıcı = 1) ve standart (dosya tanımlayıcı = 2) belirli bir dosya tanımlayıcıya sahip. Dosya tanıtıcısını (bu durumda 1 ve 2) kullanarak, standart ve standart diğer dosyalara.
Başlangıç için, aşağıdaki örnek, standart echo komutunun bir metin dosyasına. Burada dosya tanıtıcısını belirtmedik. Belirtilmezse, bash kullanacaktır standart varsayılan olarak.
$ echo “Merhaba Dünya” > günlük.Txt
Aşağıdaki komut, standart bir metin dosyasına.
$ asdfadsa 2> hatası.Txt
/dev/null kullanma
Çıktıyı /dev/null'a yönlendirme
Artık /dev/null'un nasıl kullanılacağını öğrenmeye hazırız. İlk olarak, normal çıktı ve hatanın nasıl filtreleneceğini kontrol edelim. Aşağıdaki komutta grep, “/sys” dizininde bir dize (bu durumda merhaba) aramaya çalışacaktır.
$ grep -r merhaba /sys/
Ancak, kök ayrıcalığı olmadığı için çok fazla hata üretecektir, grep bir dizi dosyaya erişemez. Böyle bir durumda, “İzin reddedildi” hatalarıyla sonuçlanacaktır. Şimdi yeniden yönlendirmeyi kullanarak daha net bir çıktı alabiliriz.
$ grep -r merhaba /sys/ 2> /dev/null
Çıktı çok daha iyi görünüyor, doğru? Hiçbir şey değil! Bu durumda, grep'in birçok dosyaya erişimi yoktur ve erişilebilir olanlarda “merhaba” dizesi yoktur.
Aşağıdaki örnekte, Google'a ping göndereceğiz.
$ google'a ping at.com
Ancak, tüm bu başarılı ping sonuçlarını görmek istemiyoruz. Bunun yerine, yalnızca ping Google'a ulaşamadığında oluşan hatalara odaklanmak istiyoruz. Bunu nasıl yaparız?
$ google'a ping at.com 1> /dev/null
Burada, içeriği standart /dev/null dizinine atılır, yalnızca hatalar bırakılır.
Tüm çıktıları /dev/null'a yönlendir
Bazı durumlarda çıktı hiç kullanışlı olmayabilir. Yeniden yönlendirmeyi kullanarak tüm çıktıyı boşluğa boşaltabiliriz.
$ grep -r merhaba /sys/ > /dev/null 2>&1
Bu komutu biraz kıralım. İlk önce, hepsini boşaltıyoruz standart /dev/null'a. Ardından, ikinci bölümde bash'a göndermesini söylüyoruz standart için standart. Bu örnekte, çıktı alınacak hiçbir şey yok. Ancak, kafanız karıştıysa, komutun başarıyla çalışıp çalışmadığını her zaman kontrol edebilirsiniz.
$ yankı $?
Değer 2'dir çünkü komut çok fazla hata üretmiştir.
Dosya tanımlayıcısını unutma eğilimindeyseniz standart ve standart, aşağıdaki komut gayet iyi yapacak. Önceki komutun daha genelleştirilmiş bir biçimidir. Her ikisi de standart ve standart /dev/null'a yönlendirilecek.
$ grep -r merhaba /sys/ &> /dev/null
Diğer örnekler
Bu ilginç bir tanesidir. dd aracını hatırla? Dosyaları dönüştürmek ve kopyalamak için güçlü bir araçtır. dd hakkında daha fazla bilgi edinin. dd kullanarak diskinizin sıralı okuma hızını test edebiliriz. Tabii ki, doğru bir ölçüm değil. Ancak, hızlı bir test için oldukça kullanışlıdır.
$ dd ise=
Burada Ubuntu 18'i kullandım.04.4 ISO büyük dosya olarak.
Benzer şekilde, internet bağlantınızın indirme hızını da test edebilirsiniz.
$ wget -O /dev/null
Son düşünceler
Umarım, bu /dev/null dosyasının ne olduğunu net bir şekilde anlamışsınızdır. Bu, kendisine yazılırsa atan ve eğer okunursa boş yazan özel bir cihazdır. Bu ilginç özelliğin gerçek potansiyeli, ilginç bash komut dosyalarındadır.
Bash komut dosyasıyla ilgileniyor musunuz?? Bash komut dosyası oluşturmaya yeni başlayanlar kılavuzuna göz atın.
Zevk almak!