#!/bin/bash - shell script [RESOLVIDO]

Iniciado por jrmontag, 02 de Março de 2007, 09:07

tópico anterior - próximo tópico

jrmontag

Amigos, procurei mas realmente não achei oq preciso, ou pelo menos, parte disso.

Seguinte, preciso fazer em Linux um .bat ( Windows ) aonde consiga determinar várias condições, procurando aqui pelo Fórum e até pelo google, encontrei :

#!/bin/bash
cd Desktop/Kore/minha linha de comando1
cd Desktop/Kore/minha linha de comando2


Certo, acredito q essa seja a melhor maneira.

Agora, a execução ficaria assim ?

chmod 755 ./meuscript

e executar:

./meu_script

Se sim, oq o 755 representa ?

Pra terminar, no movo visual (gráfico) do Kubuntu, quando abro uma seção do Konsole ( shell ) é visualizado uma janela do tipo MS-DOS ( Windows ), e dentro dessa janela é possível a criação de vários Shells, estes ficam como abas na parte inferior da janela.

Pois bem, dentro de um shell script eu consigo em apenas um Konsole abrir váris estância do Shell ? assim ficano em diversas abas ?

Exemplo :
Vamos supor q eu execute 5 programas no schel scrip.

Esses 5 programas ficariam em 5 janelas diferentes ou apenas em 1 janela com 5 abas representado os Shells em execução ?

Se falei besteira, me perdõem, estou aprendendo sozinho, como um autodidata, e to vendo o qto é dificil....

Muito Obrigado pela atenção !

Abraços
Junior

Willdoidao

Cara o 755 é as permissões q vc dá ao arquivo:
7 -> leitura,escrita e execussão
5 -> ler e excutar
isso pq funciona assim:
4- ler
2 - gravar
1 - executar
então é só somar para dar a permissão q vc quiser, sobre a outra duvida pelo que entendi o konsole abre varias abas que vc pode ir usando, espero ter ajudado
"Penso 99 vezes e nada descubro. Deixo de pensar, mergulho no silêncio, e a verdade me é revelada." (Albert Einstein)
Abraços Will

Diego_Rocha

#2
para voce dar permissão de execução ao script faz assi


chmod +x meu_script


onde meu_script é o seu script sem ./ ok
depois para executar vc chama ele com


./meu_script


Citar
Pois bem, dentro de um shell script eu consigo em apenas um Konsole abrir váris estância do Shell ? assim ficano em diversas abas ?

Exemplo :
Vamos supor q eu execute 5 programas no schel scrip.

Esses 5 programas ficariam em 5 janelas diferentes ou apenas em 1 janela com 5 abas representado os Shells em execução ?

isso eu não entendi direito mas sei o seguinte por exemplo quando voce abre o konqueror pelo shell o shell so continua a execução do script apos fechar o konqueror ok mas ou menos isso


#!/bin/bash
echo "Abrindo o konqueror"
konqueror
echo "konqueror fechado"


isso iria mostrar o "Abrindo o konqueror" enquanto o konqueror estiver aberto o proximo comando fica esperando ok assim que voce fecha o konqueror o proximo comando é executado "konqueror fechado", então acho que nao da para voce executar varios programas juntos em seu shell enquanto um programa estiver aberto ele fica esperando voce fechar ok é isso ai ate ++


arlei

Citação de: Diego_Rocha online 02 de Março de 2007, 14:38
... então acho que nao da para voce executar varios programas juntos em seu shell enquanto um programa estiver aberto ele fica esperando voce fechar ok é isso ai ate ++

Um programa pode ser executado de duas formas:

   1. Primeiro Plano - Também chamado de foreground. Quando você deve esperar o término da execução de um programa para executar um novo comando. Somente é mostrado o aviso de comando após o término de execução do comando/programa.
   2. Segundo Plano - Também chamado de background. Quando você não precisa esperar o término da execução de um programa para executar um novo comando. Após iniciar um programa em background, é mostrado um número PID (identificação do Processo) e o aviso de comando é novamente mostrado, permitindo o uso normal do sistema.

O programa executado em background continua sendo executado internamente. Após ser concluído, o sistema retorna uma mensagem de pronto acompanhado do número PID do processo que terminou.

Para iniciar um programa em primeiro plano, basta digitar seu nome normalmente. Para iniciar um programa em segundo plano, acrescente o caracter "&" após o final do comando.

OBS: Mesmo que um usuário execute um programa em segundo plano e saia do sistema, o programa continuará sendo executado até que seja concluído ou finalizado pelo usuário que iniciou a execução (ou pelo usuário root).

T+
Arlei

Diego_Rocha

Muito bom arlei sinceramente não sabia disso obrigado t++

jrmontag

#5
Humm, entendi....

Então quer dizer que :

#!/bin/bash
cd Desktop/Kore/minha linha de comando1&
cd Desktop/Kore/minha linha de comando2&


Será executado em 2º plano, ou seja, não preciso esperar a execução de 1 pra começar o 2 ?

E sobre minha última dúvida sobre as abas, vou tentar explicar melhor.

Quando abro o Konsole, visualizo uma tela preta, como se fosse o prompt de comando do ms-dos, certo, porém, percebi q nessa janela consigo abrir mais de 1 shell, ou seja, cada shell q eu abro, uma nova aba é aberta para trabalho.

Assim fico com apenas 1 janela aberta, mas com várias abas, cada uma representando um shell aberto.

A minha dúvida é, se eu executar o .sh chamando 5 comandos, os 5 comandos serão abertos na mesma janela mas com 5 abas ou 5 janelas do shell irão de abrir ?

Muito Obrigado a todos ! Estou aprendendo muito aqui no Fórum.

Abraços
Junior

solanoalves

Sim suponho que sejam abertos numa mesma janela

Diego_Rocha

#7
Não sei se falo besteira mas acho que os comandos por rodar en segundo plano não vai abrir nenhum outro terminal e muito menos abas, não sei se estou certo vc pode testar e ver e a melhor forma ate mais; :D

*testado e confirmado não abre nem outro terminal como tbm nao abre outra aba t++

jrmontag

#8
Bom, vamos lá, fiz o seguinte :

criei um arquivo chamado liga.sh com esse conteúdo :

#!/bin/bash
echo "Abrindo o konqueror"
konqueror
echo "konqueror fechado"


- Abri o Shell, fui até o Desktop que é aonde está o arquivo.
- Confirmei com ls, o arquivo liga.sh está na pasta
- usei chmod 755 ./liga.sh
- usei chmod +x ./liga.sh
- tentei chamar com ./liga.sh e ./liga

Um erro é gerado :

bad interpreter : No such file or directory

Oq pode ser ?

Obrigado a todos.

Diego_Rocha

#9
simplesmente pq vc nao tem o konqueror tem o nautilus muda konqueror para nautilus que vai funcionar
konqueror é do kde e como uso kde usei ele no exemplo perdão porem vc tem gnome entao usa o nautilus é isso ai ate mais;

jrmontag

Eu uso KDE, tenho Kubuntu.

Se eu digitar Konqueror no shell funciona normalmente.

Diego_Rocha

Citação de: jrmontag online 02 de Março de 2007, 18:47
Bom, vamos lá, fiz o seguinte :

criei um arquivo chamado liga.sh com esse conteúdo :

#!/bin/bash
echo "Abrindo o konqueror"
konqueror
echo "konqueror fechado"


- Abri o Shell, fui até o Desktop que é aonde está o arquivo.
- Confirmei com ls, o arquivo liga.sh está na pasta
- usei chmod 755 ./liga.sh
- usei chmod +x ./liga.sh
- tentei chamar com ./liga.sh e ./liga

Um erro é gerado :

bad interpreter : No such file or directory

Oq pode ser ?

Obrigado a todos.

Ai cara na hora de dar permissão de execução so faça isso,


chmod +x meu_script


sem ultilizar ./ ok como te disse la encima, e depois para executar ai sim coloque ./ assim


./meu_script


t++

jrmontag

Agradeço mto a ajuda, mas ainda nada.

Arquivo lig.sh em Desktop.

- chmod +x lig.sh ( também já tentei com ./lig.sh )
- ./lig.sh ( ja tentei também com espaço, ./ lig.sh )

Erro : bad interpreter: No such file or directory

Conteúdo do arquivo lig.sh

#!/bin/bash
echo "Abrindo o konqueror"
konqueror
echo "konqueror fechado"


Lembrando que, konqueror é apenas um teste, com qualquer outro comando também dá a mesma mensagem de erro.

O Arquivo lig.sh está sim no Desktop, confirmo antes com ls.

Obrigado novamente !

Diego_Rocha

Perdão mas acho que voce nao esta prestando atenção no modo que escrevo, NAO NECESSITA .sh NO FINAL,
olhe os exemplos que te dei acima volto a te mostrar mas preste atenção ok



chmod +x liga



e depois para executar



./liga



lembrando que voce tem que estar no diretorio onde o script esta se esta em Desktop voce tem que ir em desktop e executar os comando acima ate mais

jrmontag

Novamente agradeço, mas ainda nada.

Gerei o arquivo no Desktop, estou dentro do Desktop, confirmo isso com ls

Quando digoto chmod +x liga

Erro : No such file or directory

Mais uma vez Obrigado, estou quase desistindo dos .sh, mas obrigado mesmo assim.