Estou tentando escrever uma função de alias do git com aspas simples para renomear e confirmar arquivos que podem ter espaços em seus nomes, mas não funciona:
$ grep '^\s*mvv' ~/.gitconfig
mvv = '!f() { cd ${GIT_PREFIX:-.};git mv -v "$1" "$2";git commit -uno "$1" "$2" -m "Renamed $1 to $2"; }; f'
$ git mvv "9.1.3 Packet Tracer - Identify MAC and IP Addresses - ILM.pdf" 9.1.3_Packet_Tracer_-_Identify_MAC_and_IP_Addresses_-_ILM.pdf
fatal: bad alias.mvv string: unclosed quote
$ git config alias.mvv
'!f() { cd ${GIT_PREFIX:-.}
Eu também tentei isso:
$ grep '^\s*mvv' ~/.gitconfig
mvv = !sh -c '{ cd ${GIT_PREFIX:-.};git mv -v "$1" "$2";git commit -uno "$1" "$2" -m "Renamed $1 to $2"; }'
$ git mvv "9.1.3 Packet Tracer - Identify MAC and IP Addresses - ILM.pdf" 9.1.3_Packet_Tracer_-_Identify_MAC_and_IP_Addresses_-_ILM.pdf
sh -c '{ cd ${GIT_PREFIX:-.}: 1: Syntax error: Unterminated quoted string
$ git config alias.mvv
!sh -c '{ cd ${GIT_PREFIX:-.}
$
Mas quando eu executo, aparece fatal: bad alias.mvv string: unclosed quote
erro.
Espero que funcione.
A resposta curta parece ser "não, use aspas duplas". Para evitar o escape manual de cotações internas, pode-se pedir ao Git para fazer o escape:
então veja
.git/config
- Git escapa aspas duplas no alias:PS. Funciona apenas em ambientes Unix/Linux ou semelhantes ao Linux (leia
git-bash
); Os intérpretes de comandos do AFAIK Windows não gostam de apóstrofos (aspas simples) na linha de comando. Alguém com melhor conhecimento, por favor, me corrija se eu estiver errado.git help config
regras na seção de sintaxe para cotação em configurações com valor de string:Não há nada aí sobre singlequoting.
Então:
está simplesmente errado.
é o que você quer. Você não quer aspas simples no valor, isso impediria o shell de ver a sintaxe de substituição do shell que você incorporou, mas você certamente poderia usá-las onde quiser esse efeito.