touch "$1/$2"
Предполагается, что $2
- простое имя.Или, если вы должны использовать mv
, то:
touch "$2" &&
mv "$2" "$1"
Или:
touch "$2" &&
mv "$2" "$1/$2"
Возможно, вам придется подумать о том, что произойдет, если $2
не простой файлимя, но содержит некоторую информацию о пути.В этом случае первая комбинация «касайся и двигайся» является более безопасной.Обратите внимание, что эти версии проверяют успешность touch
перед перемещением созданного файла.Также обратите внимание, что touch
работает нормально, если файл уже существует, и этот файл будет перемещен в целевой каталог.Если файл не должен существовать (пока), вам снова придется работать усерднее.Вот в чем проблема с этими вопросами - есть много обстоятельств, с которыми, возможно, придется иметь дело, но, вероятно, не для домашнего вопроса (но его следует рассмотреть в чем-то более «производственном коде»).
В противном случае, если $2
может быть именем с информацией о пути:
mkdir "$1" || exit 1
base=$(basename "$2")
touch "$1/$base" || exit 1
Или, если вы хотите переместить, то:
mkdir "$1" || exit 1
touch "$2" || exit 1
mv "$2" "$1"
Обратите внимание на кавычки вокруг имен файлов;они будут работать, даже если имена содержат пробелы или другие неуклюжие символы.Также обратите внимание, что если $2
указывает каталог, версия mv
будет перемещать весь каталог под (только что созданный) каталог $1
.