script shell [RESOLVIDO]

1. script shell [RESOLVIDO]

Sérgio Gelli
sergelli

(usa openSUSE)

Enviado em 09/04/2008 - 17:39h

Olá Pessoal

Como executo o comando "history" dentro de um script shell ?

Ao executar o script abaixo, só a data aparece.
As duas linhas abaixo não dão o resultado esperado.

#!/bin/bash
date
history
history > linhas

O linha com o comando "history" não faz nada e mesmo usando com um redirecionamento, é criado um arquivo vazio.

Sei que poderia usar o arquivo ~/.bash_history, mas não serve para que eu preciso porque só é atualizado quando se sai do console

Que fazer, alguma idéia???

Grato.


  


2. Re: script shell [RESOLVIDO]

Roberto Braga
Ishikawa

(usa Slackware)

Enviado em 10/04/2008 - 16:25h

Tente o seguinte:

#/bin/bash
date > lines
history >> lines

Não é bonito mas funciona!


3. Re: script shell [RESOLVIDO]

Marcos Miras
marcosmiras

(usa CentOS)

Enviado em 10/04/2008 - 16:43h

"Não é bonito" é boa... hehe
Realmente irá funcionar...


4. Re: script shell [RESOLVIDO]

Sérgio Gelli
sergelli

(usa openSUSE)

Enviado em 10/04/2008 - 18:00h

Funcionou!!!!!!

O mais engraçado é que a primeira linha contraria os tutoriais que existem por aí. Não tem o "!"

Beleza pura. Obrigado
Mas me diga qual foi a mágica?


5. Re: script shell [RESOLVIDO]

Andi
upc0d3

(usa Gentoo)

Enviado em 11/04/2008 - 08:47h

hahahaha...magica?!?

famoso MISTER M!


6. Explicação básica

Rodrigo Ferreira Valentim
engos

(usa openSUSE)

Enviado em 11/04/2008 - 09:19h

Quando você coloca a linha:

#!/bin/bash


Você está dizendo que o arquivo é um script que deve ser rodado com o interpretador que vem depois dele, nesse caso o /bin/bash


Acontece que quando você tirou o ! você fez com que aquela linha virasse um simples comentário, sendo totalmente descartável.

Faça o teste tirando tanto a linha #/bin/bash do script que lhe passaram, quanto a linha #!/bin/bash do seu script e você vai ver que ambos devem funciar, pois ele vai descartar o interpretador Bourne-again shell e vai usar o padrão do sistema operacional, que varia dentre distros.

Verifique o Wikipedia sobre mais explicação e lista completa de interpretadores:

http://en.wikipedia.org/wiki/Shebang_%28Unix%29


7. Re: script shell [RESOLVIDO]

Roberto Braga
Ishikawa

(usa Slackware)

Enviado em 16/04/2008 - 15:36h

Foi mal sergelli, a linha correta era:

#!/bin/bash

Que mancada hehehe...


8. Re: script shell [RESOLVIDO]

Roberto Braga
Ishikawa

(usa Slackware)

Enviado em 16/04/2008 - 15:52h

Ahh!... Você quer saber como funciona?

#!/bin/bash
# Essa linha diz a ao bash qual e
# o interpretador do script.

date > lines
# o símbolo > faz com que a saída o
# comando date seja direcionada para o
# arquivo lines (que será criado caso
# não exista).

history >> lines
# o >> significa que o bash não criará
# um novo arquivo chamado lines, mas
# adicionará a saída do history ao
#arquivo lines já existente.



9. Re: script shell [RESOLVIDO]

Sérgio Gelli
sergelli

(usa openSUSE)

Enviado em 16/04/2008 - 22:00h

Pois é Dr_Locco...

Apesar de tudo, sua dica (#/bin/bash) funcionou.
Tanto é que até perguntei qual era a mágica.

Aqui no meu PC, tem comando que não funciona quando a primeira linha é:

#!/bin/bash

Esse foi o motivo pelo qual postei a pergunta neste forum: a linha

history > lines

Não funcionava em meu PC.

Seguindo suas instruções (Como o Ergos explicou muito bem) a referida linha foi eliminada e o script passou a ser executado pelo SHELL default do meu sistema.

Conclusão: Em meu PC o SHELL /bin/bash não executa o comando:
history > lines
E o SHELL default o faz perfeitamente.

Preciso agora saber qual é o SHELL que está default em meu sistema para aponta-lo nessa fatídica primeira linha.


Obrigado à todos.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts