/ Dev / null nedir ve size nasıl yardımcı olabilir?

Halihazırda GNU / Linux dizin ağacına dair bazı fikirlere sahipsek, en azından / dev / referansına aşina olmalıyız, bu da etkin bir şekilde ilgili tüm dosyaların donanım aygıtları.

Dizine bakarsak / Dev / adlı bir "dosya" göreceğiz boşama içeriğini görmek için açmak istersek, sistem bize bunun sıradan bir içerik olmadığı için mümkün olmadığını söyleyecektir. Dosyayı ekledim çünkü hepinizin Linux için bildiği gibi her şey (donanım ve yazılım) bir dosya olarak temsil ediliyor.

Bu, Daniel Durante'nin bir katkısı ve böylece haftalık yarışmamızın kazananlarından biri haline geldi: «Linux hakkında bildiklerinizi paylaşın«. Tebrikler Daniel!

/ Dev / null hangi aygıta karşılık gelir?

Pratik amaçlar için, bir çöp tenekesini, dipsiz bir çukuru veya onu kurtarma olasılığı olmadan herhangi bir şeyi atabileceğiniz bir uzay hayal edin (NASA'daki adamlar ne kadar uğraşırsa uğraşsın).

Ama zaten rm gibi komutlarım varsa, sildiğim yeni bir şeyi neden istiyorum?

Çünkü her iki "kara deliğin" çalışma şekli tamamen farklıdır: çalışma zamanında bir kabuk komut dosyası içindeki bir komuttaki bir hatanın standart çıktısını geçersiz kılmaya nasıl devam edersiniz? / Dev / null burada devreye girer.

Bir örnekle görelim.

"Merhaba Dünya" dizesini içeren test adında bir dosya oluşturduk. Bu dosyanın içeriğini komut satırında temsil etmek istiyorsak, bunu şu şekilde yapabiliriz:

kullanıcı @ laptop: ~ $ kedi testi
Selam Dünya

Dosya yoksa veya test olarak adlandırılmışsa (sonunda 's' ile), konsolda aşağıdaki hatayı alırız:

kullanıcı @ laptop: ~ $ kedi testleri
cat: testler: Dosya veya dizin mevcut değil

Hata mesajından kaçınmak için ne yapabiliriz? Pekala, hata durumunda komutun çıktısını bir "çöp kutusuna", yani / dev / null'a yönlendirin.

Hata durumunda olmasını nasıl belirleyebiliriz? Bu, bir program için standart giriş, çıkış ve hata değerlerinin girdiği yerdir: STDIN, STDOUT ve STDERR (sırasıyla 0, 1 ve 2 yerine kullanılabilir). Bu şekilde koyarsak ...

user @ laptop: ~ $ cat testleri 2> / dev / null
kullanıcı @ dizüstü bilgisayar: ~ $

… Konsolda hata mesajının üretilmeyeceğini göreceğiz.

Sözdizimi çok önemli olduğu için dikkatli olmalısınız: 2 ve> karakterleri arasında boşluk olmamalıdır. Aksi takdirde, aşağıdakileri verir:

user @ laptop: ~ $ cat testleri 2> / dev / null
cat: testler: Dosya veya dizin mevcut değil
cat: 2: Dosya veya dizin mevcut değil

Bunun aksine,> ve / dev / null arasındaki boşluk sonucu olumsuz etkilemeyecektir.

Örneğin, bir günlük dosyasındaki hataları aşağıdaki gibi yakalamak için hata yeniden yönlendirmeyi de kullanabiliriz:

user @ laptop: ~ $ cat testleri 2> err.log

Bir başka ilginç durum da, bir hata oluşmadığı sürece sonuçların başka bir dosyada toplanması olabilir, bunun için şunu koyacağız:

user @ laptop: ~ $ cat test 1> output_result 2> err.log

Son olarak, standart çıktının ve hata çıktısının birleştirildiği «> / dev / null 2> & 1» ifadesini koymak ve bunları hiçbir durumda çıktı bilgisinin elde edilmemesi için yeniden yönlendirmek mümkündür.


8 yorum, sizinkini bırakın

Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.

  1.   Guido Ignatius Ignatius dijo

    Ah, ama / dev / null'un sahip olduğu en çok kullanılan yardımcı programlardan biri eksik, bu da dosyaları boşaltıyor: $ cat / dev / null> file.log Bu şekilde, file.log dosyası boş olacaktır. Ekle!

    1.    Edward H. dijo

      Tam da aradığı açıklama buydu.
      Eklemek için hareketi destekliyorum =)

      Saludos!

  2.   Paul dijo

    Merhaba, her şeyden önce makale çok güzel! İkincisi, konuyla ilgili bu bağlantıyla bir katkıda bulunmak istiyorum Cpanel'den php'de cron işi ve blog için üçüncü tebrikler!

  3.   Paul dijo

    Dev / null hakkında güzel bir makale, daha önce yanlışlıkla yanlış yerde yorum yaptığımı düşünüyorum! Özür dilerim

  4.   anonim dijo

    teşekkür ederim iyi katkı

  5.   Jer'ler dijo

    Selamlar, sıfır saldırı alıyorum. Andrirc kullanıyorum ve takma adımdan Null kelimesiyle bir özel alıyorum. 2 saniye sonra program kapanır ve benim gördüğüm kadarıyla bu sadece Shell tarafından yapılabilir, harici biri tarafından yapılamaz. Kendimi görmezden gelmeye / -lrpcntikd'i görmezden gelmeye çalıştım ve hiçbir şey beni şaşırtmıyor, komut gelmeye devam ediyor. Engellemeyi denemenin bir yolu varsa, minnettar olurum. Şerefe

  6.   Sofia martinez dijo

    Cümle yürütülürken> sembolü yerleştirilmezse ne olur?

    Biri bana rehberlik edebilir mi lütfen?

  7.   Sıfır dijo

    Günaydın, Debian netinst'i ACER Extensa 5620Z – 32 bit'e kurdum.USB'den kurulum bittiğinde ve pendrive, sabit diskten (kalemden yeniden yüklemeyin) önyükleme yapacak şekilde çıkarıldıktan sonra, ancak önyükleme anında bana sorduğu sistem:
    debian girişi: xxxxxxxx (tamam)
    Şifre: xxxxxxx (tamam)
    nil@debian:~$ ???? Bu nedir? Oraya ne koymalıyım?

    Bu komut olmadan sistem önyüklemesine devam edemem.
    Bana yardımcı olabilir misiniz? Nasıl devam etmem gerektiğini bilmiyorum.
    Çok teşekkürler. Saygılarımla.