Místo toho přeměňte „gi“ na skript
např. v /home/$USER/bin/gi
:
#!/bin/sh
exec /bin/grep -i "[email protected]"
nezapomeňte označit soubor jako spustitelný.
Zde je doporučeno vyhnout se xargům a místo xargs použít smyčku "při čtení":
find -name \*bar\* | while read file; do gi foo "$file"; done
Podívejte se na přijatou odpověď ve výše uvedeném odkazu pro upřesnění, jak se vypořádat s mezerami nebo novými řádky v názvech souborů.
Aliasy jsou specifické pro shell – v tomto případě s největší pravděpodobností specifické pro bash. Chcete-li spustit alias, musíte provést bash, ale aliasy se načítají pouze pro interaktivní shelly (přesněji .bashrc
bude čteno pouze pro interaktivní shell).
bash -i spouští interaktivní shell (a zdroje .bashrc).bash -c cmd spustí cmd .
Dejte je dohromady:bash -ic cmd spustí cmd v interaktivním prostředí, kde cmd může být bash funkce/alias definovaný ve vašem .bashrc
.
find -name \*bar\* | xargs bash -ic gi foo
měli byste dělat, co chcete.
Edit:Vidím, že jste otázku označili jako „tcsh“, takže řešení specifické pro bash není použitelné. S tcsh nepotřebujete -i
, protože se zdá, že čte .tcshrc, pokud nezadáte -f
.
Zkuste toto:
find -name \*bar\* | xargs tcsh -c gi foo
Fungovalo to pro mé základní testování.