“>” Ve “>>” arasındaki fark nedir?


12

Arasındaki fark nedir ls >ve ls >>? Bunu GCSE bilgisayarım için anlamam gerekiyor ama farkın ne olduğunu bilmiyorum.


1
Aşağıdaki güzel yanıta ek olarak, lütfen stackoverflow.com/a/984761/1841533 adresindeki 2. (ve en çok oylanan) cevaba bakın: bir dosyaya yazmak için >> kullanma (ör: bir günlük) ayrıca işlem hala yazarken dosya kesilirse saif dosyasının başında "Nul" karakterleri görünmez! (ör: günlük dosyası döndürme sırasında). "Foo> file" aramayacağından, boyut değişikliğini fark etmez ve hala başlangıçtan daha ileriye işaret eder, reklam OS Nul ile dolar. foo >> dosyası arar ve bu nedenle yeni konumu işaret eder (başlangıç).
Olivier Dulac

Bu bir eğitim sorusu olduğundan, ilgili belgelerle çalışmayı öğrenmenizi öneririm: Bash Referans Kılavuzu, bölüm “Yönlendirmeler” (ayrıca erişilebilir man bash).
David Foerster

Yanıtlar:


28

>& >>yönlendirme operatörleri; bir şeyin çıktısını, bu durumda ls, başka bir yere aktarırlar . Bu çıktı bir dosyaya giderse, dosyayı >kısaltır - yani önceki içeriği siler >>, önceki içeriği koruyarak dosyanın sonuna yeni veriler ekler. Bu, herhangi bir girişle çalışacaktır , örneğin echo& cat, bu şekilde de kullanılabilir.

Ayrıca |, verileri başka bir uygulamaya geçiren operatör de ilgi çekicidir - bu yüzden ls | cat -nsize bir satır numaralı liste verecektir!

Borular ilgili terimdir.


2
Kesme veya üzerine yazma?
DK Bose

2
Dan @DKBose straceiçin çıkış bash -c 'echo a > blah': open("blah, O_WRONLY|O_CREAT|O_TRUNC, 0666)trankulatı doğru terim olacağını bu yüzden.
muru

cevabınızda kullandığınız "borular" ve "çıktı yönlendirmesi". Aferin.
0xSheepdog

Ne demek istediğimi buldum: Bu güzel cevaba ek olarak, stackoverflow.com/a/984761/1841533 : >>(bir: bir günlük) bir dosyaya yazmak için kullanma (ayrıca: bir günlük) de güzel yan var için etki değil süreç hala kendisine yazarken dosya kesilirse var "Nul" karakter saif dosyasının başında görünür! (ör: günlük dosyası döndürme sırasında). "Foo> file" aramayacağından, boyut değişikliğini fark etmez ve hala başlangıçtan daha ileriye işaret eder, reklam OS Nul ile dolar. foo >>filearar ve bu nedenle yeni pozisyonu (başlangıç) gösterir.
Olivier Dulac

5

Semboller >ve >>bir dosyaya çıktı yönlendirmek için kullanılır.

Her ikisi de dosya yoksa dosyayı oluşturur. Dosya zaten varsa, >dosyanın üzerine >>veri ekleyeceği dosyanın üzerine yazar .

Yani ls > myfileadında bir doküman oluşturacaktır myfileo yoksa. Eğer myfilezaten mevcutsa ve bazı verileri içeren, o zaman geçmek yeni verilerle üzerine yazılır olacaktır.

Halbuki ls >> myfilemevcut değilse bir dosya oluşturacak ve ona veri yazacaktır. Dosya bazı verilerle mevcutsa, sonuna yeni veriler eklenir.


0

Tek bir> kullanırsanız, zaten varsa dosyanın üzerine yazılır. Bunu kullanırken çok dikkatli olun.

İki >> kullanırsanız, varsa zaten eklenir (başka bir deyişle, dosyanın altına yazmaya başlayın). Aksi takdirde, yoksa yeni bir dosya oluşturur.


1
Zaten verilen bir cevabı neden tekrarlıyorsunuz?
14'te
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.