පිළිගත් පිළිතුරේ විස්තර කර ඇති තාක්ෂණය මම බොහෝ විට භාවිතා කරමි:
diff <(ls old) <(ls new)
නමුත් මම සාමාන්යයෙන් එය ඉහත උදාහරණයට වඩා සංකීර්ණ විධාන සමඟ භාවිතා කරන බව මට පෙනේ. එවැනි අවස්ථාවන්හි දී dif විධානය සකස් කිරීම කරදරයක් විය හැකිය. අනෙක් ඒවාට ප්රයෝජනවත් විය හැකි විසඳුම් කිහිපයක් මම ඉදිරිපත් කර ඇත්තෙමි.
වෙනස ක්රියාත්මක කිරීමට පෙර 99% ක්ම අදාළ විධානයන් අත්හදා බලන බව මට පෙනී ගියේය. එහි ප්රති dif ලයක් ලෙස මට වෙනස් කිරීමට අවශ්ය විධානයන් මගේ ඉතිහාසයේ තිබේ ... ඒවා භාවිතා නොකරන්නේ ඇයි?
අවසාන විධාන දෙක ක්රියාත්මක කිරීම සඳහා මම Fix Command (fc) bash buildin භාවිතා කරමි:
$ 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") )
}
එය භාවිතා කිරීමට ඉතිහාස රේඛා නියම කිරීමට සහාය වේ. දෙකම භාවිතා කිරීමෙන් පසු අන්වර්ථය මා කැමති අනුවාදය බව මට පෙනේ.