Я пытаюсь запустить пример команды:
sudo mv /home/vaishnavi/Downloads/*.ttc /home/vaishnavi/Downloads/*.ttf /usr/local/share/fonts/ms_fonts/
Он отлично работает в терминале, но когда я пытаюсь добавить это в сценарий оболочки ( .sh
), я получаю сообщение об ошибке:
mv: cannot stat '/home/vaishnavi/Downloads/*.ttf': No such file or directory
Просто я хочу переместить все файлы типа .ttf
и .ttc
в / usr / local / share / fonts / ms_fonts /
в этом дело.Честно говоря, я не очень разбираюсь в сценариях оболочки. Пожалуйста, объясните мне, что я сделал не так, а также альтернативу для достижения ожидаемых результатов.
Мой пример сценария:
sudo mv /home/vaishnavi/Downloads/*.ttc /home/vaishnavi/Downloads/*.ttf /usr/local/share/fonts/ms_fonts/
...
exit 0
Вы получите эту ошибку, если там нет файлов *.ttf. По умолчанию, если ни один файл не соответствует шаблону глобуса, сам шаблон остается в команде. Отключите это с помощью параметра оболочки bash nullglob
Чтобы быть немного безопаснее, убедитесь, что действительно есть файлы для перемещения:
#!/usr/bin/env bash
...
shopt -s nullglob
# store files in an array
files=( /home/vaishnavi/Downloads/*.{ttc,ttf} )
# and if the array is not empty, move the files.
if (( ${#files[@]} > 0 )); then
sudo mv -t /usr/local/share/fonts/ms_fonts/ "${files[@]}"
fi