Command-line shell (Português)

Status de tradução:
Esse artigo é uma tradução de
Command-line shell
. Data da última tradução: 2020-04-14. Você pode ajudar a sincronizar a tradução, se houver
alterações
na versão em inglês.
Artigos relacionados
dotfiles
Utilitários principais
Do
Wikipédia
:
Um shell do Unix é um interpretador de linha de comando ou shell que fornece uma interface semelhante ao Unix tradicional. Os usuários indicam a operação do computador pela entrada de comandos como texto para um interpretador de linha de comando executar, ou criando scripts de texto de um ou mais de tais comandos.
Lista de shells
Shells que são mais ou menos
compatíveis com POSIX
são listados sob
#Compatíveis com POSIX
, enquanto shells que têm uma sintaxe diferente estão sob
#Shells alternativos
.
Compatíveis com POSIX
Esses shells podem todos serem vinculados a
/usr/bin/sh
. Quando
Bash
,
mksh
AUR
e
zsh
são chamados com o nome
sh
, eles se tornam mais compatíveis com POSIX.
Bash
— O Bash estende o shell Bourne com histórico e conclusão de linha de comando, arrays indexados e associativos, aritmética de inteiros, substituição de processos, strings
here
, correspondência de expressões regulares e expansão de chaves.
https://www.gnu.org/software/bash/
||
bash
DASH
— Descendente da versão do NetBSD do Almquist SHell (ash). Um shell rápido compatível com POSIX que pretende ser o menor possível.
http://gondor.apana.org.au/~herbert/dash/
||
dash
Korn shell
— O KornShell possui uma linguagem de programação completa, poderosa e de alto nível para escrever aplicativos, muitas vezes mais fácil e rápido do que com outras linguagens de alto nível. Isso o torna especialmente adequado para prototipagem. O ksh tem as melhores características do Bourne shell e do C shell, além de muitos novos recursos próprios. Assim, o ksh pode fazer muito para melhorar sua produtividade e a qualidade do seu trabalho, tanto na interação com o sistema quanto na programação. Os programas ksh são mais fáceis de escrever e são mais concisos e legíveis do que os programas escritos em linguagem de nível inferior, como C.
http://www.kornshell.com
||
ksh
Zsh
— Shell projetado para uso interativo, embora também seja uma poderosa linguagem de script. Muitos dos recursos úteis de Bash, ksh e tcsh foram incorporados no Zsh; vários recursos originais foram adicionados. O
documento introdutório
detalha alguns dos recursos exclusivos do Zsh.
https://www.zsh.org/
||
zsh
Dica
Scripts POSIX e Bash podem ser linted com
shellcheck
.
Shells alternativos
C shell
— Interpretador de linguagem de comando que pode ser usado tanto como um shell de login interativo quanto como um processador de comando de script de shell. Inclui um editor de linha de comando, completação de palavra programável, correção ortográfica, mecanismo de histórico, controle de trabalho e uma sintaxe tipo C.
https://www.tcsh.org
||
tcsh
Elvish
— Elvish é um shell moderno e expressivo, que pode carregar valores internos estruturados por meio de
pipelines
. Esse recurso torna possível evitar um monte de código complexo de processamento de texto. Isso permite uma linguagem de programação mais efetiva, com recursos como exceções, espaço de nome e funções anônimas. Ele também possui um readline poderoso que verifica a sintaxe enquanto digita, e realce de sintaxe por padrão.
https://elvish.io
||
elvish
fish
— Shell de linha de comando inteligente e amigável. O
fish
executa o realce da sintaxe da linha de comando em cores, bem como o realce e a completação dos comandos e dos argumentos, da existência do arquivo e do histórico. Ele oferece suporte à completação na medida em que você escreve para o histórico e os comandos. O fish é capaz de analisar as páginas man do sistema para determinar argumentos válidos para comandos, permitindo que ele realce e complete os comandos. Uma revisão fácil do último comando pode ser feita usando
Alt+Up
. O daemon de fish (fishd) facilita ter um histórico sincronizado em todas as instâncias do fish, bem como variáveis de ambiente universais e persistentes. Além disso, fish possui sintaxe de programação significativamente simplificada e fluxo de controle (similar ao ruby). Para mais informações, veja o
tutorial
.
https://fishshell.com/
||
fish
Oh
— Shell de Unix escrito em Go. É semelhante em espírito, mas diferente em detalhes de outros shells de Unix.
Oh
, estende os recursos da linguagem de programação do shell sem sacrificar os recursos interativos do shell.
https://github.com/michaelmacinnis/oh
||
oh-git
AUR
PowerShell
— O PowerShell é uma linguagem de programação orientada a objetos e um shell de linha de comando interativo, originalmente escrito para e exclusivo para o Windows. Mais tarde, foi aberto e portado para Mac OS X e Linux.
https://github.com/PowerShell/PowerShell
||
powershell
AUR
rc
— Interpretador de comando para o Plan9 que fornece recursos semelhantes ao Bourne shell do UNIX, com algumas pequenas adições e menos sintaxe idiossincrática.
https://doc.cat-v.org/plan_9/4th_edition/papers/rc
||
9base-git
AUR
xonsh
— AUm shell retrocompatível com base no interpretador python.
https://xon.sh/
||
xonsh
Alterando seu shell padrão
Depois de instalar um dos shells acima, você pode executar esse shell dentro do seu shell atual, apenas executando o executável. Se você quiser ser servido nesse shell quando você fizer login no entanto, você precisará alterar seu shell padrão.
Para listar todos os shells instalados, execute:
$ chsh -l
E para definir um como padrão para seu usuário, faça:
$ chsh -s
caminho-completo-do-shell
sendo
caminho-completo-do-shell
é o caminho completo como fornecido em
chsh -l
.
Se você agora você encerrar a sessão e iniciá-la novamente, você será saudado pelo outro shell.
Dica
chsh usa
/etc/shells
como referência. Se um shell instalado recentemente não estiver presente na lista, ele pode ser manualmente adicionado a este arquivo.
Arquivos de configuração
Para iniciar automaticamente programas no console ou no login, você pode usar os arquivos/diretórios de inicialização do shell. Leia a documentação do seu shell, ou seu artigo do ArchWiki, p. ex.,
Bash#Configuration files
ou
Zsh#Startup/Shutdown files
.
Veja também
arquivos de configuração
.
/etc/profile
Após o login, todas os shells compatíveis com Bourne usam
/etc/profile
, o que, por sua vez, origina qualquer arquivo
*.sh
legível em
/etc/profile.d/
: estes scripts não requerem uma diretiva de interpretador, nem precisam ser executáveis. Eles são usados para configurar um ambiente e definir configurações específicas do aplicativo.
Padronização
É possível fazer com que os arquivos de configuração de shells (alguns) sigam a mesma convenção de nomenclatura, além de ter suporte a alguma configuração comum entre os shells.
Veja
o artigo sobre isso
e o
repositório relacionado
.
Entrada e saída
Veja também
GregsWiki
e
Redirecionamento de E/S
.
Redirecionamentos truncam arquivos antes que os comandos sejam executados:
comando
arquivo
>
arquivo
não funcionará como esperado. Enquanto alguns comandos (
sed
, por exemplo) fornecem uma opção para editar arquivos no local, isso não acontece para muitos outros. Nesses casos, você pode usar o comando
sponge(1)
do pacote
moreutils
.
Como o
cat
não está embutido no shell, em muitas ocasiões você pode achar mais conveniente usar um
redirecionamento
, por exemplo, em scripts, ou se você se importa muito com desempenho. De fato,
<
arquivo
faz o mesmo que
cat
arquivo
.
Shells compatíveis com POSIX possuem suporte a
Here Documents
:
$ cat << EOF
um
dois
três
EOF
Pipelines
de shells operam no stdout por padrão. Para operar no
stderr(3)
, você pode redirecionar
stderr
para
stdout
com
comando
2>&1 |
outrocomando
ou, para Bash 4,
comando
|&
outrocomando
.
Lembre-se que muitos
utilitários principais
do GNU aceitam arquivos como argumentos, então, por exemplo,
grep
padrão
<
arquivo
pode ser substituído por
grep
padrão
arquivo
.
Veja também
Evolução de shells no Linux
no IBM developerWorks
terminal.sexy
— Designer de esquema de cores de terminal
Hyperpolyglot
— Comparação lado a lado das sintaxes do shell
UNIX Power Tools
— Uso geral da ferramenta de linha de comando
commandlinefu.com
— Compartilhamento de trechos de linha de comando
List of applications/Utilities#Terminal emulators