Bazen bir yürütülebilir dosyayı gölgeleyen ve argümanlarını veya çıktısını değiştiren bir işlev tanımlarım. Böylece işlev yürütülebilir ile aynı ada sahiptir ve ben işlev özyinelemeli çağırmadan işlevinden çalıştırılabilir çalıştırmak için bir yol gerekir. Örneğin, otomatik olarak çıktısını çalıştırmak fossil diff
yoluyla colordiff
ve less -R
ben kullanın:
function fossil () {
local EX=$(which fossil)
if [ -z "$EX" ] ; then
echo "Unable to find 'fossil' executable." >&2
return 1
fi
if [ -t 1 ] && [ "$1" == "diff" ] ; then
"$EX" "$@" | colordiff | less -R
return
fi
"$EX" "$@"
}
Yürütülebilir dosyanın konumu hakkında emin olsaydım, sadece yazabilirim /usr/bin/fossil
. Bash /
bunun bir işlev değil, yürütülebilir bir komut olduğu anlamına gelir. Ama tam yerini bilmediğim için, arama which
ve sonucu kontrol etmek için başvurmak zorundayım . Daha basit bir yol var mı?
/
, komutun bir işlev değil yürütülebilir bir araç olduğu anlamına gelir. ” Diyorsunuz . Açıkçası, bu doğru değil. Korkunç (ve belgesiz) bir tasarım kararı olduğuna inandığım şeyde, bash işlev adlarının eğik çizgiler içermesine izin verir. Kesikler basitçe neden/usr/bin/fossil
farklı olmaya dize gelenfossil
derken yüzden,/usr/bin/fossil
bu çalıştırmayı deneyin değilfossil
işlevi.