5

Есть ли способ на OS X поставить флаги в конце команды, а не в начале? На моем компьютере с Ubuntu любой из них будет работать, но OS X рассматривает -la как аргумент каталога во втором примере:

ls -la .
ls . -la

В этом простом примере это не так уж и сложно, но это разочаровывает, когда вы пропускаете флаг в длинной команде с большим количеством опций / параметров и не можете просто добавить и добавить флаг для повторного запуска команды.

Я использую Matias OS X по умолчанию, но я не вижу там ничего, что могло бы изменить это поведение.

1 ответ1

4

Это все зависит от реализации программы или, более конкретно, от того, как она анализирует параметры. OS X не использует ту же реализацию ls - она использует ее версии BSD, в то время как Ubuntu (и все Linux) используют версию GNU coreutils .

Его поведение нельзя изменить с помощью параметра, но вы можете установить GNU coreutils с помощью Homebrew:

brew install coreutils

Таким образом, вы можете сделать то же самое в OS X. Обратите внимание, что при установке по умолчанию coreutils все утилиты GNU будут иметь префикс g . Таким образом, вы будете использовать gls вместо ls Вы можете изменить это поведение, добавив их в свой путь. Чтобы сделать это, добавьте это в ваш ~/.bash_profile:

export PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"

При этом все сказанное - и поскольку все зависит от реализации программы - нельзя ожидать, что это сработает везде. Некоторые программы строго определяют, где появляются параметры, а другие - нет. Это не то, что сама ОС обеспечивает.

Чтобы быстро добавить другую опцию, вы также можете нажать , Ctrl A, Option . Это приведет вас к слову после названия самой команды, где вы можете добавить опцию, которую вы забыли.

Если он не работает и печатает некоторые странные символы, когда вы нажимаете Option , убедитесь, что эти настройки клавиатуры включены в настройках Terminal.app в разделе « Настройки» Клавиатура:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .