Если вы примените сценарий ed
, созданный diff3 -A
, к исходному файлу, вы увидите, что он на самом деле делает:
$ diff3 -A f[123] >script.ed
(Здесь я использую patch
, но вы могли бы также использовать ed
, но тогда вам пришлось бы добавить команду в конец скрипта, чтобы либо записать буфер обратно в файл (w
), либо распечатать на терминале(%p
))
$ patch f1 script.ed
Hmm... Looks like an ed script to me...
Patching file f1 using Plan A...
done
$ cat f1
<<<<<<< f1
0
2
2
4
||||||| f2
0
1
3
5
=======
1
2
3
6
>>>>>>> f3
Это показывает, что редактирование этого бита файла (, который оказывается целым файлом в этом конкретном примере ), является конфликтом (, он "заключен в квадратные скобки" между <<<<<<<
и >>>>>>>
). Он показывает вам, в чем заключается конфликт, предоставляя вам содержимоеf1
(«мой файл» ), за которым следует содержимое в f2
иf3
(«старый файл» и «ваш файл» соответственно ).
Разница между этим и тем, что производит diff3 -e
, заключается в том, что скрипт ed
, созданный diff3 -e
, преобразует f1
в f3
, игнорируя возможные конфликты вf2
:
$ diff3 -e f[123] >script.ed
$ patch f1 script.ed
Hmm... Looks like an ed script to me...
Patching file f1 using Plan A...
done
$ cat f1
1
2
3
6
Таким образом, когда в руководстве говорится, что "конфликты заключены в квадратные скобки", это означает, что эти маркеры конфликта будут вставлены в результирующий файл, если вы примените diff в качестве исправления.
Когда дело доходит до чтения diff , это немного сложно, если вы не знаете ed
.
4a
||||||| f2
0
1
3
5
=======
1
2
3
6
>>>>>>> f3
.
0a
<<<<<<< f1
.
Последняя часть, которую вы прокомментировали,
0a
<<<<<<< f1
.
вставляет буквальную строку <<<<<<< f1
в начало редактируемого файла. Таким образом, сам diff не должен содержать исходное содержимоеf1
(исправляемого файла ).
Изinfo date
:
If given an argument that starts with a ‘+’, ‘date’ prints the
current date and time (or the date and time specified by the ‘--date’
option, see below) in the format defined by that argument, which is
similar to that of the ‘strftime’ function. Except for conversion
specifiers, which start with ‘%’, characters in the format string are
printed unchanged. The conversion specifiers are described below.
Например, вы можете сделать это:
date +"The year is %Y"
The year is 2020