Shell (computação): diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
m a forma correta é intermedeia - estranho mas é correto - desfazendo - retirando o intermedia (usando Huggle)
kernel
Linha 3:
{{revisão}}
 
=== O termo técnico '''SHELL''' , em computação, é considerado genericamente a camada externa entre o usuário e o [[Núcleo_(informática)|kernel]] (núcleo) de um sistema operacional. O termo '''Shell''' é mais usualmente utilizado para se referir aos programas de sistemas do tipo [[Unix]] que podem ser utilizados como meio de interação entre interface de usuário para o acesso serviços do kernel no sistema operacional. Este é um programa que recebe, interpreta e executa os comandos de usuário, aparecendo na tela como uma linha de comandos, representada por um [[interpretador de comandos]], que aguarda na tela os comandos do usuário. "Shell" é também usado para descrever aplicações, incluindo software que é "construído em torno" de um componente específico, como navegadores e clientes de e-mail que são, em si mesmos, "shells" para [[motor de renderização|motores de renderização]] [[HTML]]. ===
 
=== Geralmente, shells do sistema operacional usam uma [[interface de linha de comando]] (CLI) ou [[interface gráfica do usuário]] (GUI). Mac OS xxx e Windows xxx são sistemas operacionais amplamente utilizados com interfaces gráficas.<ref>{{cite journal
{{cite journal
| last = Esposito
| first = Dino
Linha 13 ⟶ 12:
| issue = November 2001
| url = http://msdn.microsoft.com/en-us/magazine/cc302214.aspx
| accessdate = September 11, 2012}}</ref><ref>{{cite book
{{cite book
| last = Esposito
| first = Dino
Linha 21 ⟶ 19:
| date = December 1998
| isbn = 978-1861001849
| jfm = }}</ref><ref>{{cite book
{{cite book
| last = Seely
| first = Scott
Linha 29 ⟶ 26:
| date = June 15, 2000
| isbn = 978-0130254962}}
</ref> ===
 
=== A escolha ideal de interface com o usuário depende da função no computador em particular a operação. CLIs permitem algumas operações a serem executadas mais rapidamente, reorganizando grandes blocos de dados, por exemplo. CLIs podem serem melhores para os servidores que são gerenciados por especialistas: administradores, enquanto GUIs oferecem simplicidade e facilidade de uso e seria mais adequado para edição de imagem, [[Desenho assistido por computador|CADD]] e [[editoração eletrônica]]. Na prática, muitos sistemas fornecem ambas a interfaces de usuário que podem ser chamadas em uma base de comando por comando. O Windows xxx é o exemplo mais óbvio, com o seu "prompt de comando" e no modo normal "windows". Não é nenhum exagero dizer que tanto a Apple Macintosh OS xxx e Microsoft Windows xxx revolucionaram a [[Computador doméstico|computação doméstica]], ajudando os usuários relativamente inexperientes com interface de um PC usando uma GUI. ===
 
=== Em [[Sistema especialista|sistemas especialista]], um shell é um pedaço de software que é um sistema especialista "vazio", sem a base de conhecimento para qualquer aplicação em particular.<ref>[http://books.google.com/books?id=g8Bds8ssYYgC&pg=PA135&dq=%22shell+is+a+piece%22+%22expert+system%22&hl=sv#v=onepage&q=%22shell%20is%20a%20piece%22%20%22expert%20system%22&f=false British Computer Society: The BCS glossary of ICT and computing terms, Pearson Education, 2005, ISBN 0-13-147957-1, ISBN 978-0-13-147957-9, page 135]</ref> ===
 
=== História ===
O primeiro [[shell Unix]], o sh criado por [[Ken Thompson]], foi modelado depois do shell [[Multics]],<ref>http://www.multicians.org/unix.html</ref> em si modelado com base no programa [[RUNCOM]] de [[Louis Pouzin]]. O sufixo 'rc' presente em alguns arquivos de configuração do unix (".vimrc"), é um remanescente do ancestral RUNCOM dos shells Unix
 
=== O primeiro [[shell Unix]], o sh criado por [[Ken Thompson]], foi modelado depois do shell [[Multics]],<ref>http://www.multicians.org/unix.html</ref> em si modelado com base no programa [[RUNCOM]] de [[Louis Pouzin]]. O sufixo 'rc' presente em alguns arquivos de configuração do unix (".vimrc"), é um remanescente do ancestral RUNCOM dos shells Unix ===
Quase todos os shells dos sistemas operacionais dos 1970 podem ser usados de duas formas: interativa e modo ''batch'' ou lote. O modo batch envolve estruturas, condicionais, variáveis e outros elementos de linguagem de programação. Alguns tem as apenas o necessário para um propósito específico, outras atendem propósitos mais diversos e sofisticados.
 
=== Quase todos os shells dos sistemas operacionais dos 1970 podem ser usados de duas formas: interativa e modo ''batch'' ou lote. O modo batch envolve estruturas, condicionais, variáveis e outros elementos de linguagem de programação. Alguns tem as apenas o necessário para um propósito específico, outras atendem propósitos mais diversos e sofisticados. ===
== Texto (CLI) shells==
{{VT|Lista de interpretadores de linha de comando}}
 
=== Texto (CLI) shells ===
A tradução de Shell para português neste caso, pode significar "[[concha]]" ou "casca". Na informática o Shell, de maneira genérica, é um programa que intermedeia o contato entre o usuário e o computador. É a interface entre o usuário e o sistema operacional (kernel).
{{VT|Lista de interpretadores de linha de comando}}
Aqui descreveremos o termo mais comum usado cotidianamente, que se refere aos interpretadores de comandos dos sistemas [[Unix]] e seus similares.
 
=== A tradução de Shell para português neste caso, pode significar "[[concha]]" ou "casca". Na informática o Shell, de maneira genérica, é um programa que intermedeia o contato entre o usuário e o computador. É a interface entre o usuário e o sistema operacional (kernel).
A [[interface de linha de comando]] (CLI) é um shell do sistema operacional que utiliza caracteres alfanuméricas digitadas em um teclado para fornecer instruções e dados para o sistema operacional, de forma interativa. Por exemplo, um [[teletypewriter|teletipo]] pode enviar códigos que representam combinações de teclas para um programa interpretador de comandos em execução no computador, o interpretador de comandos analisa a seqüência de teclas e responde com uma mensagem de erro se não puder reconhecer a sequência de caracteres, ou pode realizar algum outro programa de ação, tais como o carregamento de um programa de aplicação, listando os arquivos, login de um usuário e muitos outros. Sistemas operacionais como o UNIX tem uma grande variedade de programas [[Unix shell|shell]] com diferentes comandos, sintaxe e capacidades. Alguns sistemas operacionais tiveram apenas um único estilo de interface de comando, sistemas operacionais de commodities, como [[MS-DOS]] veio com uma interface de comando padrão, mas as interfaces de terceiros também foram frequentemente disponíveis, fornecendo recursos ou funções, como menuing ou execução remota de programas adicionais.
Aqui descreveremos o termo mais comum usado cotidianamente, que se refere aos interpretadores de comandos dos sistemas [[Unix]] e seus similares. ===
 
=== A [[interface de linha de comando]] (CLI) é um shell do sistema operacional que utiliza caracteres alfanuméricas digitadas em um teclado para fornecer instruções e dados para o sistema operacional, de forma interativa. Por exemplo, um [[teletypewriter|teletipo]] pode enviar códigos que representam combinações de teclas para um programa interpretador de comandos em execução no computador, o interpretador de comandos analisa a seqüência de teclas e responde com uma mensagem de erro se não puder reconhecer a sequência de caracteres, ou pode realizar algum outro programa de ação, tais como o carregamento de um programa de aplicação, listando os arquivos, login de um usuário e muitos outros. Sistemas operacionais como o UNIX tem uma grande variedade de programas [[Unix shell|shell]] com diferentes comandos, sintaxe e capacidades. Alguns sistemas operacionais tiveram apenas um único estilo de interface de comando, sistemas operacionais de commodities, como [[MS-DOS]] veio com uma interface de comando padrão, mas as interfaces de terceiros também foram frequentemente disponíveis, fornecendo recursos ou funções, como menuing ou execução remota de programas adicionais. ===
Programas de aplicação também pode implementar uma interface de linha de comando. Por exemplo, em sistemas Unix-like, o [[telnet]] programa tem uma série de comandos para controlar um link para um sistema de computador remoto. Uma vez que os comandos para o programa são teclas digitadas como os dados a serem transmitidos para um computador remoto, alguns meios de distinguir os dois são necessários. Uma [[sequência de escape]] pode ser definida, usando uma combinação de teclas especiais no local que nunca é passado, mas sempre interpretada pelo sistema local. O programa torna-se restrito, alternando entre interpretar os comandos do teclado ou passando batidas de teclas como os dados a serem processados.
 
=== Programas de aplicação também pode implementar uma interface de linha de comando. Por exemplo, em sistemas Unix-like, o [[telnet]] programa tem uma série de comandos para controlar um link para um sistema de computador remoto. Uma vez que os comandos para o programa são teclas digitadas como os dados a serem transmitidos para um computador remoto, alguns meios de distinguir os dois são necessários. Uma [[sequência de escape]] pode ser definida, usando uma combinação de teclas especiais no local que nunca é passado, mas sempre interpretada pelo sistema local. O programa torna-se restrito, alternando entre interpretar os comandos do teclado ou passando batidas de teclas como os dados a serem processados. ===
Uma característica de muitos shells de linha de comando é a capacidade de salvar sequências de comandos para re-uso. Um arquivo de dados pode conter sequências de comandos que o CLI podem ser feitas a seguir como se digitado pelo usuário. Recursos especiais no CLI pode aplicar quando se está levando a cabo estas instruções armazenados. Esses [[arquivo Batch|arquivos em Batch]] (arquivos de script) pode ser usado repetidamente para automatizar operações de rotina, como a inicialização de um conjunto de programas quando o sistema é reiniciado. O shell de linha de comando pode oferecer recursos como [[conclusão de linha de comando]], onde o intérprete se expande comandos com base em uma entrada de alguns personagens pelo usuário. A intérprete de linha de comando pode oferecer uma função de histórico, de modo que o usuário pode chamar comandos anteriores emitidos para o sistema e repeti-los, possivelmente com alguma edição.
 
=== Uma característica de muitos shells de linha de comando é a capacidade de salvar sequências de comandos para re-uso. Um arquivo de dados pode conter sequências de comandos que o CLI podem ser feitas a seguir como se digitado pelo usuário. Recursos especiais no CLI pode aplicar quando se está levando a cabo estas instruções armazenados. Esses [[arquivo Batch|arquivos em Batch]] (arquivos de script) pode ser usado repetidamente para automatizar operações de rotina, como a inicialização de um conjunto de programas quando o sistema é reiniciado. O shell de linha de comando pode oferecer recursos como [[conclusão de linha de comando]], onde o intérprete se expande comandos com base em uma entrada de alguns personagens pelo usuário. A intérprete de linha de comando pode oferecer uma função de histórico, de modo que o usuário pode chamar comandos anteriores emitidos para o sistema e repeti-los, possivelmente com alguma edição. ===
Uma vez que todos os comandos para o sistema operacional tinha de ser digitado pelo usuário, nomes de comandos curtos e sistemas compactos para que representam opções do programa eram comuns. Nomes curtos eram às vezes é difícil para um usuário para se lembrar, e os sistemas de início não tinha os recursos de armazenamento para fornecer um guia de instruções do usuário on-line detalhado.
Existem diversas implementações de Shell, dentre os quais podemos mencionar o [[csh]], [[tcsh]], [[Bourne shell|sh]], [[bash]], [[ksh]], [[zsh]] e muitos outros. Cada um pode executar comandos gerais do sistema de maneira semelhante, porém possuem estruturas e comandos próprios que os diferenciam. Outra grande diferença entre os diversos tipos de Shell são as facilidades que eles oferecem para o reaproveitamento de comandos e manipulação da linha de comandos.
 
=== Uma vez que todos os comandos para o sistema operacional tinha de ser digitado pelo usuário, nomes de comandos curtos e sistemas compactos para que representam opções do programa eram comuns. Nomes curtos eram às vezes é difícil para um usuário para se lembrar, e os sistemas de início não tinha os recursos de armazenamento para fornecer um guia de instruções do usuário on-line detalhado.
Todo o usuário em sistemas Unix e similares tem um shell associado a si em seu cadastro. Podemos dizer que o Shell do usuário "fulano" é o csh, por exemplo, se este for o Shell cadastrado para o usuário. Embora o cadastro só permita associar um shell a cada usuário é muito simples passar de um shell para outro, passando a usar outro interpretador de comandos, bastando para isso chamar o outro shell desejado, da mesma maneira que qualquer comando é executado. Se um usuário, por exemplo, está no shell "sh" e executa o comando "csh", passa neste momento a usar o shell "csh" como interpretador de comandos até que saia dele com o comando "exit" ou outro comando para sair do shell.
Existem diversas implementações de Shell, dentre os quais podemos mencionar o [[csh]], [[tcsh]], [[Bourne shell|sh]], [[bash]], [[ksh]], [[zsh]] e muitos outros. Cada um pode executar comandos gerais do sistema de maneira semelhante, porém possuem estruturas e comandos próprios que os diferenciam. Outra grande diferença entre os diversos tipos de Shell são as facilidades que eles oferecem para o reaproveitamento de comandos e manipulação da linha de comandos. ===
 
=== Todo o usuário em sistemas Unix e similares tem um shell associado a si em seu cadastro. Podemos dizer que o Shell do usuário "fulano" é o csh, por exemplo, se este for o Shell cadastrado para o usuário. Embora o cadastro só permita associar um shell a cada usuário é muito simples passar de um shell para outro, passando a usar outro interpretador de comandos, bastando para isso chamar o outro shell desejado, da mesma maneira que qualquer comando é executado. Se um usuário, por exemplo, está no shell "sh" e executa o comando "csh", passa neste momento a usar o shell "csh" como interpretador de comandos até que saia dele com o comando "exit" ou outro comando para sair do shell. ===
== Shells gráficos ==