find -type d -iname .git -not -iname old
Соответствует каталогам, которые называются .git
и не называются old
. Поскольку каталог с именем .git
не может быть назван старым
, часть -not -iname old
может быть удалена без изменения значения команды.
-not
говорит «не совпадает», но не «не повторять в». Есть другой способ сказать «не возвращаться»: это действие под названием -prune
. Следующая команда означает «рекурсивный обход всех каталогов ( find
), но остановка в каталогах с именем old
( -iname old -prune
) и печать каталогов с именем .git
”:
find -iname old -prune -o -type d -iname .git -print
Это разбирается как (-iname old -prune) -o (-type d -iname .git -print)
. Find получает указание искать файлы, которые удовлетворяют условиям -iname old
или ( -o
) -type d -iname .git
. Когда файл удовлетворяет первому условию, выполняется действие -prune
(вырезать из пройденного дерева, т.е. не выполнять рекурсию). Когда файл соответствует второму условию, выполняется действие -print
. Поскольку печать является действием по умолчанию, вы можете опустить -print
.
Вызов export
может выглядеть так:
export variable=value other_variable=its_value third_variable
Это экспортирует три переменные и устанавливает значения двух из них.
Если вы используете
export variable=value other_value
без кавычек полной строки value other_value
, тогда other_value
должно быть допустимым именем переменной, которую вы хотите экспортировать.
В вашем случае используйте
export EDITOR='subl -w'
вместо
export EDITOR=subl -w
, если вы хотите, чтобы переменная EDITOR
имела значение subl -w
.
В комментариях вы спрашиваете, нужно ли дублирование строк. Нет, дублирование не обязательно.
Для строки export EDITOR
дублированная строка не является -оперой (, она просто повторно -выполняет назначение иexport
). Для строки export PATH
при втором запуске того же оператора вы снова добавите путь$HOME/bin
в конец значения PATH
. Это не будет иметь практических последствий, но может замедлить поиск исполняемых файлов на несколько долей секунды.