Есть большая вероятность, что вы ищете Fish shell.
Вторая возможность, о которой я знаю, это Final Term - вы можете посмотреть его демо здесь. Остерегайтесь, однако, поскольку ее разработка была прекращена.
Если вам нужен не терминал, а некоторые возможности, например, выбор между опциями завершения, вы можете сделать это в bash
, используя TAB после привязки menu-complete
к нему:
bind '"\t":menu-complete'
Чтобы сделать его постоянным, запишите эту строку в ~/.inputrc
файл:
"\t": menu-complete
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"