По умолчанию, cp
тесты, если его последним аргументом является существующий каталог. Если это происходит, cp
создает ссылку в том каталоге, с базовым именем источника. Таким образом, учитывая команду
cp foo/bar wibble
если wibble
существующий каталог затем cp
копирует источник в wibble/bar
. Если wibble
не существует затем cp
связывает источник с wibble
.
Если Вы хотите быть уверенными, что копия всегда wibble
, затем можно указать --no-target-directory
(псевдоним -T
) опция. Тот путь, если cp
успешно выполняется, можно быть уверены, что копию называют wibble
. Если wibble
уже существовал как каталог, затем cp
перестанет работать.
В табличной форме:
The target is … Without -T With -T
existing directory copy in the directory error
existing file (not dir) overwrite overwrite
does not exist create create
Единственная разница - это с -T
, в случае, если цель является существующим каталогом, команда возвращает ошибку. Это полезно, когда Вы ожидаете, что каталог не будет существовать: Вы получаете сообщение об ошибке вместо чего-то непредсказанный случай.
То же относится mv
и ln
. Если цель является существующим каталогом, с -T
, они сигнализируют об ошибке вместо того, чтобы тихо делать что-то другое.
С cp
, существует другой случай. Если Вы делаете рекурсивная копия и источник являются каталогом, то cp -T
копирует содержание источника в место назначения, вместо того, чтобы копировать сам источник. Таким образом, данный
$ tree source destination
source
└── foo
destination
└── bar
затем
$ cp -rv source destination
`source' -> `destination/source'
`source/foo' -> `destination/source/foo'
тогда как
% cp -rvT source destination
`source/foo' -> `destination/foo'
Установите переменные среды в ваш файл ~ / .zshrc
~ / .zshrc , они автоматически получат источники на каждой сессии ZSH.
Согласно руководству пользователя zsh , псевдонимы должны быть определены в ~ / .zshrc
:
Вы можете придумать некоторые псевдонимы, которые хотите определить в своих файлах запуска; .zshrc - это, вероятно, подходящее место.
Здесь также есть совет по поддержанию чистоты вашего ~ / .zshrc
:
Я обычно использую псевдонимы только в интерактивных оболочках, поэтому я определяю их из .zshrc, но вы можете использовать .zshenv, если вы используете псевдонимы более . Фактически, чтобы сохранить мой .zshrc аккуратным, я сохраняю все псевдонимы в отдельном файле с именем .aliasrc, а в .zshrc у меня есть:
if [[-r ~ / .aliasrc]]; затем . ~ / .aliasrc fi
, который проверяет, есть ли читаемый файл ~ / .aliasrc, и если есть, запускает его точно так же, как запускаются обычные файлы запуска.
Итак, вы можете создать файл с именем ~ / .aliasrc
и использовать его (.
означает источник
) из вашего ~ / .zshrc
.
тот же источник предлагает, чтобы переменные среды были в ~ / .zshenv
:
Проще всего поместить их в .zshenv - отсюда и название. Переменные среды будут передаваться в любые программы, запускаемые из оболочки, поэтому может быть достаточно определить их в .zlogin или.zprofile: однако любая оболочка, запущенная для вас в неинтерактивном режиме, не будет запускать их, и есть другие возможные проблемы, если вы используете оконную систему, которая запускается оболочкой, отличной от zsh, или которая не запускает запуск оболочки файл вообще --- мне пришлось настроить мой, чтобы он сделал это. Так что .zshenv - самое безопасное место; определение переменных среды не займет много времени. Другие люди, несомненно, будут придерживаться совершенно противоположных взглядов, но это люди для вас.