Como efetivamente navegar pelo Terminal e instalar pacotes / comandos?

7

Eu sou uma elétrica & amp; engenheiro de computação que recentemente começou a usar o Ubuntu 16.04 para modificar um computador no módulo (COM) baseado no Android para atender às necessidades de um novo produto em que estou trabalhando para a empresa em que trabalho.

Naturalmente, o desenvolvimento do Android no nível em que estou trabalhando (HAL, kernel, etc ... não tanto 'aplicativos' neste momento) não parece ser apropriado na plataforma com a qual estou mais confortável (Windows) , então fez mais sentido migrar para o Ubuntu, uma plataforma muito suportada em termos de desenvolvimento para Android.

Agora, para a parte mais relevante.

Eu não tenho nenhum problema "usando" o Ubuntu (instalação e configuração foi uma brisa), e não sou estranho a interfaces de linha de comando como o Terminal, que eu prefiro muito mais usar e "master".

No entanto, meu maior obstáculo em "dominar" o terminal não é a sintaxe ou até os próprios binários / pacotes, mas encontrar esses binários / pacotes!

Eu venho usando man e info extensivamente, mas esses comandos só ajudam se você souber o comando / função que está procurando antecipadamente, e mesmo que as habilidades de busca do homem e das informações sejam ótimas, eu ainda sinto como se eu estivesse faltando um índice do que está disponível para mim.

Para resumir e enumerar com clareza as minhas perguntas:

  1. Existe uma "lista" de tudo que eu posso chamar no terminal que é dinâmico e se adapta ao conjunto atual de pacotes / binários / funções atualmente instalados?

  2. Onde exatamente os vários pacotes instalados são armazenados? Eu olhei em / bin /, mas isso parece ser apenas uma fração do que está disponível para mim. / bin / parece ter muitos binários centrais, mas outros binários aparentemente básicos, como info e whatis, parecem estar ausentes. Da mesma forma, nenhum dos meus pacotes instalados obtidos através do apt, nem do próprio apt, estão presentes.

  3. Crédito extra Quais processos de pensamento devem ser diferentes em um ambiente Linux em oposição a um ambiente Windows? Tipo, onde está / existe uma variável de ambiente de caminho especificando onde o sistema irá procurar por binários? Existe um equivalente a um "Program Files", ou um "Adicionar e Remover Programas" (apenas para enumerar o que está instalado!)? Quaisquer outras "dicas profissionais" para um desenvolvedor / cara Windows bem versado, mas completo desconhecido para o Linux?

Este é o meu primeiro post em qualquer site do Stack Exchange, então, por favor, perdoe-me se eu violei qualquer regra ou aceitei o decoro. Eu li as orientações e não acho que estou violando nenhuma delas! Em qualquer caso, qualquer ajuda seria muito apreciada!

Obrigado.

    
por B-Tone 08.07.2016 / 16:44

2 respostas

2
  

Existe uma "lista" de tudo o que eu posso chamar no terminal que é dinâmico e se adapta ao atual conjunto de pacotes / binários / funções atualmente instalados?

Sim! Se você estiver usando bash como seu shell (que eu assumo como sendo o shell padrão), você pode pressionar TAB duas vezes, o que lhe dará uma lista completa dos comandos que você pode executar (cuidado com o fato de ser bastante longo) .

Edit: Eu aprendi que apertar a tecla duas vezes sem nenhum caractere só funciona quando o bash usa sua configuração padrão - não a do Ubuntu. Então você pode querer executar bash --norc . Pressionar TAB duas vezes deve funcionar.

Outra alternativa seria instalar e configurar zsh ou fish , que são substitutos legais para o bash e oferecem mais funcionalidade. (Eu prefiro fish porque ele fornece um autocompletar agradável quando você digita.)

  

Onde exatamente os vários pacotes instalados são armazenados? Eu olhei em / bin /, mas isso parece ser apenas uma fração do que está disponível para mim. / bin / parece ter muitos binários centrais, mas outros binários aparentemente básicos, como info e whatis, parecem estar ausentes. Da mesma forma, nenhum dos meus pacotes instalados obtidos através do apt, nem do próprio apt, estão presentes.

Você pode ver onde seu shell está procurando por programas instalados:

$ echo $PATH
/home/niklas/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/niklas/.gopath/bin:/home/niklas/.gopath/bin

(Observe que isso pode parecer um pouco diferente para você.)

Hoje, a maioria dos executáveis está localizada em /usr/bin , conforme FHS .

Se você quiser saber onde um determinado programa está localizado, use which :

$ which apt
/usr/bin/apt

Como não tenho grande experiência com o Windows, acho que não posso responder à última parte da pergunta, mas:

  • $PATH é a "variável de ambiente do caminho que especifica onde o sistema procurará por binários".
  • A maioria dos programas está instalada em /usr . (Isso é dividido em executáveis ( /usr/bin ), bibliotecas ( /usr/lib ) e arquivos compartilhados ( /usr/share ). A documentação está em /usr/share/doc .)
por YtvwlD 08.07.2016 / 17:14
2

Para listar todas as funções, você pode usar compgen -A function , mas muitas delas são funções de preenchimento automático que os programas usam internamente e que um usuário nunca usaria. Todos começam com um sublinhado, então, para ignorá-los, faça:

compgen -A function | grep -v "^_"

Para ver a definição da função, use type $function_name . type também pode dizer onde um dado binário / script está armazenado, e se o comando é binário, script, alias, função, etc.

Também é útil: type -a mostrará se um comando existe em diferentes locais ou em diferentes formas. Por exemplo, execute type -a [ e você obterá isso:

[ is a shell builtin
[ is /usr/bin/[
    
por wjandrea 09.07.2016 / 03:10