Команда отлично работает на 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)
? Или же... ?