Criando um script dotfile

1

Eu fiz esta pergunta no SO e não fui muito longe; aqui está a versão atual do meu script e o que eu gostaria de fazer. Sugestões para depuração e teste são o que estou procurando. Eu provavelmente vou remover -fn enquanto estiver trabalhando nisso, pois isso só atrapalha - tive que mover os arquivos para um diretório temporário e depois voltar novamente para que qualquer coisa funcionasse.

#!/bin/bash

set -e

function makeLinks() {
    ln -sfn ~/Documents/Dotfiles/.bash_profile ~/.bash_profile\
    ln -sfn ~/Documents/Dotfiles/.gitconfig ~/.gitconfig\
    ln -sfn ~/Documents/Dotfiles/.gitignore_global ~/.gitignore_global
    source ~/.bash_profile;
    }

    read -rp "This may overwrite existing files. Are you sure? (y/n) " -n 1;
    echo "";
    if [[ $REPLY =~ ^[Yy]$ ]]; then
        makeLinks
    fi;
    
por Chris 22.09.2016 / 18:19

1 resposta

1

Para expandir o comentário: as barras invertidas à direita fazem com que os três comandos ln sejam tratados como uma linha. Você não quer isso. Você quer três linhas diferentes. Então, quando eu ecoo as três linhas aqui é como elas são analisadas.

$ echo ln -sfn ~/Documents/Dotfiles/.bash_profile ~/.bash_profile\
>     ln -sfn ~/Documents/Dotfiles/.gitconfig ~/.gitconfig\
>     ln -sfn ~/Documents/Dotfiles/.gitignore_global ~/.gitignore_global
ln -sfn /cygdrive/d/home/prateek/Documents/Dotfiles/.bash_profile /cygdrive/d/home/prateek/.bash_profile ln -sfn /cygdrive/d/home/prateek/Documents/Dotfiles/.gitconfig /cygdrive/d/home/prateek/.gitconfig ln -sfn /cygdrive/d/home/prateek/Documents/Dotfiles/.gitignore_global /cygdrive/d/home/prateek/.gitignore_global

Você pode ver como a saída do echo todos os comandos estão listados em uma linha. Remover as barras invertidas não causará esse comportamento. Cada comando será tratado separadamente.

    
por 22.09.2016 / 18:45