Возникшая у вас проблема не имеет отношения к echo -e
или вашей функции log()
. Проблема связана с апострофами:
log this is a testing's post
Оболочка (bash, в вашем случае) имеет специальные значения для некоторых символов. Апострофы (одинарные кавычки) используются для цитирования целых строк и предотвращают большинство других видов интерполяции. bash ожидает, что они будут идти парами, вот почему вы получаете дополнительные строки подсказки, пока не наберете вторую. Если вам нужна буквальная одинарная кавычка в строке, вам нужно сказать об этом bash, экранировав ее через \'
, например, так:
log this is a testing\'s post
Опять же, log
не имеет значения. Вы можете попробовать это со старым добрым echo
, если хотите:
echo this is a testing\'s post
Смотрите Какие символы нужно экранировать в bash для получения дополнительной информации.
Я нашел исчерпывающий ответ здесь , в частности настройку редактирования естественного текста.
Резюме:
- Go to Preferences... > Profiles > Keys
- Press Load Preset...
- Select Natural Text Editing
Then, you can move a word backwards using Option ⌥ + ← and a word forwards using Option ⌥ + →. Also you can delete a word backwards using Option ⌥ + ⌫, delete the whole line using Command ⌘ + ⌫, and more.