Команда отлично работает в Linux, но в OS X Mountain Lion я делаю следующее:
rm !(myfile)
Баш жалуется:
bash: !: event not found
Есть ли способ сделать то же самое на OS X?
решение1
Это происходит потому, что вы не установили extglob
опцию, которая придает особое значение !
.
В своем Bash напишите:
shopt -s extglob
После этого команда должна выполниться так, как и ожидалось.
По умолчанию,!
расширяетсяк идентификатору процесса последней выполненной фоновой (асинхронной) команды. С набором extglob
может !
использоваться длясопоставление с образцом, но только в сочетании с последующими скобками ()
.
Конечно, вы можете добавить эту строку в свой, ~/.bash_profile
чтобы она устанавливалась каждый раз при открытии Terminal.app. OS X по умолчанию запускает оболочку входа, поэтому эти параметры следует устанавливать, ~/.bash_profile
а не ~/.bashrc
так, как вы, вероятно, привыкли в эмуляторах терминала Linux.