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