Понимание различного вывода

/opt каталог является хорошим местоположением для файлов распределения программы. /srv каталог используется для данных времени выполнения программ. (См. Стандарт Иерархии Файловой системы.), В отличие от этого, /etc каталог, где стандарт указывает что /opt/ конфигурационные файлы должны быть помещены в /etc/opt/, нет никакой стандартизации этого /srv/opt/ должна быть параллельная структура (хотя это - вероятно, не плохая идея).

Таким образом:

/opt/webserver/     (your node.js application)
    server.js
    package.json
    node_modules/
    ...

/etc/opt/webserver/
    config.json     (configuration file for your web server)

/srv/opt/webserver/ (opt subdirectory suggested, but not required)
    index.html
    images/
    css/
    ...

/var/opt/webserver
    error.log
    request.log

Следует иметь в виду, что это - общий случай и не уникально для выражения applicaitons.

95
03.01.2016, 04:54
5 ответов

Сводка:

Данный a diff file1 file2, < означает, что строка отсутствует в file2 и >означает, что строка отсутствует в file1. 3d2 и 5a5 может быть проигнорирован, они - команды для patch который часто используется с diff.

Полный ответ:

Многие *отклоняют руководства TeXinfo предложения утилит, а также более простое man страницы. можно получить доступ к ним путем выполнения info command, например, info diff. В этом случае раздел Ваш интересуется:

2.4.2 Подробное описание нормального формата


Нормальный выходной формат состоит из одного или нескольких скряга различий; каждый ломоть показывает одну область, где файлы отличаются. Скряга нормального формата похожа на это:

 CHANGE-COMMAND
 < FROM-FILE-LINE
 < FROM-FILE-LINE...
 ---
 > TO-FILE-LINE
 > TO-FILE-LINE...

Существует три типа команд изменения. Каждый состоит из номера строки или разделенного от запятой диапазона строк в первом файле, отдельный символ, указывающий на вид изменения для создания, и номер строки или разделенный от запятой диапазон строк во втором файле. Все номера строки являются исходными номерами строки в каждом файле. Типы команд изменения:

`LaR'
     Add the lines in range R of the second file after line L of the
     first file.  For example, `8a12,15' means append lines 12-15 of
     file 2 after line 8 of file 1; or, if changing file 2 into file 1,
     delete lines 12-15 of file 2.

`FcT'
     Replace the lines in range F of the first file with lines in range
     T of the second file.  This is like a combined add and delete, but
     more compact.  For example, `5,7c8,10' means change lines 5-7 of
     file 1 to read as lines 8-10 of file 2; or, if changing file 2 into
     file 1, change lines 8-10 of file 2 to read as lines 5-7 of file 1.

`RdL'
     Delete the lines in range R from the first file; line L is where
     they would have appeared in the second file had they not been
27
27.01.2020, 19:30

В вашем первом выводе diff (так называемый "normal diff") значение выглядит следующим образом

< - обозначает строки в file1.txt

> - обозначает строки в file2.txt

3d2 и 5a5 обозначают номера строк, на которые были внесены изменения, и какие действия были выполнены. d означает удаление, a означает добавление (и c означает изменение). число слева от символа - это номер строки в file1.txt, число справа - это номер строки в file2.txt. Итак, 3d2 сообщает вам, что 3-я строка в file1.txt была удалена и имеет номер строки 2 в file2.txt (или лучше сказать, что после удаления счетчик строк вернулся к строке номер 2). 5a5 сообщает вам, что мы начали со строки номер 5 в file1.txt (которая была фактически пустой после того, как мы удалили строку в предыдущем действии), добавили строку, и эта добавленная строка имеет номер 5 в файле2. текст.

Вывод команды diff -u отформатирован немного иначе (так называемый «унифицированный формат сравнения»).Здесь diff показывает нам один фрагмент текста вместо двух отдельных текстов. В строке @@ -1,5 +1,5 @@ часть -1,5 относится к file1.txt, а часть +1,5 в file2.txt. Они говорят нам, что diff покажет кусок текста длиной 5 строк, начиная со строки номер 1 в file1.txt. То же самое и с файлом file2.txt - diff показывает нам 5 строк, начиная со строки 1.

Как я уже сказал, строки из обоих файлов показаны вместе

 this is the original text  
 line2  
-line3  
 line4  
 happy hacking !  
+GNU is not UNIX  

Здесь - обозначает строки, которые были удалены из file1.txt, а + обозначает строки, которые были добавлены.

102
27.01.2020, 19:30

Я предлагаю использовать:

diff -rupP file1.txt file2.txt> result.patch

Затем, когда вы читаете result.patch , вы сразу заметите разницу.

Это значения ключей командной строки:

-r : рекурсивный

-u : показывает номер строки

-p (маленький): показывает различия в Функции C

-P (заглавная): в случае нескольких файлов отображается полный путь

5
27.01.2020, 19:30

Приведенные выше ответы хороши. Однако, как новичок, я нашел их немного сложными для понимания, и при дальнейшем поиске я нашел очень полезную ссылку :Команда Linux Diff и примеры

Сайт объясняет концепцию простым и понятным языком.

Команду Diff легче понять, если рассматривать ее таким образом:

Essentially, it outputs a set of instructions for how to change one file to make it identical to the second file.

Каждый из следующих случаев хорошо объяснен:

a for add, c for change, d for delete

6
27.01.2020, 19:30

1 )Переименуйте параметры файла, чтобы вам было проще запомнить, что происходит:

Вместо:

diff f1 f2    # f1=file 1, and f2=file2

думаю

diff file-to-edit file-with-updates

Результаты по умолчанию поступают из файла -в -редактировать с обновлениями из файла -с -обновлениями .


2 )Также эти переименования команд могут помочь вам подумать о том, что происходит:

d означает d elete, но 'remove ' более понятно, что происходит
a означает a dd,...... но 'вставить ' более ясно, что происходит

c означает c hange = d + a или «удалить + вставить».


Используется так:

2,4 d 1 или вообще D (s)-d-N = d elete (' remove ' )D строка (s ). Затем синхронизируйте строку N в обоих.

4 a 2,4 или вообще N-a-U (s )= В строке N, a dd (' вставить ' )обновить -строку (s )U.

Примечание :Параметры для этих двух почти симметричны; просто наоборот слева направо.


2,4 c 5,6 или вообще R (s)-c-U (s )= Удалить R (s )строки, затем вставьте на их место обновленные строки U (s ).


Например:

4 a 2,4 означает, начиная с 4, добавить (вставить )обновленные строки 2 -4(т.е. "2,4" означает строки 2, 3 и 4)

2,4 d 1 означает удаление строк 2 -4 (2, 3 и 4 ).

2,4 c 5,6 означает удаление строк 2 -4 (2, 3 и 4 )и вставку обновленных строк 5 -6 (5 и 6 ).

8
27.01.2020, 19:30

Теги

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