Esta pergunta não é uma duplicata de Por que o alias se comporta diferente de executar o comando bash diretamente? porque eu tentei essa solução e não funcionou. Substituí todas as minhas aspas simples por aspas duplas e vice-versa. O comando não funciona de nenhuma maneira.
Estou tentando implementar um alias, sys
, que abrirá um arquivo no qual acompanho as alterações no meu sistema, sys.md
, anexar uma data, arrancar essa linha, colar a linha, substituí-la por -
's para o formato markdown h2, abrir um nova linha e insira um -
para o formato de marcador de redução. De vi.stackexchange.com, recebi ajuda para implementar o comando. Funciona:
nvim +'$pu_|r!date' +'norm yypVr-o ' ~/notes/sys.md
Quando substituo as aspas simples por aspas duplas, o $pu_ é avaliado e recebo
zsh: event not found: date
Portanto, as aspas simples são importantes. No entanto, quando implemento o alias
alias sys="nvim +'$pu_|r!date' +'norm yypVr-o- ' ~/notes/sys.md"
O alias falha. nvim
opens , mas a data é anexada à segunda linha e não à parte inferior. Claramente $pu_ está sendo avaliado como uma variável do BASH. ( nvim
o verificador de sintaxe do 's até mostra que ele é avaliado.) Invertendo os doubles e singles para produzir
alias sys='nvim +"$pu_|r!date" +"norm yypVr-o- " ~/notes/sys.md'
Tem o mesmo comportamento. Backticks,
alias sys=`nvim +"$pu_|r!date" +"norm yypVr-o- " ~/notes/sys.md`
Congela o bash source .zshrc
. Não sei como proceder. Qualquer ajuda seria muito apreciada.
Basta colocá-lo em uma função bash (você pode adicionar a função a
.bashrc
):Então você pode invocá-lo como faria com um alias.
Se o seu único problema é entender como ter um
single quote
caractere dentro de uma única string entre aspas, aqui está o método. Usar:para o
single quote
caractere dentro da string entre aspas simples.Isso encerra a string entre aspas atual, insere uma aspas entre aspas e inicia uma nova string entre aspas.
BTW: como este é um problema frequente,
bosh
vem com um método para automatizar essa conversão. Você pode buscáschilytools
-los e compilá-los e depois brincar com arquivosbosh
. Se você ligar:O valor em
aliasreplacement
é inserido noraw
modo e se você chamar mais tarde:você vê o alias na forma citada corretamente e se você inserir
você vê o alias no
raw
modo.