Intereting Posts
Вывод команды «смотреть» в виде списка Могу ли я установить заставку, чтобы начать, если я не смотрю видео? Как удалить файл с двумя словами, разделенными пробелом в оболочке? Как я могу переименовать все файлы с одним расширением на другое расширение рекурсивно Как получить информацию о физическом объеме в качестве пользователя без root Разрешения файловой системы: пользователь, который может создавать резервные копии всех файлов Столбец AWK в файле указывает в качестве аргумента Как я могу успешно построить изображение Archiso? («Airootfs не точка монтирования») Как я могу сделать VIM полноценной IDE Захват всех выходных данных от ввода трубопровода в программу Cli захват вывода из команды без помех Есть ли вред в использовании переменных, которые не установлены? Изменение порядка приватных ключей, передаваемых через SSH-вход Использование «LuxTrust Signing Stick» на Fedora (это относится к Люксембургу) Сохранять IP-адрес в удаленном хосте при каждом подключении (как пользователь без полномочий root)

Что вызывает `diff` для запуска` git diff`?

Я хотел бы использовать diff как описано здесь, и в документации, которую я вижу при man diff . Однако, когда я diff , я получаю следующее:

 ~ ❯❯❯ diff usage: git diff --no-index <path> <path> 

Аналогично, когда я пытаюсь использовать diff , я получаю git-ошибки, потому что -rq поддерживается в man diff но не git diff :

 ~ ❯❯❯ diff -rq ~/ ~/Desktop fatal: invalid diff option/value: -rq 

Я использую Prezto и концентратор, которые помогают в производительности git, но не создают псевдоним, который, по крайней мере, не начинается с g , насколько я могу судить.

Я запустил несколько таких сценариев, чтобы попытаться найти что-то, что определяет diff для git diff но безрезультатно.

Как исправить это / найти то, что вызывает его / отменяет?

редактировать

Ran type diff :

 diff is a shell function diff is /usr/bin/diff 

Кажется, это от prezto, определяющего функцию, переопределяющую diff . Возможно, у него есть способ отключить это, но я не знаю, что это ( но ericbn делает! ). У вас есть несколько вариантов:

  • /usr/bin/diff или command diff будут запускать команду diff , а не функцию.
  • unset -f diff удалит функцию diff . Вы можете поместить это в свою конфигурацию оболочки.
  • Как вы уже нашли, если colordiff установлен, он будет использоваться вместо git diff функцией.
  • Наконец, вы можете удалить или переименовать функцию из этого файла.

Это действительно похоже на неудачу в презо.

Я бы использовал такую ​​функцию

 $ diffit () { command diff "$@" } 

Функция над псевдонимом, поскольку есть параметры

Использование: diffit file1 file2

Вы можете поместить его в свой .bashrc
Лично я сохраняю свою коллекцию функций в .bash_functions и в .bashrc меня есть

 test -f ~/.bash_functions.sh && . $_ 

Как ответил @MichaelHomer, это функция prezto, часть служебного модуля, зарегистрированная в https://github.com/sorin-ionescu/prezto/tree/master/modules/utility . Способ отключить это:

Чтобы отключить подсветку diff, добавьте следующую строку в zpreztorc:

 zstyle ':prezto:module:utility:diff' color 'no' 

Или установка colordiff также заставит пользовательскую функцию вызывать его вместо git diff , поскольку целью пользовательского prezto diff является:

  • diff выделяет diff output (требуется colordiff или Git ).