Сделать diff-выход более удобочитаемым

Используйте простой скрипт, подобный этому, который я только что написал:

#!/bin/bash

USER=$1
if [[ -z "$USER" ]]; then
  echo "From which user should I clear the password?"
  read USER
fi
if chpasswd -e -h > /dev/null 2>&1; then
  echo "$USER:*"|chpasswd -e
else
  passwd -d $USER
  cp /etc/shadow /etc/shadow.old
  USEROLD=$USER::
  USERNEW=$USER:*:
  sed -i "s/$USEROLD/$USERNEW/g" /etc/shadow.old
  cp /etc/shadow.old /etc/shadow
fi

Использование скрипта на свой страх и риск.

1
задан 13 April 2017 в 15:23

5 ответов

Если у вас есть консоль, colordiff - неплохое решение.

Чтобы установить его, запустите эту команду sudo apt-get install colordiff в терминале

3
ответ дан 26 May 2018 в 00:31

Мне нравится использовать внутреннюю подсветку синтаксиса vim в качестве пейджера, чтобы я мог просматривать раскрашенные различия. Например, поместите это в свой .bashrc:

sudo apt-get install vim
alias vless='vim -u /usr/share/vim/vimcurrent/macros/less.vim'

(И затем переигрите свой .bashrc с помощью . ~/.bashrc.) Затем вы можете запустить vless в качестве пейджера:

vless /path/to/your.diff

Это не графическое изображение, но оно, по крайней мере, выделено.

2
ответ дан 26 May 2018 в 00:31
  • 1
    Но он не просил цветных файлов diff, он попросил графических различий. Какие намеки на то, что вам нужно иметь возможность читать исходные файлы так же, как и сам diff. – Martin Owens -doctormo- 10 November 2010 в 12:26
  • 2
    Ну, "читать из stdin" было требованием. Если "Meld" было исключено, осталось мало. Другой ответ, который создает diff и открывает Meld, является лучшим выбором для графического. Или он может запустить gedit. – Kees Cook 10 November 2010 в 21:34
  • 3
    вы не ставите «sudo apt-get install vim». в вашем .bashrc, пожалуйста, отредактируйте, чтобы было ясно. – Capi Etheriel 10 December 2010 в 17:28

Хотя приложение KDE может быть установлено без TOO многих зависимостей, kdiff - это потрясающий инструмент для редактирования / слияния diff.

2
ответ дан 26 May 2018 в 00:31
  • 1
    Хотя kdiff (aka kdiff3 в архиве ubuntu) - отличный инструмент, он тоже не удовлетворяет вопрос OP, поскольку они ищут инструмент, который будет использовать diff на STDIN и отображать его, а также из ограниченного изучения, которое я сделал, Я не мог понять, как это сделать. Кроме того, если сокращение зависимостей KDE является проблемой, в архив ubuntu входит kdiff3-qt, который зависит только от qt, а не от библиотек из стека KDE. – Steve Beattie 10 November 2010 в 22:52

Я использовал бы этот простой скрипт для использования meld (или любого другого существующего инструмента), таким образом вы получите немного гибкости:

#!/bin/bash

TMPDIR=`mktemp -d`
DIFF_FILE=`mktemp`
TARGET='./'

cat /proc/$$/fd/0 > $DIFF_FILE
cd $TARGET
rsync -apvz --delete --stats --compress --progress $TARGET $TMPDIR
patch -R -p0 -d $TMPDIR < $DIFF_FILE
meld $TARGET $TMPDIR

Протестировано с помощью meld и вывода из bzr diff, поэтому скопировал это в / usr / bin и chmod 755, и я сделал это:

bzr diff | meld-diff

Результаты показывают, как ожидалось.

2
ответ дан 26 May 2018 в 00:31
  • 1
    Хотя это не так много проблем для однопользовательских машин, вы должны использовать mktemp и mktemp -d для безопасного хранения вашего временного файла и каталога, если не по какой-либо другой причине, чем для того, чтобы вы могли выполнять различия на нескольких деревьях на в то же время без единого скрещивания другого. – Steve Beattie 9 November 2010 в 09:58
  • 2
    Обновлено, спасибо Стив! – Martin Owens -doctormo- 9 November 2010 в 21:06
  • 3
    Он работает с bzr diff, но только в режиме сравнения каталогов. Я хочу также иметь возможность сравнивать отдельные файлы. Я постараюсь доработать его, чтобы на самом деле работать с моим скриптом, которого нет на данный момент; Благодарю. – mgunes 11 November 2010 в 22:10
  • 4
    Поделитесь мной, если вы думаете, что моя идея использования сценария хороша. До сих пор я слишком сильно отмечен. – Martin Owens -doctormo- 12 November 2010 в 01:03

Я знаю, что вы не запрашиваете инструмент diff, интегрированный в редактор, но я уверен, что вы можете избежать переключения контекста (от редактора к терминалу и обратно в редактор), узнав немного о том, что может предоставить ваш редактор. Оба, emacs и vim поставляются с инструментами diff.

Для случая emacs вы будете использовать режим Ediff (по умолчанию установлен). Посмотрите на эту страницу вики или обратитесь к официальному руководству. Использование emacs простое, просто введите Alt + x и введите ediff. Вы можете использовать разницу между браузером и версиями вашего репозитория (bzr, git, svn и т. Д.).
1
ответ дан 26 May 2018 в 00:31
  • 1
    Не могли бы вы показать быстрый пример того, как отредактировать удаленную удаленную ветку git с текущей рабочей копией (несколько файлов)? – mlt 25 July 2013 в 10:45

Другие вопросы по тегам:

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