Der Befehl funktioniert unter Linux einwandfrei, aber unter OS X Mountain Lion mache ich Folgendes:
rm !(myfile)
bash beschwert sich:
bash: !: event not found
Gibt es eine Möglichkeit, dasselbe unter OS X zu tun?
Antwort1
Dies liegt daran, dass Sie die Option nicht festgelegt haben extglob
, die eine besondere Bedeutung hat !
.
Schreiben Sie in Ihre Bash:
shopt -s extglob
Dann sollte der Befehl wie erwartet ausgeführt werden.
Standardmäßig,!
erweitertzur Prozess-ID des zuletzt ausgeführten Hintergrundbefehls (asynchron). Mit dem extglob
Set !
kann verwendet werden fürMustervergleich, jedoch nur in Verbindung mit anschließender Klammer ()
.
Sie können diese Zeile natürlich auch Ihrer hinzufügen, ~/.bash_profile
damit sie jedes Mal gesetzt wird, wenn Sie Terminal.app öffnen. OS X verwendet standardmäßig eine Login-Shell, daher sollten diese Optionen in ~/.bash_profile
und nicht ~/.bashrc
in der von Ihnen wahrscheinlich von Linux-Terminalemulatoren gewohnten Weise gesetzt werden.