Я часто використовую техніку, описану в прийнятій відповіді:
diff <(ls old) <(ls new)
але я вважаю, що зазвичай я використовую його набагато складнішими командами, ніж приклад вище. У таких випадках складно розробити команду diff. Я придумав деякі рішення, які можуть бути корисними для інших.
Я вважаю, що 99% часу я випробовую відповідні команди перед запуском розл. Отже, команди, які я хочу відрізняти, є саме в моїй історії ... чому б не використовувати їх?
Я використовую вбудований bash Fix Command (fc) для виконання двох останніх команд:
$ echo A
A
$ echo B
B
$ diff --color <( $(fc -ln -1 -1) ) <( $(fc -ln -2 -2 ) )
1c1
< B
---
> A
Прапорцями fc є:
-n : Немає числа. Він пригнічує номери команд при переліку.
-l : Лістинг: Команди перераховані на стандартний вихід.
-1
-1
відносяться до початкового і кінцевого полаганію в історії, в цьому випадку його від останньої команди до останньої команди , яка дає тільки останню команду.
Нарешті, ми завершуємо це, $()
щоб виконати команду в нижній частині.
Очевидно, це трохи болісно, щоб ми могли створити псевдонім:
alias dl='diff --color <( $(fc -ln -1 -1) ) <( $(fc -ln -2 -2 ) )'
Або ми можемо створити функцію:
dl() {
if [[ -z "$1" ]]; then
first="1"
else
first="$1"
fi
if [[ -z "$2" ]]; then
last="2"
else
last="$2"
fi
# shellcheck disable=SC2091
diff --color <( $(fc -ln "-$first" "-$first") ) <( $(fc -ln "-$last" "-$last") )
}
яка підтримує вказівку використання рядків історії. Після використання обох я знаходжу псевдонім - це версія, яку я віддаю перевагу.