var olmayan bir dosyayı açarken kedi farklı hata veriyor


22

Aşağıdaki komutların ikisi de var olmayan bir dosyayı açmaya çalışır foo, ancak hata mesajları biraz farklıdır. Sebebi ne olabilir?

$ cat foo
cat: cannot open foo
$ cat < foo
-bash: foo: No such file or directory

12
Beyler, lütfen gönderileri yalnızca biçimlendirmeyi esas alarak, özellikle yeni gelenlerden gelen gönderileri aşağı indirmeyin. İşte bu çok geçerli bir soru.
Stéphane Chazelas

21
Bunun cat < foodyerine olmalıcat < foo
Tulains Córdova 24:16

6
@ TulainsCórdova Veya bazı kültürlerde food < cat;;)
DepressedDaniel


1
Sadece ilk hata geliyor cat. Şimdi, ikinci mesajın nereden geldiğini merak ediyorum, bununla başladığını düşünerek bash:...
Dmitry Grigoryev

Yanıtlar:


30
cat foo

Bu catkomutu argümanla çalıştırır foo. Ekranda basılan hata, tamamen komutun programcısı tarafından neyin kararlaştırıldığına bağlıdır.

cat < foo 

Bu dosyanın içeriğini besler fooiçin catkullanarak komuta Bash Stdin yönlendirmeyi . Dosya yoksa, bundan şikayet eden Bash.


20

Olarak $ cat fookabuk (burada darbe) yürüten catkomut ve parametre geçer foo. Cat programı bu parametreyi bir dosya adı olarak yorumlamayı seçer - ve dosyayı açmaya çalışır. Gördüğünüz hata (doğal olarak) dosyayı açamayan kedi programından.

Sürüm $ cat < foo, kabuk tarafından ele alınan bir yönlendirmedir. <kabuktan bir dosya açmasını ve onu stdin'e yönlendirmesini söyleyen bir kabuk operatörüdür. Dosya mevcut olmadığı için "Böyle bir dosya yok" a sahip olursunuz. Bu sefer hata kabuğundan (bash) geliyor ve biraz farklı görünüyor.

Bu yüzden 2 farklı hata görüyorsunuz. Sebep aynı - fakat 2 farklı programdan (cat ve bash).


18
Hayır yılında cat < foo, catyeniden yönlendirme başarısız olursa çağrılmaz. Bu (ve tutarlı bir hata mesajına sahip olmak), mümkün olduğunda yönlendirmeyi kullanmanın genellikle daha iyi olmasının bir nedenidir. Ayrıca düşünün cat < in > outvs cat in > outeski önler nerede outolursa geçersiz kılınan olmak inyok (kabuk başarısız sonra komut hakkını iptal < inyönlendirme ve sonraki yapmaz > out, yeniden yönlendirme yalnız davet edelim cat).
Stéphane Chazelas 24/16

Güzel! Saf mantık. Saçmalığımı düzenleyeceğim.
Claus Andersen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.