![Der Befehl „remove rm“ funktioniert unter Mac OS X nicht mit Platzhaltern](https://rvso.com/image/1428718/Der%20Befehl%20%E2%80%9Eremove%20rm%E2%80%9C%20funktioniert%20unter%20Mac%20OS%20X%20nicht%20mit%20Platzhaltern.png)
Ich versuche, die folgende Datei für alle Benutzerkonten über ein Bash-Skript zu entfernen, aber das Platzhalterzeichen * scheint nicht zu funktionieren. Ich habe das Skript lokal getestet, indem ich es auf einem Mac OS X-Terminal ausgeführt habe.
Zu löschende Plist-Datei: com.apple.eap.bindings.XXXXXXX.plist
#!/bin/bash
for dir in /Users/*;
do
if [[ -e "${dir}/Library/Preferences/com.apple.eap.bindings.*" ]]; then
rm "${dir}/Library/Preferences/com.apple.eap.bindings.*"
fi
done
Der obige Code löscht die betreffende Datei nicht, funktioniert aber, wenn ich auf den genauen Dateinamen ohne Platzhalter zeige. Ich habe auch versucht, die Anführungszeichen zu entfernen, aber die Datei wird trotzdem nicht gelöscht. Kann mir bitte jemand helfen?
Antwort1
if [[ -e "${dir}/Library/Preferences/com.apple.eap.bindings.*" ]]; then
In dieser Zeile setzen Sie das Sternchen in doppelte Anführungszeichen. Dadurch wird es zu einem wörtlichen Zeichen und nicht zu etwas, das sich auf magische Weise in Dateinamen erweitert.
Links:Anführungszeichen vs. Asterisk-Dateinamenerweiterung in Bashsowieder Beitrag, auf den Shaun bereits hingewiesen hat.
Sie müssen das Asterisk ohne Anführungszeichen verwenden. Entweder wie im ersten Teil Ihres Skripts oder als Argument fürfind
.
Antwort2
Sie könnten dies als Alternative in Betracht ziehen
#!/bin/bash
/usr/bin/find /Users/*/Library/Preferences -name "com.apple.eap.bindings.*.plist" -exec /bin/rm -fv "{}" \;
Dadurch werden die betreffenden Dateien effektiv entfernt. Entfernen Sie den Schalter „v“, wenn Sie keine Ausgabe wünschen.
Antwort3
Falls das irgendjemandem da draußen helfen sollte, das hier funktioniert bei mir:
#!/bin/bash
for dir in /Users/*;
do
if [ -z "$(echo ${dir}/Library/Preferences/com.apple.eap.bindings.*|grep -q '*')" ]; then
rm ${dir}/Library/Preferences/com.apple.eap.bindings.*
fi
done