Como gerar uma string aleatória em um alias de perfil?

2

Eu tenho um alias no /etc/profile do meu servidor, o que gera um diretório aleatório no comando, assim:

alias rdir="mkdir -p ./'cat /dev/random | tr -cd 'a-z0-9' | head -c 8'/"

Mas acontece que isso gera sempre a mesma string (neste caso: diretório). Eu já descobri que isso parece estar relacionado a source 'do arquivo de perfil e só gera uma nova string aleatória depois que eu chamo source /etc/profile .

Agora, eu me pergunto, como eu gero uma string aleatória em um alias que sempre muda quando eu chamo o alias, como neste exemplo: rdir ? (Sem re-co_de% -ing?)

    
por soc1c 21.07.2015 / 09:55

2 respostas

7

Use aspas simples em vez de aspas duplas:

alias rdir='mkdir -p ./$(cat /dev/urandom | tr -cd 'a-z0-9' | head -c 8)/'

Agora, a instrução é avaliada toda vez que o alias é chamado. Com aspas duplas, a instrução é avaliada ao definir o alias, portanto estático.

Além disso, uma solução mais simples para criar um diretório aleatório dentro do diretório de trabalho atual seria usar mktemp :

alias rdir='mktemp -d --tmpdir=./'
    
por 21.07.2015 / 10:14
3

Você também pode usar pwgen em vez de cat ing e filtrar /dev/random :

alias mkranddir='mkdir $(pwgen -s 8 1)'
    
por 21.07.2015 / 10:20