Este é um problema de citação. Use aspas simples para evitar $0
da expansão e escape corretamente de cada aspas simples literais:
alias pythonhex='sed '\''s/ */\x/g'\'' | awk '\''{print "\x"$0}'\'
Estou procurando um alias para converter o hex de hexdump
output na notação hexadecimal do "Python":
$ echo "5f 74 34 0c c9 7b 9f f8 7a 7c 46 ff ff 5c 31 26" | sed 's/ */\x/g' | awk '{print "\x"$0}'
\x5f\x74\x34\x0c\xc9\x7b\x9f\xf8\x7a\x7c\x46\xff\xff\x5c\x31\x26
O texto acima funciona, então eu tentei criar um alias no meu .bashrc
como tal:
alias pythonhex="sed 's/ */\x/g' | awk '{print \"\\x\"$0}'"
Mas parece que não funciona:
$ echo "5f 74 34 0c c9 7b 9f f8 7a 7c 46 ff ff 5c 31 26" | pythonhex
\x
Aparece, neste caso, que sed
não está recebendo nada de STDIN e awk
apenas prefixando \x
a nada.
É verdade que o problema do seu alias foi um problema de citação, resolvido corretamente pelo usuário choroba .
Mas você pode considerar uma função mais simples:
pythonhex(){ printf "4x%s" "$@"; echo; }
Usado como:
$ pythonhex 5f 74 34 0c c9 7b 9f f8 7a 7c 46 ff ff 5c 31 26
\x5f\x74\x34\x0c\xc9\x7b\x9f\xf8\x7a\x7c\x46\xff\xff\x5c\x31\x26