Saya sering menggunakan teknik yang dijelaskan dalam jawaban yang diterima:
diff <(ls old) <(ls new)
tetapi saya menemukan bahwa saya biasanya menggunakannya dengan perintah yang jauh lebih kompleks daripada contoh di atas. Dalam kasus-kasus seperti itu dapat mengganggu untuk membuat perintah diff. Saya telah menemukan beberapa solusi yang mungkin berguna bagi orang lain.
Saya menemukan bahwa 99% dari waktu saya mencoba perintah yang relevan sebelum menjalankan diff. Konsekuensinya, perintah yang ingin saya perbaiki ada di sana dalam riwayat saya ... mengapa tidak menggunakannya?
Saya menggunakan bash builtin Fix Command (fc) untuk menjalankan dua perintah terakhir:
$ echo A
A
$ echo B
B
$ diff --color <( $(fc -ln -1 -1) ) <( $(fc -ln -2 -2 ) )
1c1
< B
---
> A
Bendera fc adalah:
-n : Tidak ada nomor. Ini menekan nomor perintah saat mendaftar.
-l : Listing: Perintah-perintah terdaftar pada output standar.
yang -1
-1
mengacu pada awal dan akhir positing dalam sejarah, dalam hal ini yang dari perintah terakhir untuk perintah terakhir yang menghasilkan hanya perintah terakhir.
Terakhir kita bungkus ini $()
untuk menjalankan perintah dalam subkulit.
Jelas ini agak sulit untuk diketik sehingga kita dapat membuat alias:
alias dl='diff --color <( $(fc -ln -1 -1) ) <( $(fc -ln -2 -2 ) )'
Atau kita dapat membuat fungsi:
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") )
}
yang mendukung menentukan garis sejarah yang akan digunakan. Setelah menggunakan keduanya saya menemukan alias adalah versi yang saya sukai.