Я попробовал Монетный двор и Ubuntu, и новая Ubuntu - то, что я предложил бы. Я говорю это из-за способа, которым настраивается GUI. Большой легкий считать значки, некоторые, которые очевидны относительно того, что они делают.
Если у вас есть доступ к GNU diff
, вы можете использовать его опции -X-group-format
, чтобы получить этот эффект без каких-либо дополнительных инструментов:
diff --old-group-format=$'\e[0;31m%<\e[0m' \
--new-group-format=$'\e[0;31m%>\e[0m' \
--unchanged-group-format=$'\e[0;32m%=\e[0m' \
file1 file2
Для получения красного и зеленого цвета используются цветные экранирующие коды ANSI , при этом ANSI-C цитирует в оболочке для доступа к выходам \e
.
-старый групповой формат
и -новый групповой формат
идентифицируют несовпадающие линии и вставляют их между красными и цветными кодами сброса, используя %<
и %>
, в то время как -созданный групповой формат
вставляет совпадающие линии между зелеными и цветными кодами сброса.
Также можно использовать -старый-линейный формат
(и т.д.), за счет избыточных цветовых переходов на каждой линии: --old-line-format=$'\e[0;31m%L\e[0m'
.
Вам следует взглянуть на команду hl
, доступную на github: git clone http://github.com/mbornet-hl/hl
и далее: http://www.flashnux.com/notes/page_000022_US.html
hl
- это команда Linux, написанная на C, специально разработанная для раскрашивания текста. файл или вывод команды. Вы можете одновременно использовать до 42 цветов и использовать файл конфигурации для упрощения командных строк. Вы можете раскрасить вывод каждой команды, которую можно передать другой. И если вы знаете, что такое регулярные выражения, вам будет очень легко использовать их. Вы можете использовать страницу man
, чтобы понять, как ее использовать.
hl
очень прост в использовании и настройке. Вы даже можете использовать сценарий hl_generic для раскрашивания вывода команд без изменения их синтаксиса.
Вы можете, например, раскрасить вывод команды diff
, просто набрав обычную команду:
diff file1 file2
Если вам нужна помощь, просто отправьте мне электронное письмо .
С уважением.
Цветной, уровень слов diff
output
Вот что вы можете сделать с приведенный ниже скрипт и diff-highlight :
#!/bin/sh -eu
# Use diff-highlight to show word-level differences
diff -U3 --minimal "$@" |
sed 's/^-/\x1b[1;31m-/;s/^+/\x1b[1;32m+/;s/^@/\x1b[1;34m@/;s/$/\x1b[0m/' |
diff-highlight
(Благодарим @ retracile, ответ за выделение sed
)
diff --color
была добавлена опция GNU diffutils 3.4 (2016-08-08)
Это реализация по умолчанию diff
на большинстве дистрибутивов, которые скоро получат ее.
В версии 3.5 это выглядит так:
с:
diff --color -u \
<(seq 6 | sed 's/$/ a/') \
<(seq 8 | grep -Ev '^(2|3)$' | sed 's/$/ a/')
Я также запросил разницу на уровне слов из diff-highlight
по адресу: [Diffutils-devel] Добавить флаг в производить цветной вывод, такой как git diff-h | lists.gnu.org
По-видимому, добавлено в коммит c0fa19fe92da71404f809aafb5f51cfd99b1bee2 (март 2015 г.).
Попробуйте colordiff file1 file2
Доступность colordiff в вашем дистрибутиве Linux / BSD
Те, кто использует Debian или Ubuntu (или любую из их производных), вероятно, могут просто использовать "apt-get install colordiff" для загрузки и установки; { {1}} colordiff также упакован для ряда других дистрибутивов и операционных систем Linux, UNIX и BSD .
(цитата из http://www.colordiff.org/ )
Просто примечание :, чтобы получить вывод «сторона -на сторону -», вам нужно «--цвет=всегда». Вы также можете разбить его на страницы с меньшим количеством страниц и сохранить цветной вывод :
.diff -y --color=always file1 file2 | less -R
И еще один совет: :старайтесь оставить переключатель «--color=always» в конце. Причина? С помощью dmesg из утилиты -linux 2.27.1:
dmesg --human --color=always | less -R # works
dmesg --color=always --human | less -R # doesn't work
На данный момент на Github есть очень удобный инструмент, созданный с помощью Python, который называется icdiff
. Производит красивые цветные выходные данные, которые также осведомлены о «серьезности». Я использую это все время, стоит проверить.
если у вас установлен vim, вы можете сделатьdiff file1 file2 | vim -
Vim распознает формат diff и придаст ему правильную окраску. Тире в конце позволяет vim принимать ввод от команды diff.
Этот скрипт использует стандартный предварительный -diff версии 3.4 (. Он должен работать с любой версией diff )и раскрашивает вывод без какого-либо изменения выходного формата. Он работает с последней версией RHEL (версии 7.5 ), которая имеет версию GNU diff 3.3. Просто поместите его в свой каталог ~/bin или в любое другое место на вашем пути (. Я предлагаю назвать его "cdiff" ).
#!/bin/bash
file1color="$(tput setaf 1)"
file2color="$(tput setaf 2)"
sepcolor="$(tput setaf 6)"
reset="$(tput sgr0)"
diff $* |sed -e "s/^\\(<.*\$\\)/$file1color\\1$reset/;s/^\\(>.*\$\\)/$file2color\\1$reset/;s/^\\(---\$\\)/$sepcolor\\1$reset/"
Если вы работаете с контейнером apline linux и не хотите/не можете использовать эти другие инструменты, это может сработать в крайнем случае.
RED="\\\033[0;31m"
GREEN="\\\033[0;32m"
OFF="\\\033[0m"
DIFF=$(diff --label "GOT" <(echo "$OUTPUT") --label "EXPECTED" <(echo "$EXPECTED_OUTPUT"))
printf -- "$(echo "$DIFF" | sed "s|^-|$RED-|g" | sed "s|^+|$GREEN+|g" | sed "s|$|$OFF|g")"
Вот пример вывода.
Для изменения цветовой палитры diff используйте опцию --palette
(diff версии 3.4 и выше):
diff --color=always --palette='ad=1;3;38;5;154:de=1;3;38;5;9' file1 file2
Здесь ad
и de
определяют цвет добавляемого и удаляемого текста соответственно. Подробное описание опций diff см. в man diff
или info diff
.
diff 3.4+ может раскрашивать свой вывод в некоторых режимах, таких как diff -u
, diff -c
. Также доступен чистый сценарий оболочкиhttps://github.com/ildar-shaimordanov/colordiff. Он выполняет почти ту же работу, что и Perl https://github.com/daveewart/colordiff.