Qual é o equivalente bash do comando zsh vared?

5

Eu vi que com zsh vared você pode editar rapidamente a variável de ambiente especificada. Existe um comando equivalente para bash ?
Obrigado

    
por Carlo 09.05.2013 / 15:06

3 respostas

6

Não estou ciente de nada que funcione como zsh vared in bash , fora da caixa.

No entanto, você pode definir uma função que permitirá editar o valor de uma variável de ambiente usando, por exemplo, vim :

function vared {
  [[ $# -eq 1 ]] || { echo "Usage: vared VARNAME" >&2 ; return 1 ; }
  tmpfile=$( command mktemp -t vared.XXXX )
  echo "${!1}" > "$tmpfile"
  command vim "$tmpfile" && export $1="$(< "$tmpfile" )"
  command rm "$tmpfile"
}

Chame como vared PATH .

O que isso faz? Ele cria um arquivo temporário, grava o valor atual da variável especificada no arquivo e abre vim com o arquivo temporário como argumento. Agora você deve editar o valor, salvar e sair de vim (você pode sair sem salvar o arquivo para pular as alterações de salvamento). Depois, o conteúdo do arquivo é definido como o novo valor da variável, a coisa toda é exportada e o arquivo temporário é removido. command é necessário para ignorar alias de shell e pesquisas de funções, por exemplo um rm alias para rm -i perguntaria antes de excluir o arquivo no final.

Se a variável não existe ou não é uma variável ambiente , será depois.

    
por 09.05.2013 / 15:36
2

no bash 4.x você pode fazer exatamente a mesma coisa como esta

# bash
read -e -p 'edit your path: ' -i "$PATH" PATH

# zsh
vared -p 'edit your path: ' PATH

fonte link

docs link

    
por 13.11.2016 / 00:25
0

Isto é baseado na resposta do thecotne , escrita para o GNU Bash 4.3:

vared(){
    # Based on the zsh builtin of the same name.
    IFS= read -rei "${!1}" "$1"
}

Observe que isso tem algumas diferenças sutis em relação ao Zsh interno, por exemplo:

  • não haverá erro se a variável não estiver definida
  • Verifica a validade do nome da variável antes imprimir seu valor (por exemplo, vared $ )
  • Trunca variáveis de várias linhas.
por 21.04.2018 / 21:42

Tags