Bisakah seseorang menjelaskan kepada saya perbedaan antara >
dan >>
ketika menggunakan perintah shell?
Contoh:
ps -aux > log
ps -aux >> log
Sepertinya hasilnya sama saja.
command-line
whale_steward
sumber
sumber
Jawaban:
>
digunakan untuk menimpa (" clobber ") file dan>>
digunakan untuk menambahkan file.Dengan demikian, ketika Anda menggunakan
ps aux > file
, output darips aux
akan ditulis kefile
dan jika file bernamafile
sudah ada, isinya akan ditimpa.Dan jika Anda menggunakan
ps aux >> file
, output darips aux
akan ditulis kefile
dan jika file bernamafile
sudah ada, file sekarang akan berisi konten sebelumnya dan juga isips aux
, ditulis setelah konten yang lebih lama darifile
.sumber
jika Anda menulis di terminal
Ini akan menempatkan output
ps aux
ke file bernama log.maka jika Anda menempatkan
maka output selanjutnya akan ditambahkan di bawah yang pertama. jika Anda hanya meletakkan satu
>
file itu akan menimpa file sebelumnya.sumber
Ya,
>>
tambahkan,>
selalu menimpa / menghancurkan konten sebelumnya.sama dengan
Di Wintel itu sama untuk
.bat
,.cmd
dan.ps1
naskah juga; warisan bersama, akal sehat.sumber
Perbedaan paling penting adalah
>
membuat shell membuka file atau objek seperti file denganO_WRONLY|O_CREAT|O_TRUNC
flag - file akan dibuat atau terpotong jika ada, sementara>>
file dibuka denganO_WRONLY|O_CREAT|O_APPEND
flag - file akan dibuat atau ditambahkan jika ada. Ini terbukti jika Anda melacak panggilan sistem, misalnya denganDan dengan
Perhatikan bahwa dalam kedua kasus, deskriptor file dari file terbuka digandakan ke file descriptor 1 (stdout) dari perintah, dan itu akan diwarisi oleh perintah apa pun yang di-shell shell.
sumber