Comando Linux não está funcionando como alias

1

Eu criei um comando para contar o número de sessões que cada usuário em nosso servidor possui. É:

who | awk '{ print $1}' | sort | uniq -c | sort

que funciona bem, mas quando eu movo isso para um alias no servidor eu só recebo o retorno de who ,

alias who_con="who | awk '{ print $1}' | sort | uniq -c | sort";

Eu pensei que poderia ter sido as aspas duplas, então eu tentei aspas simples para o encapsulamento, mas eu tenho o mesmo comportamento,

alias who_con='who | awk "{ print $1}" | sort | uniq -c | sort';
    
por chris85 26.03.2018 / 22:22

1 resposta

6

Você precisa escapar do dólar em $1 .

$ alias wW="who | awk '{ print \}' | sort | uniq -c | sort"
$ wW
      1 tomasz

$1 deve ser expandido por awk, não pelo shell. Sem o escape adicional, ele é expandido pelo shell. Você precisa de mais um nível de fuga. Isso também fará:

$ alias who_con='who | awk "{ print \}" | sort | uniq -c | sort';
$ who_con
      1 tomasz
    
por 26.03.2018 / 22:29