Uma regra geral de aliases: se ficar muito complexo para um alias, use uma função.
tomcat_id () {
ps -ef | grep catalina | grep -v grep | awk -F' ' '{print $2}'
}
O problema com sua definição de alias é que você entendeu errado. A linha que define o alias é um comando shell e é analisada pelo shell. Como você usou aspas duplas e provavelmente não há parâmetros posicionais no momento (então $2
expande para uma string vazia), o alias que você definiu é
ps -ef | grep catalina | grep -v grep | awk -F' ' '{print }'
A maneira fácil de definir um alias é usar aspas simples para a definição e evitar o uso de aspas simples no comando com alias. Enquanto eu estou nisso, eu removi -F " "
, que é o padrão de qualquer maneira (e um pouco estranho porque parece "um espaço", mas significa "qualquer seqüência de espaço em branco").
alias tomcat_id='ps -ef | grep catalina | grep -v grep | awk "{print \}"'
Ou você pode usar '\''
para citar efetivamente uma única aspas dentro de um literal com aspas simples.
alias tomcat_id='ps -ef | grep catalina | grep -v grep | awk '\''{print \}'\'
Mas, como escrevi acima, use uma função, é mais claro. Ou melhor, use a ferramenta apropriada para o trabalho:
alias tomcat_id='pgrep catalina'
ou
alias tomcat_id='pidof catalina'