Может ли кто-нибудь объяснить мне разницу между >
и >>
при использовании команд оболочки?
Пример:
ps -aux > log
ps -aux >> log
Кажется, результат одинаков в любом случае.
command-line
whale_steward
источник
источник
Ответы:
>
используется для перезаписи (« clobber ») файла и>>
используется для добавления в файл.Таким образом, когда вы используете
ps aux > file
, выводps aux
будет записан,file
а если файл с именемfile
уже присутствовал, его содержимое будет перезаписано.И если вы используете
ps aux >> file
, выводps aux
будет записан,file
и если названный файлfile
уже присутствовал, файл теперь будет содержать его предыдущее содержимое, а также содержимоеps aux
, записанное после его более старого содержимогоfile
.источник
если ты пишешь в терминал
Это поместит вывод
ps aux
в лог именованного файла.тогда если вы положите
тогда следующий вывод будет добавлен ниже первого. если вы установите только один,
>
он заменит предыдущий файл.источник
Да,
>>
добавляет,>
всегда перезаписывает / уничтожает предыдущий контент.такой же как
На Wintel это то же самое
.bat
, что.cmd
и для.ps1
скриптов; общее наследие, здравый смысл.источник
Самое важное отличие заключается в том, что
>
оболочка открывает файл или файлоподобный объект сO_WRONLY|O_CREAT|O_TRUNC
флагами - файл будет создан или обрезан, если он существует, а>>
файл сO_WRONLY|O_CREAT|O_APPEND
флагами будет открыт - файл будет создан или добавлен, если он существует. Это очевидно, если вы отслеживаете системные вызовы, например, сИ с
Обратите внимание, что в обоих случаях файловый дескриптор открытого файла дублируется на файловый дескриптор 1 (stdout) команды, и он будет наследоваться любой командой, которую разветвляет оболочка.
источник