Ich möchte Bash ausführen rm -i *
, wenn ich rm *
eingeben, aber sonst normal rm
laufen. Wichtig ist, dass ich nicht jedes Mal rm -i
ausführen möchte, wenn ich einen Platzhalter wie rm part*
verwende. Hier ist so weit, wie ich mir vorstellen konnte:Wie man "*" als Argument zur bash-Funktion erfasst und in einem Vergleich verwendet
rm()
{
if [ "$1" == "*" ]; then
rm -i *
else
rm $1
fi
}
Aber ich weiß, das wird scheitern. Ich weiß, dass der Vergleich, den ich möchte, ist ^*$
, aber ich weiß nicht, wie man es umsetzt.
Zu der Zeit, Ihre 'rm' Funktion ausgeführt wird die '*' wird bereits erweitert. – Paulpro
Das Problem ist, dass 'rm' nicht' * 'als Argument bekommt; es erhält die lange Liste von Dateien, die die Shell um '*' erweitert, als Argumente. – chepner
GNU 'rm' hat eine' -I' Option, die Sie nur auffordert, wenn Sie mehr als 3 Dateien entfernen. – chepner