/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.
Сводка:
Данный 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
В вашем первом выводе 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, а +
обозначает строки, которые были добавлены.
Я предлагаю использовать:
diff -rupP file1.txt file2.txt> result.patch
Затем, когда вы читаете result.patch
, вы сразу заметите разницу.
Это значения ключей командной строки:
-r : рекурсивный
-u : показывает номер строки
-p (маленький): показывает различия в Функции C
-P (заглавная): в случае нескольких файлов отображается полный путь
Приведенные выше ответы хороши. Однако, как новичок, я нашел их немного сложными для понимания, и при дальнейшем поиске я нашел очень полезную ссылку :Команда 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
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 ).