if [[ -z $template_file ]]; then
Оператор -z
проверяет, пуста ли строка. Здесь значение template_file
не пустое, так как вы только что присвоили ему значение. Следовательно, команда внутри if
не запускается.
Если файл не существовал до запуска скрипта, он не будет существовать и во время cp
.
Я не уверен, что вы пытаетесь протестировать здесь, но если вы хотите создать файл на случай, если он не существует, вам следует использовать ! -f $filename
. -f
проверяет, существует ли файл, а !
инвертирует тест.
Также обратите внимание, что в назначении тильда не раскрывается, а остается такой, как -, так как она находится в кавычках:
template_file="~/mytest_template.c";
Вы не используете эту переменную в последующем перенаправлении или в команде cp
, поэтому у вас не возникнет проблем из-за этого.
Итак,
template=~/mytest_template.c
final=~/mytest.c
if [[ ! -f $template ]]; then
echo "..." > "$template"
fi
cp "$template" "$final"
/dev/sda1
— это не каталог, а блочное устройство. Легко узнать с помощью ls -ld /dev/sda1
.
Вы можете узнать об использовании пространства, запустив
du -hx --max-depth=1 /