function editphpini() {
local version=$( echo $1 | sed 's/^\(.\)/./' )
subl /usr/local/etc/php/${version}/php.ini
}
uso:
% editphpini 54
Eu preciso configurar uma função no zsh que edite um arquivo diferente baseado em alguma entrada na linha de comando.
Eu quero simplificar meus aliases para que eu não tenha vários aliases para fazer a mesma coisa, mas com uma pequena variação. Eu estou especificamente tentando configurar uma função para abrir no meu editor diferentes versões do arquivo php.ini (para php 5.4, 5.5, 5.6 e 7.0)
Neste momento, defini os seguintes aliases:
alias editphpini54="subl /usr/local/etc/php/5.4/php.ini"
alias editphpini55="subl /usr/local/etc/php/5.5/php.ini"
alias editphpini56="subl /usr/local/etc/php/5.6/php.ini"
alias editphpini70="subl /usr/local/etc/php/7.0/php.ini"
O que eu gostaria de fazer é configurar uma função chamada editphpini
e, em seguida, inserir uma variável (número de versão) e fazer com que ela abra de maneira inteligente o arquivo correto. Isso também poderia ser à prova do futuro, contanto que o caminho básico permaneça o mesmo.
Então, o que eu quero fazer é digitar
editphpini 54
E faça a função analisar esse comando e carregar o arquivo php.ini
localizado em /usr/local/etc/php/5.4/php.ini
Usando o exemplo acima, eu seria capaz de substituir 55
56
ou 70
no final do comando e emitiria o comando relevante.
Em minha opinião, a função levaria o número da versão XX
, insira-o no comando subl /usr/local/etc/php/X.X/php.ini
usando o XX
para definir o número da versão.
Obrigado,
Ali
editphpini() subl /usr/local/etc/php/${1[1]}.${1[2,-1]}/php.ini
${1[1]}.${1[2,-1]}
é uma das muitas maneiras de transformar xyz
em x.yz
. Outras abordagens podem ser: ${1[1]}.${1#?}
ou ${1/(#m)?/$MATCH.}
ou ${(j:.:)${(s::)1}}
(para x.y.z
)