2009/2/21 Elder Marco <elderma...@gmail.com>: > Oi pessoal, > > Nessa minha jornada pelo aprendizado do shell, me deparei com um problema. > Eu criei um script que é pode ser chamado atrvés de vários comandos > diferentes. Todos esse comandos são colocados são um alias definido no > arquivo ~/.bashrc. Assim, por exemplo, se eu chamo esse script de 'script', > e os dois comandos fossem mplayer e gmplayer, eu faria assim: > > alias mplayer="script" > alias gmplayer="script" > > Então esse script seria chamando em ambos os casos. Mas ele se encarregaria > de chamar os programas mplayer ou gmplayer conforme fosse chamado pelo > usuário. No entanto, é aí que reside o problema porque o script precisa > conhecer o comando que foi digitado pelo usuário. Se eu usar o argumento $0 > eu teria como resposta apenas 'script' e não mplayer ou gmplayer. Existe uma > maneira de resolver esse problema que seria fazer assim no arquivo ~/.bashrc > > alias mplayer="script mplayer" > alias gmplayer="script gmplayer" > > e então eu recuperaria o nome do programa chamado apenas pelo argumento $1 > do script executado. Mas não é esse o desafio :-) Eu queria recuperar o > último comando mesmo sem ter de fazer isso. Uma maneira de recuperar um > último comando digitado, depois de pesquisas que fiz seria fazer algo assim: > > $ ls > bak curriculum.odt > $ ultimo=!! > $ echo $ultimo > ls > > > Mas é aí que me atrapalhei: O comando mplayer seria executado em um shell e > o script em um sub-shell, não? Eu não iria conseguir resolver o problema > assim e ainda que conseguisse, poderia obter um 'script'. Alguém saberia me > informar se existe um jeito de obter no final das contas o comando mplayer > confome exemplifiquei sem recorrer ao recurso que passei? > > []'s > > > -- > Elder Marco > > Linux User: #471180 > > "O conhecimento é tristeza: aqueles que mais sabem são os que mais > profundamente devem lamentar a mais fatal verdade, a árvore do conhecimento > não é a da vida." (Versos extraídos da tragédia Manfred, de Byron e citado > por Nietzsche em "Humano, demasiado humano")
Sugestão: use links simbólicos ao invés de aliases. Pra testar eu criei aqui um arquivo chamado alfa contendo apenas: #!/bin/bash echo $0 Setei permissão de execução e criei um link simbólico pra ele chamado beta chmod +x alfa ln -s alfa beta Executando alfa, ele ecoa ./alfa. Executando beta, ele ecoa ./beta. Trabalhe com esta idéia e reporte. -- Fabiano Caixeta Duarte Especialista em Redes de Computadores Linux User #195299 Ribeirão Preto - SP