como definir o alias do comando no bash que contém tanto qoutes simples quanto duplos [duplicados]

1

Não consigo definir o alias de hexdump -e '/1 "%_ax) "' -e '/1 "%02X" "\n"'

Eu tentei seguir os métodos, mas falhou :

alias analyze=\'hexdump -e '/1 "%_ax) "' -e '/1 "%02X" "\n"'\'

(observe a primeira e a última aspas simples, escapei das duas)

alias analyze='hexdump -e \'/1 "%_ax) "\' -e \'/1 "%02X" "\n"\''

(note que neste caso eu escapei de todas as 4 aspas simples entre o comando)

alias analyze=hexdump -e '/1 "%_ax) "' -e '/1 "%02X" "\n"'

(não incluindo o comando com aspas)

Como faço para definir o alias de hexdump -e '/1 "%_ax) "' -e '/1 "%02X" "\n"' no bash?

    
por Edward Torvalds 30.04.2016 / 10:24

2 respostas

2

Regra geral, se escapar de um tipo de citações não funcionar, escape do outro:

alias analyze="hexdump -e '/1 \"%_ax) \"' -e '/1 \"%02X\" \"\n\"'"

Aqui, escapei das aspas duplas internas e citei tudo com aspas duplas.

A regra completa parece ser que você pode escapar de aspas duplas entre aspas duplas, mas não pode escapar de aspas simples entre aspas simples. Você tem que escapar dos de fora, mas não funciona quando se define um apelido.

$ alias hi='echo hi'        #works
$ alias hi='echo "hi"'      #works
$ alias hi='echo \"hi\"'    #works
$ alias hi="echo \'hi\'"    #works
$ alias hi="echo \"hi\""    #works
$ alias hi='echo \'hi\''    #doesn't work
$ alias hi=\'echo 'hi'\'    #should work but doesn't

Depois de definir o alias corretamente, você pode perguntar ao bash qual foi a resposta correta com o comando alias , que lista todos os aliases. Você pode trapacear e usar o método do @ meuh se não conseguir encontrar as citações corretas. Neste caso:

$ alias
alias analyze='hexdump -e '\''/1 "%_ax) "'\'' -e '\''/1 "%02X" "\n"'\'''
    
por 30.04.2016 / 10:29
1

Você também pode obter bash para fazer a citação escapar para você, por exemplo

read -r  <<\!
hexdump -e '/1 "%_ax) "' -e '/1 "%02X" "\n"'
!
alias analyze="$REPLY"
    
por 30.04.2016 / 10:51

Tags