kedi yönlendirmesi


11

Diyelim ki adlı bir dosya abcmevcut dizinde var ve içinde bir metin var. Komutu yürüttüğünüzde:

cat abc > abc

Dosyanın içeriği neden yok abcoluyor?
Komut neden içindeki metni siler ve dosya boş bir dosya olur?



10
Bir lazer işaretleyici için çok etkili bir araçtır kedi yönlendirme. </pun>
WBT

Kedim yeniden yönlendirmeye çok kötü yanıt veriyor ...
Ex Umbris

Bu sorunu önlemek için, köpek dediğim küçük bir kabuk cat abc | dog abc
komut dosyası kullanıyorum

Ekrandaki çıkışın sakıncası yoksa başka bir seçenek kullanmaktır tee.
Andrea Lazzarotto

Yanıtlar:


27

İşlerin nasıl yapıldığı düzeni yüzünden.

Yaptığınızda:

cat abc > abc

>çıktı yeniden yönlendirme operatörüdür, kabuk bunu gördüğünde dosyayı yani O_TRUNCbayrak kullanarak kesme modunda açar , böylece dosyada ne varsa silinir. Bu yönlendirme, komut çalıştırılmadan önce kabuk tarafından yapılır .open(2)open("abc", O_TRUNC)cat

Komut cat abcyürütüldüğünde, dosya abczaten kesilmiş catolduğundan dosyayı boş bulur.


1
Kedi abc >> abc hakkında ne? O zaman ne olacak?
Tulsi Kanodia

2
@TulsiKanodia - sonsuz bir döngüye neden olur. Kedi bir satırı her okuduğunda, bir sonrakine geçmeden önce başka bir satır ekler.
user3490

3
Bu tespit edilir ve önlenir. Bunun yerine, metin cat: filename: input file is output file( filenameseçtiğiniz dosya adı nerede ) eski stdout'a yazdırılır.
UTF-8


5

Ekleme @ heemayl cevabı kod şeyler sadece komuta başlangıcında herhangi yönlendirmeleri koyabilirsiniz oluyor geldiği sıralama hakkında daha net olmasını istiyorsanız,:

> abc cat abc
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.