Basta colocá-lo em uma função bash (você pode adicionar a função a .bashrc
):
sys() {
nvim +'$pu_|r!date' +'norm yypVr-o ' ~/notes/sys.md
}
Então você pode invocá-lo como faria com um alias.
Esta questão não é uma duplicata de Por que o alias se comporta de maneira diferente do que executar o comando bash diretamente? porque tentei essa solução e ela não funcionou. Eu substituí todas as minhas aspas simples por aspas duplas e vice-versa. O comando não funciona de jeito nenhum.
Estou tentando implementar um alias, sys
, que abrirá um arquivo. Acompanho alterações no meu sistema em sys.md
, adiciono uma data, puxo essa linha, colo a linha, substituo por -
para o formato markdown h2, abra uma nova linha e insira um -
para o formato de marcação markdown. De vi.stackexchange.com recebi alguma 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 eu implementar o alias
alias sys="nvim +'$pu_|r!date' +'norm yypVr-o- ' ~/notes/sys.md"
O alias falha. nvim
abre, mas a data é anexada à segunda linha e não ao final. Claramente, $ pu_ está sendo avaliado como uma variável da BASH. (o verificador de sintaxe nvim
mostra que ele deve ser avaliado). Invertendo as duplas e singles para renderizar
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 em source .zshrc
. Eu não sei como proceder. Qualquer ajuda seria muito apreciada.
Se o seu único problema é entender como ter um caractere single quote
dentro de uma única string entre aspas, aqui está o método. Use:
'\''
para o caractere single quote
dentro da string com aspas simples.
Isso encerra a string citada atual, insere uma aspa entre aspas e, em seguida, inicia uma nova string entre aspas.
BTW: como esse é um problema freqüente, bosh
vem com um método para automatizar essa conversão. Você pode buscar schilytools
e compilá-los e depois reproduzir com bosh
. Se você ligar:
set -o hashcmds
#b aliasname aliasreplacement
O valor em aliasreplacement
é inserido no modo raw
e, se você chamar mais tarde:
alias aliasname
você vê o alias no formulário corretamente citado e se digitar
alias -R aliasname
você vê o alias no modo raw
.