Noções básicas unix vale a pena saber

Ao escrever sobre tecnologia digital, ou qualquer tópico, é algo que você faz, leva tempo para acumular credibilidade. Mesmo que você coloque o tempo de estudo na frente para saber suas coisas, construir confiança leva tempo.

unix pay
unix pay

Tive a sorte de que, depois de anos expandindo meu portfólio e a base de conhecimento sob ele, as pessoas vêm até mim para conselhos sobre assuntos relacionados. Ainda não estou totalmente confortável nesta posição, mas eu rolo com ela.

À medida que mais profissionais colocam estoque na minha formação técnica, fui exposto a ambientes técnicos mais especializados e casos de uso. Amigos pedindo solução de problemas eletrônicos de consumo são mundos além de profissionais que buscam superar um obstáculo técnico.

Essa nova classe de conselhos que me levam a fornecer elucidou os desafios que os profissionais enfrentam. Além disso, quando eu tenho a mesma pergunta várias vezes, ele sugere uma lacuna potencial no treinamento em ciência da computação. Naturalmente, quero fazer a minha parte para fechá-la.

Para ser claro, não vou derrubar ninguém. Há muitas coisas que eu não sei e provavelmente deveria. Eu simplesmente quero chamar a atenção para conceitos com os que me surpreendem que indivíduos competentes lutem. Especificamente, o que eu considero como princípios principais da Unix que eu achei notavelmente ausente.

Não estou totalmente surpreso, pois muitos profissionais do “setor de tecnologia” trabalham em níveis de abstração acima do SO. Mas vale a pena conhecer esses fundamentos do Unix considerando que muitas vezes existe um Sistema Operacional Unix/Unix em algum lugar na hierarquia de abstração. Se essa camada não for saudável, todo o edifício corre o risco de colapso.

Para executar programas, é melhor ficar no $PATH

Embora seja mais fácil do que nunca para os desenvolvedores de software escapar da interface da linha de comando, às vezes é inevitável.

Se um programa vem pré-instalado em um sistema Unixy ou pode ser instalado a partir de um repositório oficial do SISTEMA OPERACIONAL, geralmente é fácil de invocar. Mas quando o programa CLI é algum executável baixado da internet, isso pode enganar as pessoas.

Executá-lo de dentro de seu diretório não é grande coisa. Clicar nele no navegador de arquivos pode até abrir um emulador de terminal e executá-lo. Mas uma vez que alguns desenvolvedores (principalmente neófitos) deixam esse diretório, eles não têm certeza por que o comando é inacessível sem dar o caminho absoluto ou relativo para ele.

Isso tem a ver com a variável ambiente PATH da shell. Quando você entra em um comando em uma concha como Bash, a concha tem que saber onde ela está. No Unix, tudo é um arquivo, e cada arquivo está em algum lugar na árvore de arquivos (começando em /). Mas se o sistema tivesse que pesquisar todos os arquivos, isso levaria muito tempo.

Em vez disso, sua concha só olha nos diretórios na variável PATH. Se não houver um arquivo executável com o nome que você inseriu em um desses diretórios, um sistema Unixy não sabe onde está esse comando.

Para ver quais diretórios estão em seu PATH, abra um terminal e execute $PATH echo. Isso produz o valor da variável PATH como está atualmente definida na shell.

Defina para que sua concha não esqueça

https://www.youtube.com/watch?v=yBy3C-AMh28&pp=ugMICgJlbhABGAE%3D

Há outra propriedade de variáveis ambientais que vi os desenvolvedores ignorarem: quanto tempo persistem.

Não é incomum que os devs utilizem ferramentas CLI que esperam certas variáveis ambientais. Nos sistemas Unixy, você é livre para definir qualquer variável de ambiente arbitrário com qualquer valor arbitrário. Quando eles precisam de um, eu normalmente vejo devs executar a mesma definição variável ambiente cada vez que eles lançam seu terminal.

Isso porque toda vez que a maioria dos emuladores de terminais (e com eles, uma concha) começam pela primeira vez (de não funcionar em qualquer lugar do sistema), eles iniciam uma nova sessão. Quando o último dos processos de shell associados ao emulador terminal termina, a sessão também termina. Notavelmente, as variáveis ambientais definidas via comando de exportação só duram para a sessão.

Como você provavelmente intuiu, podemos definir nossa variável de ambiente em nosso arquivo shell config, assim como fizemos com path. Basta consultar a sintaxe de definição PATH acima para ver como. Agora aproveite todo o tempo que você salvou.

Sempre saiba quem está ouvindo

Embora eu não necessariamente considere um conceito unix central, este próximo truque é tão útil que eu estou surpreso que mais devs não sabem disso.

Durante a gestão de algum sistema Unixy, eventualmente você pode precisar saber quais portas de rede estão ouvindo ativamente. Fazê-lo verificando todos os serviços em execução pode ser complicado porque, dependendo das ferramentas disponíveis do sistema, as portas abertas podem não aparecer na saída resumida. É mais fácil pular o utilitário de serviço e analisar as portas diretamente.

Minha abordagem preferida é usar lsof. Este comando útil retorna todos os arquivos abertos. “Espere”, você pode dizer, “Estou procurando por portas, não arquivos.” Ah, mas lembre-se, no Unix, tudo é um arquivo. Isso inclui portos.

Melhor ainda, o LSOF é adaptado para este caso de uso (entre muitos outros), pois sua sinalização -i limita a saída para arquivos usados como parte da comunicação do Protocolo da Internet. Ao executar lsof -i você pode ver cada porta aberta, incluindo as de escuta.

Você pode querer jogar em outras bandeiras ou cano-lo através de um filtro de expressão regular via grep para reduzir sua pesquisa, mas o comando acima sozinho vai levá-lo a maior parte do caminho até lá.

Apenas seu amigo bairro pinguim-homem

O que mais me atraiu para a ideia deste artigo foi sua aplicabilidade direta a toda uma classe de pessoas que precisam de respostas rápidas e confiáveis. À medida que invisto mais em diálogo profissional com desenvolvedores, espero descobrir mais áreas onde sou capaz de iluminar a maneira Unix que eu tenho crescido tão gostoso.

Review & Discussion

Comment

Please read our comment policy before submitting your comment. Your email address will not be used or publish anywhere. You will only receive comment notifications if you opt to subscribe below.