Страница man не очень ясна по этому вопросу, но информационная страница содержит:
1.2 Подавление различий между пробелами и интервалами табуляции
Опция --ignore-tab-expansion
( -E
) игнорирует различие между вкладками и пробелами при вводе. Вкладка считается равной количеству пробелов до следующей остановки табуляции (* note Tabs: :).
Опция --ignore-trailing-space
( -Z
) игнорирует пробел в конце строки.
Опция --ignore-space-change
( -b
) сильнее, чем -E
и в
-Z
сочетании. Он игнорирует пробелы в конце строки и считает все другие последовательности одного или нескольких символов пробела в строке эквивалентными. С этой опцией diff
считает следующие две строки эквивалентными, где $
обозначает конец строки:
Here lyeth muche rychnesse in lytell space. -- John Heywood$
Here lyeth muche rychnesse in lytell space. -- John Heywood $
Опция --ignore-all-space
( -w
) еще сильнее. Он игнорирует различия, даже если в одной строке есть пробел, а в другой нет ни одной. Символы «пробел» включают табуляцию, вертикальную табуляцию, подачу формы, возврат каретки и пробел; некоторые локали могут определять дополнительные символы как пробелы. С этой опцией diff
считает следующие две строки эквивалентными, где $
обозначает конец строки и ^M
обозначает возврат каретки:
Here lyeth muche rychnesse in lytell space.-- John Heywood$
He relyeth much erychnes seinly tells pace. --John Heywood ^M$
Для многих других программ символ новой строки также является пробелом, но diff
это программа, ориентированная на строки, и символ новой строки всегда заканчивается строкой. Следовательно, опция -w
or --ignore-all-space
не игнорирует изменения, связанные с новой строкой; он игнорирует только другие изменения пробелов.