Apa perbedaan antara ">" dan ">>"?

12

Apa perbedaan antara ls >dan ls >>? Saya perlu memahami ini untuk komputasi GCSE saya tetapi tidak tahu apa bedanya.

Helen Schofield
sumber
1
Selain jawaban yang bagus di bawah ini, silakan lihat jawaban ke-2 (dan yang paling banyak dipilih) di stackoverflow.com/a/984761/1841533: menggunakan >> untuk menulis ke file (mis: log) juga memiliki efek samping yang bagus untuk tidak memiliki karakter "Nul" muncul di awal file saif jika file terpotong saat proses masih menulis ke sana! (mis: selama rotasi file log). Karena "file foo>" tidak mencari, ia tidak melihat perubahan ukuran dan masih menunjuk lebih jauh dari awal, ad OS mengisi dengan Nul. foo >> mencari file dan karena itu menunjuk ke posisi baru (awal).
Olivier Dulac
Karena ini adalah pertanyaan pendidikan, saya sarankan Anda belajar bekerja dengan dokumentasi yang relevan: Manual Referensi Bash, bagian "Pengalihan" (juga dapat diakses melalui man bash).
David Foerster

Jawaban:

28

>& >>adalah operator pengalihan; mereka mentransfer output dari sesuatu, dalam hal ini ls, di tempat lain. Jika output ini masuk ke file, >akan memotong file - yaitu menghapus semua konten sebelumnya, sedangkan >>akan menambahkan data baru ke akhir file, menjaga konten sebelumnya. Ini akan bekerja dengan input apa pun, jadi echo& cat, misalnya, juga dapat digunakan dengan cara ini.

Yang juga menarik adalah |operator, yang meneruskan data ke aplikasi lain - jadi ls | cat -nakan memberi Anda daftar nomor baris!

Pipa adalah istilah yang relevan.

Mark Williams
sumber
2
Potong atau timpa?
DK Bose
2
@DKBose dari straceoutput untuk bash -c 'echo a > blah': open("blah, O_WRONLY|O_CREAT|O_TRUNC, 0666), sehingga truncate akan menjadi istilah yang tepat.
muru
"pipa" dan juga "pengalihan output", yang Anda gunakan dalam jawaban Anda. Sudah selesai dilakukan dengan baik.
0xSheepdog
menemukan apa yang saya maksud: Selain jawaban yang bagus ini, silakan lihat jawaban ke-2 (dan yang paling banyak dipilih) di stackoverflow.com/a/984761/1841533 : gunakan >>untuk menulis ke file (mis: log) juga memiliki sisi baiknya efek untuk tidak memiliki karakter "Nul" muncul di awal file saif jika file terpotong saat proses masih menulis untuk itu! (mis: selama rotasi file log). Karena "file foo>" tidak mencari, ia tidak melihat perubahan ukuran dan masih menunjuk lebih jauh dari awal, ad OS mengisi dengan Nul. foo >>filemencari dan karena itu menunjuk ke posisi baru (awal).
Olivier Dulac
5

Simbol >dan >>digunakan untuk mengarahkan output ke file.

Keduanya akan membuat file jika file tidak ada. Jika file sudah ada, maka >akan menimpa file di mana seperti >>akan menambahkan data ke file.

Jadi ls > myfileakan membuat dokumen bernama myfilejika tidak ada. Jika myfilesudah ada dan berisi beberapa data, maka itu akan ditimpa dengan data baru yang Anda berikan.

Sedangkan ls >> myfileakan membuat file jika tidak ada dan menulis data untuk itu. Jika file ada dengan beberapa data, maka data baru akan ditambahkan ke bagian akhirnya.

Sudheer
sumber
0

JIKA Anda menggunakan satu>, maka itu akan menimpa file jika sudah ada. Berhati-hatilah saat menggunakan ini.

Jika Anda menggunakan dua >>, maka itu hanya akan menambahkan (dengan kata lain, mulai menulis di bagian bawah file) jika sudah ada. Kalau tidak, itu membuat file baru jika tidak ada.

Eric Larson
sumber
1
Mengapa mengulangi jawaban yang sudah diberikan?
Requist