Acabei de instalar o Ubuntu há alguns dias. Tanto quanto posso dizer, o terminal é uma grande parte de qualquer distribuição Linux. Minha pergunta neste momento é por quê? Quando eu procuro algo sobre isso, os comandos colocados no terminal são todos facilmente executados através da GUI. Então, quais são as vantagens de usar o terminal?
Edit: Obrigado pelas respostas a todos. Depois de um pouco bisbilhotando, e com a ajuda de suas respostas, agora posso entender seu uso. Posso dizer com orgulho que, nos últimos três dias, eu o uso há quase tudo e espero em breve ter uma melhor compreensão sobre scripts.
command-line
LurkDog
fonte
fonte
Respostas:
O terminal no Unix é uma ferramenta maravilhosa e poderosa. Ao fazer a transição do mundo do Windows, é difícil apreciar isso porque o shell do Windows (cmd.exe) é bastante, como eu digo bem, faltando. A maioria * nix conchas padrão (
bash
,zsh
, etc) têm várias vantagens:Ele é padronizado através do POSIX e da Single Unix Specification; portanto, um script que você escreve para um computador provavelmente funcionará em todas as máquinas compatíveis com POSIX (supondo que você se restrinja a comandos padrão, dos quais existem muitos ). A Microsoft tem o hábito de incluir ferramentas em algumas versões e não em outras, tornando a programação em lote muito imprevisível
Como o Unix foi construído a partir do terminal, quase tudo é configurável a partir da linha de comando. O Windows era assim até certo ponto, mas eles optaram por deixar o subsistema de 16 bits e o DOS com ele. Agora, a GUI é a única maneira de mudar algumas coisas no Windows.
Porque é tão flexível. Os comandos podem ser canalizados juntos (
ls | grep filename
), podem ser capturados (gcc program.c > ./standard_out 2> ./standard_error
) e podem ser substituídos (ls /home/`whoami`
ouls /home/$(whoami)
)Porque os utilitários UNIX são projetados para fazer uma coisa e fazê-lo bem. Basta olhar em
awk
,grep
,sed
,wget
ou uma série de outros. Sozinhos, eles realizam uma única tarefa, mas, com os números 3 e 2, podem ser construídos em expressões poderosas.Devido à capacidade de automatizar tarefas.
cron
Os scripts bash permitem que tarefas longas, complicadas e / ou repetitivas sejam simplificadas ou automatizadas completamente.Porque os seres humanos são propensos a erro. Scripts de shell relativamente curtos podem ser usados para alterar as configurações de maneira consistente. As verificações de segurança podem ser incorporadas aos scripts, em vez de confiar nos usuários para saber quais comandos são seguros para executar em diferentes circunstâncias.
fonte
ls /home/$(whoami)
hoje em dia :-)' #cron
porta, quando você volta do trabalho ...Existem inúmeras vantagens em usar o terminal. Os argumentos variam de conveniência, produtividade a nostalgia. Aqui estão alguns :
Há algumas coisas que você (em vez de eu) simplesmente não consegue realizar usando uma GUI. Não é porque não é factível, é simplesmente porque ninguém se preocupou em escrever uma GUI para esses comandos. Por exemplo, se eu quiser usar algum comando, diga
mdf2iso
para converter um monte de arquivos em uma pasta. Eu posso canalizar a saída usando o|
operador e fazê-lo em um único curso.Para muitos de nós, é assim que as coisas devem ser. Lembre-se de que isso tem pouco a ver com experiência. Não sou especialista em linux, sou apenas um usuário comum, mas prefiro usar a linha de comando sempre que possível. Este não é um argumento muito sobre por que ele deve ser usado, mas por que ele é usado.
Os scripts são uma coisa poderosa. Você pode usar condições
if
e loopsfor
etc. e fazer todo tipo de coisa combinando a potência acima. Não há limite para o poder dos scripts. Você pode automatizar tarefas complexas, adaptadas às suas necessidades. Para essas coisas, geralmente é difícil encontrar um aplicativo GUI que atenda às suas necessidades.Você pode executar tarefas por login remoto, mesmo em configurações de largura de banda muito baixa.
Ajudar, escrever tutoriais etc é muito mais fácil se você pode especificar os comandos para a outra pessoa. Dessa forma, você não precisa fazer capturas de tela. Isso tem outra vantagem para a pessoa que está sendo ajudada também, o que nos leva ao próximo ponto.
O uso da linha de comando geralmente fornece uma melhor compreensão do que você está fazendo e do que está acontecendo.
E, finalmente, é simplesmente mais rápido. É muito mais rápido digitar algumas letras e pressionar TABdo que clicar nas infinitas opções de menu. Você pode usar
!mo
para chamar o último comando que você executou que começou commo
(por exemplo, mount) e assim por diante.Estou certo de que existem milhares de outras razões pelas quais deixei de mencionar.
fonte
Eventualmente? Porque você começa a criar scripts, e a coisa maravilhosa sobre scripts é a seguinte:
Em vez de alterar a maneira como você faz as coisas, você pode alterar o script que as executa.
Você pode escrever scripts para o terminal e geralmente não pode para programas gráficos, é por isso que as pessoas usam o terminal.
Mas sinto uma dica de "Por que devo usar o terminal?" na sua pergunta. Não posso responder isso por você, sendo você e eu não sendo você, mas essa pergunta relacionada pode oferecer algumas dicas:
Como / por que as pessoas acabam sendo usuários da linha de comando?
Eu acho que você conseguiu identificar três estágios: (1) uso relutante; (2) conhecer o mínimo necessário para o conforto; (3) encontrar alguém que goste de scripts. Pode-se usar o terminal em todos esses três níveis; descubra por si mesmo onde sua curiosidade para. Além disso, é possível passar por esses estágios muito rapidamente, se alguém simplesmente decidir que deseja aprender scripts de shell.
"Eu preciso deste programa, então acho que usarei a linha de comando."
Começa, geralmente, porque as pessoas acham que precisam de algo especializado ou complicado, e o programa que o Google / um fórum / um amigo recomenda que seja um programa de linha de comando. Então, eles abrem um terminal e digitam o que as instruções lhes dizem para digitar, e é assim que eles usam o terminal. Exemplos desses programas que fazem você usar a linha de comando:
rename
é um pequeno programa adorável que permite renomear toneladas de arquivos de acordo com um padrão. Um exemplo simples:rename s/myfile([0-9]+).txt/$1-myfile.txt/
transforma todos os arquivos nomeados como 'bond007.txt' em '007-bond.txt', independentemente do número. Talvez você queira renomear alguns arquivos de álbuns de música.Observe que existem front-ends gráficos para muitos desses sistemas, mas isso não vem ao caso: a chamada da linha de comando é comum e tradicional, muitos HOWTOs assumem isso e é assim que começa. Porque:
"Ok, estou um pouco mais confortável agora."
Uma vez dentro da linha de comando, as pessoas começam a pensar: não seria fácil se eu pudesse ..
cd mydir
, para 'alterar diretório')ls *.txt
, para 'lista')mv myfile newname
,,cp myfile mycopy
erm myfile
, para 'mover', 'copiar' e 'remover')gedit myfile
, ouleafpad
, ounano
, ouvim
, ou o que for.)Depois que as pessoas aprendem esses cinco comandos, elas se sentem à vontade na linha de comando: elas podem se mover, olhar e interagir. É até um pouco poderoso: você pode operar em grupos inteiros de arquivos de uma só vez com comandos como
mv iceland-*.jpg My_Iceland_Pics/
, e isso não é legal?Agora, muitas pessoas param feliz aqui. Eles sabem como usar o terminal, usam quando precisam, e é tudo. Este é o nível "o terminal é útil". As pessoas que preferem o terminal, no entanto, geralmente o fazem porque precisam / querem / sentem que não podem passar sem o poder espetacular que o script oferece. E isso geralmente começa assim:
"Ei, um script é apenas alguns comandos em um arquivo!"
Essa percepção pode levar a várias mudanças adicionais, dependendo da pessoa. Muitos simplesmente vão 'meh', é claro; não faz sentido aprender o que você não precisa. Enfim, coisas assim podem acontecer:
if something_is_true; then step1a; step2; else step1b; fi
efor file in list_of_files; do process1 $file; process2 $file; step3; done
Você pode não experimentar todas essas coisas, ou mesmo nenhuma delas. Quanto mais se aplica a você, no entanto, melhor o terminal será para você . Você descobrirá por si mesmo o quanto acaba usando. Diverta-se!
Post Scriptum. Na programação, os fluxos de trabalho
script -> run -> result
einput -> process -> output
são extremamente comuns, e o terminal é espetacularmente adequado para esses fluxos de trabalho. Adicione a isso o fato de que o shell realmente não passa de outra linguagem de programação e você verá por que há uma sobreposição tão grande entre usuários de linha de comando e programadores.fonte
Outro ponto a acrescentar: é divertido usar a linha de comando! ;)
( http://vladdolezal.com/blog/2008/the-real-reason-we-use-linux/ )
fonte
Eu estava apenas respondendo uma pergunta semelhante como essa no outro dia. Aconteceu que essa pessoa nunca usou atalhos de teclado para fazer qualquer coisa, então acabou sendo uma discussão longa. Espero que você tenha alguma familiaridade com isso ... isso tornaria meus pontos mais compreensíveis.
Considere usar um processador de texto. Se você salvar um arquivo, poderá usar um atalho de teclado como ctrl-s. Alguém pode dizer: "Prefiro usar o menu. Não poupa muito tempo para usar o atalho. E se você precisar salvar um novo arquivo, deverá navegar pelo sistema de arquivos até o diretório e digite o nome de qualquer maneira. " Portanto, esse objetor está correto, pois cada atalho de teclado por si só não economiza uma quantidade significativa de tempo. A verdadeira economia está em encadear atalhos, por exemplo, selecionar tudo, recortar, colar. Até os fabricantes de processadores de texto perceberam isso e tornaram mais conveniente acessar a estrutura de arquivos usando o teclado, por exemplo, poder acessar pastas / locais recentes usando as teclas de seta e tabulação.
É claro que selecionar trechos de texto exige o mouse muitas vezes ... é por isso que programadores e pessoas que fazem muita edição preferem usar um editor de texto que suporte o uso completo do teclado para que você nunca precise usar o mouse. O mouse não é apenas lento , mas propenso a erros - é particularmente fácil selecionar ou excluir o texto errado.
Agora, o que isso tem a ver com a linha de comando? Uma vantagem da linha de comando é que ela evita o uso do mouse lento e propenso a erros. Em vez disso, você digita e o faz a partir de um local; você não precisa procurar outro menu ou clicar ali e depois aqui. É a mesma razão pela qual as pessoas gostam de usar os atalhos de teclado do navegador da Web (para abrir novas guias / janelas, usar o Gmail etc.); eles precisam digitar o URL (ou e-mail ou o que for) de qualquer maneira ... por que afastar a mão das teclas?
Mas o mais importante é que, assim como os atalhos de teclado são os mais poderosos quando você começa a usá-los todos juntos (em vez de apenas um ou dois), é possível encadear comandos para fazer coisas mais poderosas que levariam uma eternidade na GUI ou você não conseguiria ' nem imagine fazer. Por exemplo, na linha de comando, você pode informar ao seu navegador da web que eu quero atualizar essa página da web a cada 30 segundos, procurar um determinado texto e, quando isso acontecer, enviar a mim e a um grupo de contatos um e-mail dizendo que o texto foi exibido na página da web. Como outro exemplo, você pode dizer ao seu computador: desejo examinar TODOS os emails que já escrevi, procurar uma referência a este livro em particular, produzir uma lista de datas que mencionei e para quem, ordenar a lista de acordo com frequência e coloque-o neste e-mail que estou digitando agora.
fonte
screen
em um console, raramente uso um mouse, a menos que seja para navegar mais em um site. (Ninguém melhor lince menção ...)A CLI é rápida de usar quando você sabe exatamente o que deseja fazer e como fazê-lo. Pode ser muito mais eficiente do que usar uma GUI. Além disso, se você deseja se conectar remotamente à sua máquina, a CLI é muito mais fácil em um link lento. Se você estiver familiarizado com a CLI, também poderá tirar proveito dos scripts.
Se você google cli vs gui, receberá toneladas de hits, por exemplo:
http://www.computerhope.com/issues/ch000619.htm
Sua pergunta não é realmente específica do Ubuntu, linux ou mesmo PC - você recebe um debate sobre esse assunto a partir de qualquer sistema que suporte gui e cli, por exemplo, a configuração de roteadores Cisco.
fonte
Há uma série de pontos positivos nas respostas, mas ainda tenho um ponto adicional a fazer. Às vezes, após a instalação ou atualização de um aplicativo GUI, não é iniciado e deixa você sem nenhuma mensagem de erro. Nesses casos, pode ser muito útil abrir uma janela do terminal e iniciar o ap na linha de comando. Quase sempre há mais informações fornecidas no terminal do que as apresentadas ao iniciar a partir da GUI.
fonte
Meu favorito é menos digitado . Como pode ser isso, eu ouço você perguntar. Bem, eu entrei, procure reversa ou seta para cima) para um comando que digitei na semana passada e pressionei retorno de carro. A alternativa é muito mais cliques do mouse (e tentando lembrar).
Meu segundo favorito é que fica mais fácil responder a perguntas sobre estouro de pilha; Não são necessárias capturas de tela, apenas texto.
fonte
E quando você precisa fazer algo como "root"? Fazer login através da GUI como raiz é uma má idéia (e nem acho que o Ubuntu permitirá que você faça isso, por padrão).
Além disso, considere que a GUI do Linux (X11) é simplesmente um programa em execução, como todo o resto. Se o X11 travar, você ficará satisfeito por conhecer sua linha de comando.
fonte
Eu só quero contribuir com um exemplo, que acho muito útil, nas instruções para adicionar o PPA para VirtualBox. Ao adicionar um PPA, você também deve registrar a chave pública, portanto, o método GUI:
Explicar isso em um guia do usuário pode ser caro! Em vez disso, isso pode ser feito com uma única e simples linha de comando:
fonte
A linha de comando funciona muito bem como no Windows - lembre-se de que a caixa de entrada de texto msdos é com fundo preto?
Ele fornece ao usuário um meio de emitir comandos diretamente para o computador sem esgotar os recursos do computador que uma GUI traz. É também uma maneira de emitir comandos poderosos para fazer coisas que não podem ser feitas por meio de uma GUI.
Não estou perdendo a utilidade da maneira de trabalhar com a GUI, mas nas mãos de um operador qualificado, a maneira da linha de comando pode ser extremamente rápida e eficiente. Nas mãos de um verdadeiro mago, a linha de comando faz milagres. Eu mal arranhei a superfície das possibilidades, aprendo algo novo todos os dias. Nunca serei um mago - velho demais -, mas gostaria de ser um operador médio um dia ...
Bem-vindo ao Ubuntu e ao Ask Ubuntu. Este é um ótimo lugar !!
fonte
Para um iniciante, o terminal é uma tarefa difícil de usar, mas se você começar a aprender a usá-lo, fica mais fácil. Uma vez que você se sinta confortável com isso, você terá uma sensação de confiança de que poderá lidar com as coisas quando elas derem errado.
Por exemplo, quando um programa GUI se recusa a iniciar, e você não tem idéia do que está errado, é possível executar o comando em um terminal e frequentemente ver o motivo do problema na saída do terminal. Em seguida, você pode copiar parte disso em uma pesquisa e encontrar a resposta, se necessário.
Você pode inserir um comando com "--help" e obter uma lista de opções de linha de comando que podem ser úteis para alguns casos especiais.
Se algo der errado, e a GUI nem sequer for executada, muitas vezes você pode abrir um terminal virtual ou possivelmente apenas uma linha de comando a partir da inicialização e corrigir o problema editando um arquivo de configuração ou executando um programa de linha de comando.
fonte
Simplificando, você tem mais de cem teclas que podem controlar / falar / solicitar o computador, em vez de um único mouse com dois ou três botões. Quanto mais controles você tiver, mais rápido poderá ser.
Para quem não sabe digitar, um teclado na tela pode parecer ótimo. Por mais rápido que você possa usar o mouse, não poderá digitar mais rápido do que usando o teclado.
Se você estiver usando mouse / windows, é como o computador que está controlando e ditando o que você pode fazer. Quando você se acostumar com o mundo da linha de comando, poderá sentir todo o sistema sob seu controle aguardando seu pedido. Você precisa experimentar para entender a diferença.
fonte
Eu nem vejo o ponto de marcar uma resposta lol. De qualquer forma. Terminal é como o seu CMD no Windows. Antigamente, antes da interface gráfica do usuário aparecer, as pessoas programavam e trabalhavam no modo DOS, praticamente um terminal simples. A GUI é criada para tornar a tarefa mais simples e fácil, mas às vezes o uso da GUI exige mais trabalho.
Por exemplo, como desenvolvedor, se eu apenas quiser compilar um programa C ++, não preciso usar IDE sofisticado. O IDE é uma interface GUI que possui muitos recursos avançados que um simples editor de texto não oferece. Portanto, em vez de baixar um IDE realmente grande para uma tarefa simples, basta escrever o seguinte e ele executará meu programa C ++, cujo arquivo executável é chamado
main
.Se você interpreta uma linguagem de interpretador como Python, pode inserir o shell interativo do Python. Sim. Existem shells interativos envoltos em uma interface gráfica agradável, mas é mais lenta e com bugs (pense em IDLE ...)
Às vezes, quando a GUI está quebrada, você pode tentar usar o Terminal para abri-lo. Às vezes, alguns softwares no Linux não oferecem boa GUI ou é muito difícil encontrar onde está o iniciador da GUI, basta ir ao Terminal e digitar, por exemplo:
Isso abrirá o homework.pdf para você.
Em outras situações, a GUI não oferece energia e magia suficientes para executar sua tarefa. Algumas funções de pesquisa são muito básicas e você não pode aplicar uma pesquisa aprofundada ou um padrão de pesquisa complicado. Mas através do terminal, um comando pode ser emitido com um padrão realmente muito complicado e longo.
A GUI é boa, mas às vezes através de comandos você também pode simplificar as coisas. Às vezes você simplesmente não tem escolha: você precisa usar comandos através de terminais.
fonte
Eu acrescentaria um argumento que parece não ser mencionado, mesmo que não seja uma vantagem real.
Pense no fato de que a GUI é como um "painel" que dá acesso às funções que o programa real possui. Muitos softwares, especialmente se em uma versão anterior, não possuem uma GUI, e você pode executá-los apenas no terminal. E, como outros apontaram, mesmo os aplicativos que possuem uma GUI, às vezes não possuem interfaces para todas as funções; para essas funções, você precisa usar o terminal.
fonte
Todo mundo descreveu bem as vantagens, gostaria de acrescentar que, além da transparência, é possível ver todas as dependências listadas, sua velocidade. Após o desaparecimento do synaptic do Ubuntu, o centro de software está muito lento, especialmente em máquinas mais lentas, aqui a instalação do terminal é muito mais rápida.
fonte