What's is the difference between ">" and ">>" in shell command?
Could someone explain to me the difference between >
and >>
when using shell commands?
Example:
ps -aux > log
ps -aux >> log
It seems the result is the same either way.
>
is used to overwrite (“clobber”) a file and >>
is used to append to a file.
Thus, when you use ps aux > file
, the output of ps aux
will be written to file
and if a file named file
was already present, its contents will be overwritten.
And if you use ps aux >> file
, the output of ps aux
will be written to file
and if the file named file
was already present, the file will now contain its previous contents and also the contents of ps aux
, written after its older contents of file
.
if you write in terminal
ps aux > log
It will put the output of ps aux
to log named file.
then if you put
ps aux >> log
then the next output will be appended below the first. if you put only one >
it will overwrite the previous file.
Yes, >>
appends, >
always overwrites/destroys the previous content.
ps -aux > log
is the same as
rm log 2>/dev/null
ps -aux >> log
On Wintel it is the same for .bat
, .cmd
and .ps1
scripts too; common heritage, common sense.