Что делает «+» в команде «дата»?

Если вы примените сценарий 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(исправляемого файла ).

-1
13.10.2020, 01:09
2 ответа

Из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
1
18.03.2021, 22:57

+вводит строку формата даты.

0
18.03.2021, 22:57

Теги

Похожие вопросы