<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ Linux - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Aprenda a codificar - de graça. Tutoriais de programação em Python, JavaScript, Linux e muito mais. ]]>
        </description>
        <link>https://www.freecodecamp.org/portuguese/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ Linux - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/portuguese/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sat, 16 May 2026 19:16:37 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/portuguese/news/tag/linux/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Como instalar o Ubuntu no VirtualBox ]]>
                </title>
                <description>
                    <![CDATA[ Escrito por: Thanoshan MV O que é o VirtualBox? A máquina virtual (VM) VirtualBox da Oracle é uma aplicação de virtualização multiplataforma desenvolvida pela Oracle Corporation. Ela permite aos usuários instalar sistemas operacionais, como Windows, macOS, Solaris e Linux, em discos rígidos virtuais. Como exemplo, você pode rodar Windows e ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/como-instalar-o-ubuntu-no-virtualbox/</link>
                <guid isPermaLink="false">66f693e8d8806d04502481d9</guid>
                
                    <category>
                        <![CDATA[ Linux ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Daniel Rosa ]]>
                </dc:creator>
                <pubDate>Fri, 27 Sep 2024 11:37:37 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/ubuntu-1479782_1280.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/how-to-install-ubuntu-with-oracle-virtualbox/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to install Ubuntu on VirtualBox</a>
      </p><p>Escrito por: Thanoshan MV</p><h2 id="o-que-o-virtualbox">O que é o VirtualBox?</h2><p>A máquina virtual (VM) VirtualBox da Oracle é uma aplicação de virtualização multiplataforma desenvolvida pela Oracle Corporation. Ela permite aos usuários instalar sistemas operacionais, como Windows, macOS, Solaris e Linux, em discos rígidos virtuais.</p><p>Como exemplo, você pode rodar Windows e Linux em seu Mac, rodar um servidor Windows em seu servidor Linux ou rodar o Linux em seu PC com Windows enquanto executa suas outras aplicações existentes.</p><p>Espaço em disco e memória são os únicos problemas que você enfrentará ao instalar várias máquinas virtuais.</p><h2 id="por-que-voc-vai-precisar-dele">Por que você vai precisar dele</h2><ul><li>O VirtualBox da Oracle é fácil de instalar e usar</li><li>É grátis</li><li>Você pode rodar e experimentar qualquer sistema operacional de maneira segura</li><li>Se você é um desenvolvedor, o VirtualBox pode ser usado como uma ferramenta para testar seus próprios projetos de desenvolvimento em diversos ambientes de SO de maneira segura</li><li>Ele pode rodar desde pequenos sistemas embarcados até laptops</li><li>É bom para testes e recuperação de desastres, pois pode ser facilmente copiado, e transportado entre <em>hosts</em>, além de ser fácil de fazer o <em>back-up</em> dele</li></ul><h2 id="instala-o-do-virtualbox">Instalação do VirtualBox</h2><p>O VirtualBox pode ser baixado aqui: <a href="https://www.virtualbox.org/wiki/Downloads">downloads do VirtualBox</a></p><h2 id="por-que-o-ubuntu">Por que o Ubuntu?</h2><ul><li>É grátis</li><li>Personalização fácil: o ambiente de desktop GNOME ajuda você a personalizar facilmente</li><li>É seguro</li><li>O Ubuntu é <em>open-source</em></li><li>Tem uma comunidade amigável e que dá muito suporte</li><li>Requisitos de sistema baixos</li><li>De acordo com a <a href="https://fossbytes.com/best-linux-distros-for-programming-developers/">FOSSBYTES</a> (edição de 2019), o Ubuntu é a segunda melhor <em>distro </em>do Linux para programação e desenvolvedores</li><li>É amigável para iniciantes</li></ul><h2 id="configura-o-do-ubuntu">Configuração do Ubuntu</h2><p>Primeiro, abra o VirtualBox, depois clique em "<em>New</em>" (Novo, em português) para criar uma máquina virtual.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/start-1.png" class="kg-image" alt="start-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/start-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/start-1.png 947w" sizes="(min-width: 720px) 720px" width="947" height="542" loading="lazy"></figure><p>Digite "Ubuntu" como nome, selecione "Linux" como tipo e selecione Ubuntu (64-bit) como versão.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--14-.png" class="kg-image" alt="Screenshot--14-" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/Screenshot--14-.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--14-.png 947w" sizes="(min-width: 720px) 720px" width="947" height="540" loading="lazy"></figure><p><strong>Observação</strong>: selecione a quantidade de memória que desejar, mas não adicione mais que 50% da sua RAM total.</p><p>Marque a opção "<em>Create a virtual hard disk now</em>" (Criar um disco rígido virtual agora, em português) para que possamos definir mais tarde o tamanho do disco rígido virtual do Ubuntu OS.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--16-.png" class="kg-image" alt="Screenshot--16-" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/Screenshot--16-.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--16-.png 950w" sizes="(min-width: 720px) 720px" width="950" height="544" loading="lazy"></figure><p>Agora, selecionamos "<em>VHD (Virtual Hard Disk)</em>" (Disco rígido virtual, em português).</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--17--1.png" class="kg-image" alt="Screenshot--17--1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/Screenshot--17--1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--17--1.png 947w" sizes="(min-width: 720px) 720px" width="947" height="543" loading="lazy"></figure><p>Em seguida, vamos alocar dinamicamente o armazenamento em nosso disco rígido físico.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--18-.png" class="kg-image" alt="Screenshot--18-" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/Screenshot--18-.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--18-.png 947w" sizes="(min-width: 720px) 720px" width="947" height="545" loading="lazy"></figure><p>Queremos especificar o tamanho do Ubuntu OS. O tamanho recomendado é, pelo menos, 10 GB, mas você pode aumentar se desejar.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--19-.png" class="kg-image" alt="Screenshot--19-" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/Screenshot--19-.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--19-.png 952w" sizes="(min-width: 720px) 720px" width="952" height="542" loading="lazy"></figure><p>Depois de criar um disco rígido virtual, você verá o Ubuntu no seu painel.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--20-.png" class="kg-image" alt="Screenshot--20-" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/Screenshot--20-.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--20-.png 949w" sizes="(min-width: 720px) 720px" width="949" height="541" loading="lazy"></figure><p>Agora, precisamos configurar o arquivo de imagem de disco do Ubuntu (.iso).</p><p>O arquivo de imagem de disco do Ubuntu pode ser baixado aqui: <a href="https://ubuntu.com/desktop">download do Ubuntu</a></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--23-.png" class="kg-image" alt="Screenshot--23-" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/Screenshot--23-.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/09/Screenshot--23-.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--23-.png 1006w" sizes="(min-width: 720px) 720px" width="1006" height="547" loading="lazy"></figure><p>Para configurar o arquivo de imagem de disco do Ubuntu, vá em <em>Settings</em> e siga estes passos:</p><ol><li>Clique em "<em>Storage</em>" (Armazenamento, em português)</li><li>Em <em>Storage Devices</em> (Dispositivos de armazenamento, em português), clique em "<em>Empty</em>" (Vazio, em português)</li><li>Em <em>Attributes</em> (Atributos, em português), clique na figura do disco e "<em>Select Virtual Optical Drive File</em>" (Selecionar arquivo de disco óptico virtual, em português)</li><li>Selecione o arquivo de imagem de disco do Ubuntu e abra-o</li></ol><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--25-.png" class="kg-image" alt="Screenshot--25-" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/Screenshot--25-.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--25-.png 945w" sizes="(min-width: 720px) 720px" width="945" height="545" loading="lazy"></figure><p>Clique em OK.</p><p>Seu Ubuntu está pronto para ser instalado no VirtualBox. Vamos começar!</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--26-.png" class="kg-image" alt="Screenshot--26-" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/Screenshot--26-.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--26-.png 940w" sizes="(min-width: 720px) 720px" width="940" height="529" loading="lazy"></figure><p><strong>Observação:</strong> a instalação do Ubuntu no VirtualBox e a instalação real do sistema operacional podem variar. Este guia ajuda você a instalar o Ubuntu no VirtualBox apenas.</p><h2 id="vamos-instalar-o-ubuntu-">Vamos instalar o Ubuntu!</h2><p>Clique em <em>Install Ubuntu</em> (Instalar o Ubuntu, em português).</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--27-.png" class="kg-image" alt="Screenshot--27-" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/Screenshot--27-.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--27-.png 794w" sizes="(min-width: 720px) 720px" width="794" height="671" loading="lazy"></figure><p>Selecione seu layout de teclado.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--29-.png" class="kg-image" alt="Screenshot--29-" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/Screenshot--29-.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--29-.png 793w" sizes="(min-width: 720px) 720px" width="793" height="665" loading="lazy"></figure><p>Na seção "<em>Updates and other software</em>" (Atualizações e software de terceiros, em português), marque "<em>Normal installation</em>" (Instalação normal, em português) e clique em <em>Continue</em>.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--30-.png" class="kg-image" alt="Screenshot--30-" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/Screenshot--30-.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--30-.png 789w" sizes="(min-width: 720px) 720px" width="789" height="571" loading="lazy"></figure><p>Em "<em>Installation type</em>" (Tipo de instalação, em português), marque "<em>Erase disk and install Ubuntu</em>" (Apagar o disco e instalar o Ubuntu, em português).</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--31-.png" class="kg-image" alt="Screenshot--31-" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/Screenshot--31-.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--31-.png 788w" sizes="(min-width: 720px) 720px" width="788" height="576" loading="lazy"></figure><p>Clique em "<em>Continue</em>".</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--32-.png" class="kg-image" alt="Screenshot--32-" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/Screenshot--32-.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--32-.png 793w" sizes="(min-width: 720px) 720px" width="793" height="665" loading="lazy"></figure><p>Escolha sua localização atual.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--33-.png" class="kg-image" alt="Screenshot--33-" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/Screenshot--33-.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--33-.png 790w" sizes="(min-width: 720px) 720px" width="790" height="668" loading="lazy"></figure><p>Agora, configure seu perfil.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--34-.png" class="kg-image" alt="Screenshot--34-" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/Screenshot--34-.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--34-.png 792w" sizes="(min-width: 720px) 720px" width="792" height="663" loading="lazy"></figure><p>Você verá o Ubuntu sendo instalado.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--35-.png" class="kg-image" alt="Screenshot--35-" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/Screenshot--35-.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--35-.png 790w" sizes="(min-width: 720px) 720px" width="790" height="660" loading="lazy"></figure><p>Após a instalação, reinicie.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--36-.png" class="kg-image" alt="Screenshot--36-" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/Screenshot--36-.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--36-.png 788w" sizes="(min-width: 720px) 720px" width="788" height="664" loading="lazy"></figure><p>Após fazer login, você verá a área de trabalho do Ubuntu.</p><p>Instalamos com sucesso o Ubuntu no VirtualBox. Ele está pronto para uso em seus futuros projetos de desenvolvimento.</p><h2 id="vamos-verificar-a-instala-o">Vamos verificar a instalação</h2><p>Abra o seu terminal (Pressione Ctrl+Alt+T) e digite os comandos abaixo para verificar se funcionam.</p><ol><li>pwd: este comando imprimirá o diretório de trabalho atual</li><li>ls: este comando listará todos os itens no seu diretório atual</li></ol><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--43-.png" class="kg-image" alt="Screenshot--43-" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/Screenshot--43-.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--43-.png 789w" sizes="(min-width: 720px) 720px" width="789" height="668" loading="lazy"></figure><p>Depois de verificar esses comandos, desligue a sua máquina usando o seguinte comando.</p><pre><code>poweroff
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--44-.png" class="kg-image" alt="Screenshot--44-" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/09/Screenshot--44-.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/09/Screenshot--44-.png 787w" sizes="(min-width: 720px) 720px" width="787" height="663" loading="lazy"></figure><h2 id="conclus-o">Conclusão</h2><p>O VirtualBox é gratuito e uma ótima ferramenta para executar vários sistemas operacionais em um único sistema operacional. O Ubuntu tem muitos benefícios. Se você é um iniciante em Linux, eu recomendaria usar o Ubuntu, pois é amigável para iniciantes.</p><p>Sinta-se à vontade para entrar em contato com o autor se tiver alguma pergunta. Você pode contatar o autor e se conectar com ele pelo <a href="https://twitter.com/ThanoshanMV">X</a> e pelo <a href="https://medium.com/@mvthanoshan">Medium</a>.</p><p>Agradecemos pela leitura.</p><p><strong>Boa programação para você!</strong></p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ O manual de comandos do Linux – aprenda comandos do Linux para iniciantes ]]>
                </title>
                <description>
                    <![CDATA[ Este manual de comandos do Linux apresentará os 60 comandos principais que você precisará como desenvolvedor. Cada comando inclui código de exemplo e dicas sobre quando usá-lo. Este Manual de Comando do Linux segue a regra 80/20: você aprenderá 80% de um tópico em cerca de 20% do tempo gasto ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/</link>
                <guid isPermaLink="false">65a975770cfcc403cf78a174</guid>
                
                    <category>
                        <![CDATA[ Linux ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Sabrina ]]>
                </dc:creator>
                <pubDate>Wed, 26 Jun 2024 21:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/cover-1.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/the-linux-commands-handbook/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">The Linux Command Handbook – Learn Linux Commands for Beginners</a>
      </p><p>Este manual de comandos do Linux apresentará os 60 comandos principais que você precisará como desenvolvedor. Cada comando inclui código de exemplo e dicas sobre quando usá-lo.</p><p>Este Manual de Comando do Linux segue a regra 80/20: você aprenderá 80% de um tópico em cerca de 20% do tempo gasto estudando-o.</p><p>Acho que essa abordagem oferece uma visão geral completa.</p><p>Este manual não tenta cobrir tudo relacionado ao Linux e seus comandos. Ele se concentra nos pequenos comandos principais que você usará 80% ou 90% do tempo e tenta simplificar o uso dos mais complexos.</p><p>Todos esses comandos funcionam em Linux, macOS, WSL e em qualquer lugar onde você tenha um ambiente UNIX.</p><p>Espero que o conteúdo deste manual o ajude a alcançar o que deseja: <strong>familiarizar-se com o Linux.</strong></p><p>Você pode marcar esta página em seu navegador para poder consultar este manual no futuro.</p><p>Você pode <a href="https://flaviocopes.com/page/linux-commands-handbook/">fazer o download deste manual em PDF/ePUB/Mobi gratuitamente</a>.</p><p>Aproveite!</p><h2 id="-ndice"><strong>Índice</strong></h2><ul><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#introdu-o-ao-linux-e-shells">Introdução ao Linux e shells</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-man-no-linux">O comando <code>man</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-ls-no-linux">O comando <code>ls</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-cd-no-linux">O comando <code>cd</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-pwd-no-linux">O comando <code>pwd</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-mkdir-no-linux">O comando <code>mkdir</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-rmdir-no-linux">O comando <code>rmdir</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-mv-no-linux">O comando <code>mv</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-cp-no-linux">O comando <code>cp</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-open-no-linux">O comando <code>open</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-touch-no-linux">O comando <code>touch</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-find-no-linux">O comando <code>find</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-ln-no-linux">O comando <code>ln</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-gzip-no-linux">O comando <code>gzip</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-gunzip-no-linux">O comando <code>gunzip</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-tar-no-linux">O comando <code>tar</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-alias-no-linux">O comando <code>alias</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-cat-no-linux">O comando <code>cat</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-less-no-linux">O comando <code>less</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-tail-no-linux">O comando <code>tail</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-wc-no-linux">O comando <code>wc</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-grep-no-linux">O comando <code>grep</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-sort-no-linux">O comando <code>sort</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-uniq-no-linux">O comando <code>uniq</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-diff-no-linux">O comando <code>diff</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-echo-no-linux">O comando <code>echo</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-chown-no-linux">O comando <code>chown</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-chmod-no-linux">O comando <code>chmod</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-umask-no-linux">O comando <code>umask</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-du-no-linux">O comando <code>du</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-df-no-linux">O comando <code>df</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-basename-no-linux">O comando <code>basename</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-dirname-no-linux">O comando <code>dirname</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-ps-no-linux">O comando <code>ps</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-top-no-linux">O comando <code>top</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-kill-no-linux">O comando <code>kill</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-killall-no-linux">O comando <code>killall</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-jobs-no-linux">O comando <code>jobs</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-bg-no-linux">O comando <code>bg</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-fg-no-linux">O comando <code>fg</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-type-no-linux">O comando <code>type</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-which-no-linux">O comando <code>which</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-nohup-no-linux">O comando <code>nohup</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-xargs-no-linux">O comando <code>xargs</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-do-editor-vim-no-linux">O comando do editor <code>vim</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-do-editor-emacs-no-linux">O comando do editor <code>emacs</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-do-editor-nano-no-linux">O comando do editor <code>nano</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-whoami-no-linux">O comando <code>whoami</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-who-no-linux">O comando <code>who</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-su-no-linux">O comando <code>su</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-sudo-no-linux">O comando <code>sudo</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-passwd-no-linux">O comando <code>passwd</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-ping-no-linux">O comando <code>ping</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-traceroute-no-linux">O comando <code>traceroute</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-clear-no-linux">O comando <code>clear</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-history-no-linux">O comando <code>history</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-export-no-linux">O comando <code>export</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-crontab-no-linux">O comando <code>crontab</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-uname-no-linux">O comando <code>uname</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-env-no-linux">O comando <code>env</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#o-comando-printenv-no-linux">O comando <code>printenv</code> no Linux</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/o-manual-de-comandos-do-linux-aprenda-comandos-do-linux-para-iniciantes/#conclus-o">Conclusão</a></li></ul><h2 id="introdu-o-ao-linux-e-shells"><strong>Introdução ao Linux e shells</strong></h2><h3 id="o-que-linux"><strong>O que é Linux?</strong></h3><p>Linux é um sistema operacional, como o &nbsp;macOS ou Windows.</p><p>É também o sistema operacional de código aberto mais popular, oferecendo muita liberdade.</p><p>Ele alimenta a grande maioria dos servidores que compõem a Internet. É a base sobre a qual tudo é construído, mas não apenas isso. O Android é baseado em (uma versão modificada do) Linux.</p><p>O "núcleo" do Linux (chamado de kernel) nasceu em 1991 na Finlândia e percorreu um longo caminho desde seu início humilde. Passou a ser o kernel do Sistema Operacional GNU, criando a dupla GNU/Linux.</p><p>Há uma coisa no Linux que empresas como Microsoft, Apple e Google nunca poderão oferecer: a liberdade de fazer o que quiser com seu computador.</p><p>Na verdade, elas estão indo na direção oposta, construindo jardins murados, especialmente no lado dos dispositivos móveis.</p><p>Linux é a liberdade definitiva.</p><p>É desenvolvido por voluntários, alguns pagos por empresas que dependem dele, outros de maneira independente. Não existe, porém, uma única empresa comercial que possa ditar o que acontece no Linux ou as prioridades do projeto.</p><p>Você também pode usar o Linux como seu computador diário. Eu uso o macOS porque gosto muito das aplicações e do design (e também fui desenvolvedor de aplicações para iOS e Mac). Antes de usar o macOS, no entanto, eu usei o Linux como sistema operacional principal do meu computador.</p><p>Ninguém pode ditar quais aplicações você pode executar ou "ligar para casa" com aplicações que rastreiam você, sua posição e muito mais.</p><p>O Linux também é especial porque não existe apenas "um Linux", como é o caso do Windows ou do macOS. Em vez disso, temos <strong>distribuições</strong>.</p><p>Uma "distro" é feita por uma empresa ou organização e empacota o núcleo do Linux com programas e ferramentas adicionais.</p><p>Por exemplo, você tem o Debian, o Red Hat e o Ubuntu, provavelmente as distribuições mais populares.</p><p>Existem, porém, muitas, muitas mais. Você também pode criar sua própria distribuição, mas, provavelmente, usará uma popular que tenha muitos usuários e uma comunidade de pessoas ao seu redor. Isso permite que você faça o que precisa sem perder muito tempo reinventando a roda e descobrindo respostas para problemas comuns.</p><p>Alguns computadores desktop e laptops vêm com Linux pré-instalado. Você também pode instalá-lo em seu computador Windows ou Mac.</p><p>Você, no entanto, não precisa interromper seu computador existente apenas para ter uma ideia de como o Linux funciona.</p><p>Eu não tenho um computador Linux.</p><p>Se você usa um Mac, você só precisa saber que o macOS é um sistema operacional UNIX. Ele compartilha muitas das mesmas ideias e software que um sistema GNU/Linux usa, porque GNU/Linux é uma alternativa gratuita ao UNIX.</p><blockquote><em><em><a href="https://en.wikipedia.org/wiki/Unix">UNIX</a> </em></em>é um termo genérico que agrupa muitos sistemas operacionais usados ​​em grandes corporações e instituições, a partir da década de 1970</blockquote><p>O terminal do macOS dá acesso exatamente aos mesmos comandos que descreverei no restante deste manual.</p><p>A Microsoft tem um <a href="https://docs.microsoft.com/en-us/windows/wsl/install-win10">subsistema oficial do Windows para Linux</a> que você pode (e deve!) instalar no Windows. Isso dará a você a capacidade de executar o Linux de uma maneira muito fácil em seu PC.</p><p>Na grande maioria das vezes, porém, você executará um computador Linux na nuvem por meio de um VPS (Virtual Private Server) como o DigitalOcean.</p><h3 id="o-que-um-shell-linux"><strong>O que é um shell Linux?</strong></h3><p>Um shell é um interpretador de comandos que expõe uma interface para o usuário trabalhar com o sistema operacional subjacente.</p><p>Ele permite executar operações usando texto e comandos e fornece aos usuários recursos avançados, como a capacidade de criar scripts.</p><p>Isso é importante: os shells permitem que você execute as coisas de uma maneira mais otimizada do que uma GUI (Interface Gráfica do Usuário) poderia permitir. As ferramentas de linha de comando podem oferecer muitas opções de configuração diferentes sem serem muito complexas de usar.</p><p>Existem muitos tipos diferentes de shells. Este artigo se concentra em shells Unix, aqueles que você encontrará comumente em computadores Linux e macOS.</p><p>Muitos tipos diferentes de shells foram criados para esses sistemas ao longo do tempo. Alguns deles dominam o espaço: Bash, Csh, Zsh, Fish e muitos mais!</p><p>Todas os shells são originários de Bourne Shell, chamada <code>sh</code>. "Bourne" porque seu criador foi Steve Bourne.</p><p>Bash significa Bourne-again shell. O <code>sh</code> era proprietário e não de código aberto, e o Bash foi criado em 1989 para criar uma alternativa livre para o projeto GNU e a Free Software Foundation. Como os projetos tinham que pagar para usar o shell Bourne, o Bash se tornou muito popular.</p><p>Se você usa um Mac, tente abrir o terminal Mac. Por padrão, ele executa ZSH (ou, pré-Catalina, o Bash).</p><p>Você pode configurar seu sistema para executar qualquer tipo de shell – por exemplo, eu uso o shell Fish.</p><p>Cada shell tem seus próprios recursos exclusivos e uso avançado, mas todos compartilham uma funcionalidade comum: permitem executar programas e podem ser programados.</p><p>No restante deste manual, veremos em detalhes os comandos mais comuns que você utilizará.</p><h2 id="o-comando-man-no-linux"><strong>O comando <code>man</code> no Linux</strong></h2><p>‌‌O primeiro comando que apresentarei ajudará você a entender todos os outros comandos.</p><p>Toda vez que não sei como usar um comando, digito <code>man &lt;comando&gt;</code> para obter o manual:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-07-04-at-18.42.40-1.png" class="kg-image" alt="Screen-Shot-2020-07-04-at-18.42.40-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-07-04-at-18.42.40-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/06/Screen-Shot-2020-07-04-at-18.42.40-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-07-04-at-18.42.40-1.png 1188w" sizes="(min-width: 720px) 720px" width="1188" height="894" loading="lazy"></figure><p>Esta é uma página man (de <em>manual</em>). As páginas de manual são uma ferramenta essencial para aprender como desenvolvedor. Elas contêm tanta informação que, às vezes, é quase demais. A captura de tela acima é apenas uma das 14 telas de explicação do comando <code>ls</code> .</p><p>Na maioria das vezes, quando preciso aprender um comando rapidamente, uso este site chamado páginas tldr: <a href="https://tldr.sh/">https://tldr.sh</a>. É um comando que você pode instalar e executar assim: <code>tldr &lt;comando&gt;</code>. Ele fornece uma visão geral muito rápida de um comando, com alguns exemplos úteis de cenários de uso comuns:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-07.35.41-1.png" class="kg-image" alt="Screen-Shot-2020-09-07-at-07.35.41-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-07-at-07.35.41-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/06/Screen-Shot-2020-09-07-at-07.35.41-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-07.35.41-1.png 1002w" sizes="(min-width: 720px) 720px" width="1002" height="864" loading="lazy"></figure><p>Ele não é um substituto para o <code>man</code>, mas uma ferramenta útil para evitar de se perder na enorme quantidade de informações presentes em uma página <code>man</code>. Em seguida, você pode usar a página <code>man</code> para explorar todas as diferentes opções e parâmetros que você pode usar em um comando.</p><h2 id="o-comando-ls-no-linux"><strong>O comando <code>ls</code> no Linux</strong></h2><p>Dentro de uma pasta você pode listar todos os arquivos que a pasta contém usando o comando <code>ls</code> :</p><pre><code>ls</code></pre><p>‌Se você adicionar um nome ou caminho de pasta, o conteúdo dessa pasta será impresso:</p><pre><code>ls /bin</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screenshot-2019-02-09-at-18.50.14-1.png" class="kg-image" alt="Screenshot-2019-02-09-at-18.50.14-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screenshot-2019-02-09-at-18.50.14-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/06/Screenshot-2019-02-09-at-18.50.14-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screenshot-2019-02-09-at-18.50.14-1.png 1289w" sizes="(min-width: 720px) 720px" width="1289" height="425" loading="lazy"></figure><p>O <code>ls</code> aceita muitas opções. Uma das minhas combinações favoritas é a <code>-al</code>. Tente:</p><pre><code>ls -al /bin</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screenshot-2019-02-09-at-18.49.52-1.png" class="kg-image" alt="Screenshot-2019-02-09-at-18.49.52-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screenshot-2019-02-09-at-18.49.52-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/06/Screenshot-2019-02-09-at-18.49.52-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screenshot-2019-02-09-at-18.49.52-1.png 1289w" sizes="(min-width: 720px) 720px" width="1289" height="777" loading="lazy"></figure><p>Comparado ao comando <code>ls</code> simples, ele retorna muito mais informações.</p><p>Você tem, da esquerda para a direita:</p><ul><li>as permissões de arquivo (e se o seu sistema suportar ACLs, você também receberá um sinalizador de ACL)</li><li>o número de links para esse arquivo</li><li>o dono do arquivo</li><li>o grupo do arquivo</li><li>o tamanho do arquivo em bytes</li><li>a data e hora da última modificação do arquivo</li><li>o nome do arquivo</li></ul><p>Esse conjunto de dados é gerado pela opção <code>l</code>. A opção <code>a</code> também mostra os arquivos ocultos.</p><p>Arquivos ocultos são arquivos que começam com um ponto (<code>.</code>).</p><h2 id="o-comando-cd-no-linux"><strong>O comando <code>cd</code> no Linux</strong></h2><p>Depois de ter uma pasta, você pode movê-la usando o comando <code>cd</code>. <code>cd</code> significa <strong>alterar diretório </strong>(do inglês, <em>change directory</em>). Você o invoca especificando uma pasta para a qual mover. Você pode especificar um nome de pasta ou um caminho completo.</p><p>Exemplo:</p><pre><code>mkdir fruits
cd fruits</code></pre><p>‌ Agora, você está na pasta <code>fruits</code>.</p><p>Você pode usar o caminho especial <code>..</code> para indicar a pasta pai:</p><pre><code>cd .. #retorno à pasta pai</code></pre><p>O caractere # indica o início do comentário, que dura toda a linha após ser encontrado.</p><p>Você pode usar o comando <code>cd</code> junto do caminho especial para formar um caminho:</p><pre><code class="language-bash">mkdir fruits
mkdir cars
cd fruits
cd ../cars</code></pre><p>Existe outro indicador de caminho especial, que é o <code>.</code>, que indica a pasta <strong>atual</strong>.</p><p>Você também pode usar caminhos absolutos, que começam na pasta raiz <code>/</code>:</p><pre><code class="language-bash">cd /etc</code></pre><h2 id="o-comando-pwd-no-linux">O comando <code>pwd</code> no Linux</h2><p>Sempre que você se sentir perdido no sistema de arquivos, chame o comando <code>pwd</code> para saber onde você está:</p><pre><code class="language-bash">pwd</code></pre><p>Ele imprimirá o caminho da pasta atual.</p><h2 id="o-comando-mkdir-no-linux"><strong>O comando <code>mkdir</code> no Linux</strong></h2><p>Você pode criar pastas usando o comando <code>mkdir</code>:</p><pre><code class="language-bash">mkdir fruits</code></pre><p>Você pode criar várias pastas com um comando:</p><pre><code class="language-bash">mkdir dogs cars</code></pre><p>Você também pode criar várias pastas aninhadas adicionando a opção &nbsp;<code>-p</code>:</p><pre><code class="language-bash">mkdir -p fruits/apples</code></pre><p>As opções nos comandos UNIX geralmente assumem esse formato. Você os adiciona logo após o nome do comando e eles mudam o comportamento do comando. Muitas vezes, você também pode combinar várias opções.</p><p>Você pode descobrir quais opções um comando suporta digitando <code>man &lt;nome_do_comando&gt;</code>. Tente agora com <code>man mkdir</code>, por exemplo, (pressione a tecla <code>q</code> para sair da página de manual). As páginas de manual são a incrível ajuda integrada para UNIX.</p><h2 id="o-comando-rmdir-no-linux"><strong>O comando <code>rmdir</code> no Linux</strong></h2><p>Assim como você pode criar uma pasta usando <code>mkdir</code>, você pode excluir uma pasta usando <code>rmdir</code>:</p><pre><code class="language-bash">mkdir fruits
rmdir fruits</code></pre><p>Você também pode excluir várias pastas de uma vez:</p><pre><code class="language-bash">mkdir fruits cars
rmdir fruits cars</code></pre><p>‌ A pasta que você exclui deve estar vazia.</p><p>Para excluir pastas com arquivos, usaremos o comando <code>rm</code> mais genérico, que exclui arquivos e pastas, usando a opção <code>-rf</code>:</p><pre><code class="language-bash">rm -rf fruits cars</code></pre><p>Tenha cuidado, pois esse comando não pede confirmação e removerá imediatamente tudo o que você solicitar.</p><p>Não há <strong>bin</strong> ao remover arquivos da linha de comando e recuperar arquivos perdidos pode ser difícil.</p><h2 id="o-comando-mv-no-linux"><strong>O comando <code>mv</code> no Linux</strong></h2><p>Depois de ter um arquivo, você pode movê-lo usando o comando <code>mv</code>. Você especifica o caminho atual do arquivo e seu novo caminho:</p><pre><code class="language-bash">touch test
mv pear new_pear</code></pre><p>O arquivo <code>pear</code> é movido para <code>new_pear</code>. É assim que você <strong>renomeia</strong> arquivos e pastas.</p><p>Se o último parâmetro for uma pasta, o arquivo localizado no caminho do primeiro parâmetro será movido para essa pasta. Nesse caso, você pode especificar uma lista de arquivos e todos eles serão movidos no caminho da pasta identificado pelo último parâmetro:</p><pre><code class="language-bash">touch pear
touch apple
mkdir fruits
mv pear apple fruits #pear e apple são movidos para a pasta fruits</code></pre><h2 id="o-comando-cp-no-linux">O comando <code>cp</code> no Linux</h2><p>Você pode copiar um arquivo usando o comando <code>cp</code>:</p><pre><code class="language-bash">touch test
cp apple another_apple</code></pre><p>Para copiar pastas você precisa adicionar a opção <code>-r</code> para copiar recursivamente todo o conteúdo da pasta:</p><pre><code class="language-bash">mkdir fruits
cp -r fruits cars</code></pre><h2 id="-o-comando-open-no-linux">‌O comando <code>open</code> no Linux</h2><p>O comando <code>open</code> permite abrir um arquivo usando esta sintaxe:‌</p><pre><code class="language-bash">open &lt;nome_do_arquivo&gt;</code></pre><p>Você também pode abrir um diretório, que no macOS abre o aplicativo Finder com o diretório atual aberto:</p><pre><code>open &lt;nome_do_diretório&gt;</code></pre><p>‌ Eu uso isso o tempo todo para abrir o diretório atual:</p><pre><code>open .</code></pre><blockquote><em>O símbolo especial <em> </em></em><code><em><em>.</em></em></code><em><em> </em></em>aponta para o diretório atual, enquanto<em><em> </em></em><code><em><em>..</em></em></code><em><em> </em></em>aponta para o diretório pai</blockquote><p>O mesmo comando também pode ser usado para executar uma aplicação:</p><pre><code>open &lt;nome_da_aplicação&gt;</code></pre><h2 id="-o-comando-touch-no-linux">‌O comando <code>touch</code> no Linux</h2><p>Você pode criar um arquivo vazio usando o comando <code>touch</code>:</p><pre><code>touch apple</code></pre><p>‌Se o arquivo já existir, ele será aberto no modo de gravação e o carimbo de data/hora do arquivo será atualizado.</p><h2 id="o-comando-find-no-linux"><strong>O comando <code>find</code> no Linux</strong></h2><p>O comando <code>find</code> pode ser usado para localizar arquivos ou pastas que correspondam a um padrão de pesquisa específico. Ele pesquisa recursivamente.</p><p>Vamos aprender como usá-lo por meio de um exemplo.</p><p>Encontre todos os arquivos na árvore atual que possuem a extensão <code>.js</code> e imprima o caminho relativo de cada arquivo correspondente:</p><pre><code class="language-bash">find . -name '*.js'</code></pre><p>É importante usar aspas em torno de caracteres especiais como <code>*</code> para evitar que o shell os interprete.</p><p>Encontre diretórios na árvore atual que correspondam ao nome "src":</p><pre><code class="language-bash">find . -type d -name src</code></pre><p>Use <code>-type f</code> para pesquisar apenas arquivos ou <code>-type l</code> para pesquisar apenas links simbólicos.</p><p><code>-name</code> diferencia maiúsculas de minúsculas. Use <code>-iname</code> para realizar uma pesquisa sem distinção entre maiúsculas e minúsculas.</p><p>Você pode pesquisar em várias árvores raiz:</p><pre><code class="language-bash">find folder1 folder2 -name filename.txt</code></pre><p>Encontre diretórios na árvore atual que correspondam ao nome "node_modules" ou 'public':</p><pre><code class="language-bash">find . -type d -name node_modules -or -name public</code></pre><p>Você também pode excluir um caminho da pesquisa usando <code>-not -path</code>:</p><pre><code class="language-bash">find . -type d -name '*.md' -not -path 'node_modules/*'</code></pre><p>Você pode pesquisar arquivos que contenham mais de 100 caracteres (bytes):</p><pre><code class="language-bash">find . -type f -size +100c</code></pre><p>Pesquise arquivos maiores que 100 KB, mas menores que 1 MB:</p><pre><code class="language-bash">find . -type f -size +100k -size -1M</code></pre><p>Pesquise arquivos editados há mais de 3 dias:</p><pre><code class="language-bash">find . -type f -mtime +3</code></pre><p>Pesquise arquivos editados nas últimas 24 horas:</p><pre><code class="language-bash">find . -type f -mtime -1</code></pre><p>Você pode excluir todos os arquivos que correspondem a uma pesquisa adicionando a opção <code>-delete</code>. Isso exclui todos os arquivos editados nas últimas 24 horas:</p><pre><code class="language-bash">find . -type f -mtime -1 -delete</code></pre><p>Você pode executar um comando em cada resultado da pesquisa. No exemplo, executamos <code>cat</code> para imprimir o conteúdo do arquivo:</p><pre><code class="language-bash">find . -type f -exec cat {} \;</code></pre><p>Observe a terminação <code>\;</code>. <code>{}</code> é preenchido com o nome do arquivo em tempo de execução.</p><h2 id="o-comando-ln-no-linux"><strong>O comando <code>ln</code> no Linux</strong></h2><p>O comando <code>ln</code> faz parte dos comandos do sistema de arquivos Linux.</p><p>É usado para criar links. O que é um link? É como um ponteiro para outro arquivo ou um arquivo que aponta para outro arquivo. Você deve estar familiarizado com os atalhos do Windows. Eles são semelhantes.</p><p>Temos 2 tipos de links:<strong> hard links</strong> e <strong>soft</strong> <strong>links.</strong></p><h4 id="hard-links"><strong>Hard links</strong></h4><p>Hard links raramente são usados. Eles têm algumas limitações: você não pode vincular a diretórios e não pode vincular a sistemas de arquivos externos (discos).</p><p>Um <em>hard link</em> é criado usando a seguinte sintaxe:</p><pre><code class="language-bash">ln &lt;original&gt; &lt;link&gt;</code></pre><p>Por exemplo, digamos que você tenha um arquivo chamado recipes.txt (um arquivo de texto com receitas). Você pode criar um <em>hard link</em> para ele usando:</p><pre><code class="language-bash">ln recipes.txt newrecipes.txt</code></pre><p>O novo <em>hard link</em> que você criou é indistinguível de um arquivo normal:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-02-at-11.26.21.png" class="kg-image" alt="Screen-Shot-2020-09-02-at-11.26.21" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-02-at-11.26.21.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-02-at-11.26.21.png 815w" sizes="(min-width: 720px) 720px" width="815" height="389" loading="lazy"></figure><p>Agora, sempre que você editar qualquer um desses arquivos, o conteúdo será atualizado para ambos.</p><p>Se você excluir o arquivo original, o link ainda conterá o conteúdo do arquivo original, pois ele não será removido até que haja um <em>hard link</em> apontando para ele.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-02-at-11.26.07-1.png" class="kg-image" alt="Screen-Shot-2020-09-02-at-11.26.07-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-02-at-11.26.07-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-02-at-11.26.07-1.png 661w" width="661" height="364" loading="lazy"></figure><h3 id="soft-links">Soft links</h3><p><em>Soft links</em> são diferentes. Eles são mais poderosos porque você pode vincular a outros sistemas de arquivos e diretórios. Lembre-se, porém, de que, quando o original for removido, o link será quebrado.</p><p>Você cria links virtuais usando a opção <code>-s</code> de <code>ln</code>:</p><pre><code class="language-bash">ln -s &lt;original&gt; &lt;link&gt;</code></pre><p>Por exemplo, digamos que você tenha um arquivo chamado recipes.txt. Você pode criar um <em>soft link</em> para ele usando:</p><pre><code class="language-bash">ln -s recipes.txt newrecipes.txt</code></pre><p>Nesse caso, você pode ver que há um sinalizador <code>l</code> especial ao listar o arquivo usando <code>ls -al</code>. O nome do arquivo tem um <code>@</code> no final e também tem uma cor diferente se você tiver as cores ativadas:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-02-at-11.27.18-1.png" class="kg-image" alt="Screen-Shot-2020-09-02-at-11.27.18-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-02-at-11.27.18-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-02-at-11.27.18-1.png 980w" sizes="(min-width: 720px) 720px" width="980" height="289" loading="lazy"></figure><p>‌‌Agora, se você excluir o arquivo original, os links serão quebrados e o shell informará "Esse arquivo ou diretório não existe" se você tentar acessá-lo:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-02-at-11.27.03-1.png" class="kg-image" alt="Screen-Shot-2020-09-02-at-11.27.03-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-02-at-11.27.03-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-02-at-11.27.03-1.png 815w" sizes="(min-width: 720px) 720px" width="815" height="389" loading="lazy"></figure><h2 id="o-comando-gzip-no-linux">O comando <code>gzip</code> no Linux</h2><p>Você pode compactar um arquivo usando o protocolo de compactação gzip denominado <a href="https://en.wikipedia.org/wiki/LZ77_and_LZ78">LZ77</a> usando o comando <code>gzip</code> .</p><p>Aqui está o uso mais simples:</p><pre><code class="language-bash">gzip filename</code></pre><p>Isso compactará o arquivo e acrescentará uma extensão <code>.gz</code> a ele. O arquivo original é excluído.</p><p>Para evitar isso, você pode usar a opção <code>-c</code> e usar o redirecionamento de saída para gravar a saída no arquivo &nbsp;<code>filename.gz</code> :</p><pre><code class="language-bash">gzip -c filename &gt; filename.gz</code></pre><blockquote>‌<em>A opção<em> <code>-c</code> </em></em>especifica que a saída estará no fluxo de saída padrão, deixando o arquivo original intacto.</blockquote><p>Você também pode usar a opção <code>-k</code>:</p><pre><code class="language-bash">gzip -k filename</code></pre><p>Existem vários níveis de compressão. Quanto maior a compactação, mais tempo levará para compactar (e descompactar). Os níveis variam de 1 (compactação mais rápida e pior) a 9 (compactação mais lenta e melhor) e o padrão é 6.</p><p>Você pode escolher um nível específico com a opção: <code>-&lt;NUMBER&gt;</code>:‌</p><pre><code class="language-bash">gzip -1 filename</code></pre><p>Você pode compactar vários arquivos listando-os:</p><pre><code class="language-bash">gzip filename1 filename2</code></pre><p>Você pode compactar todos os arquivos em um diretório, recursivamente, usando a opção <code>-r</code> :</p><pre><code class="language-bash">gzip -r a_folder</code></pre><p>A opção <code>-v</code> imprime as informações de porcentagem de compactação. Aqui está um exemplo de uso junto com a opção <code>-k</code> (keep):</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-09-at-15.55.42-1.png" class="kg-image" alt="Screen-Shot-2020-09-09-at-15.55.42-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-09-at-15.55.42-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-09-at-15.55.42-1.png 760w" sizes="(min-width: 720px) 720px" width="760" height="264" loading="lazy"></figure><p><code>gzip</code> também pode ser usado para descompactar um arquivo, usando a opção <code>-d</code> :</p><pre><code class="language-bash">gzip -d filename.gz</code></pre><h2 id="o-comando-gunzip-no-linux">O comando <code>gunzip</code> no Linux</h2><p>O comando <code>gunzip</code> basicamente equivalente ao comando <code>gzip</code>, exceto que a opção <code>-d</code> está sempre habilitada por padrão.</p><p>O comando pode ser invocado desta maneira:‌</p><pre><code class="language-bash">gunzip filename.gz</code></pre><p>Isso compactará e removerá a extensão <code>.gz</code> colocando o resultado no arquivo com &nbsp;<code>filename</code> . Se esse arquivo existir, ele será sobrescrito.</p><p>Você pode extrair para um nome de arquivo diferente usando o redirecionamento de saída usando a opção <code>-c</code> :</p><pre><code class="language-bash">gunzip -c filename.gz &gt; anotherfilename</code></pre><h2 id="o-comando-tar-no-linux">O comando <code>tar</code> no Linux</h2><p>O comando <code>tar</code> é usado para criar um arquivo, agrupando vários arquivos em um único arquivo.</p><p>Seu nome vem do passado e significa arquivo em fita (na época em que os arquivos eram armazenados em fitas – em inglês, <em>Tape ARchive</em>).</p><p>Este comando cria um arquivo chamado <code>archive.tar</code> com o conteúdo de &nbsp;<code>file1</code> &nbsp;e &nbsp;<code>file2</code>:</p><pre><code class="language-bash">tar -cf archive.tar file1 file2</code></pre><blockquote>‌ <em>A opção<em> <code>c</code> </em></em>significa criar. A opção<em><em> <code>f</code> </em></em>é usada para gravar no arquivo.</blockquote><p>Para extrair arquivos de um arquivo na pasta atual, use:</p><pre><code class="language-bash">tar -xf archive.tar</code></pre><blockquote><em>A opção<em> <code>x</code> </em></em>significa extrair.</blockquote><p>Para extraí-los para um diretório específico, use:</p><pre><code class="language-bash">tar -xf archive.tar -C nome_do_diretório</code></pre><p>Você também pode simplesmente listar os arquivos contidos em um arquivo:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-09-at-16.56.33-1.png" class="kg-image" alt="Screen-Shot-2020-09-09-at-16.56.33-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-09-at-16.56.33-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-09-at-16.56.33-1.png 727w" sizes="(min-width: 720px) 720px" width="727" height="264" loading="lazy"></figure><p><code>tar</code> é frequentemente usado para criar um <strong>arquivo compactado</strong>, compactando o arquivo.</p><p>Isso é feito usando a opção <code>z</code> :</p><pre><code class="language-bash">tar -czf archive.tar.gz file1 file2</code></pre><p>É como criar um arquivo tar e executar <code>gzip</code> nele.</p><p>Para desarquivar um arquivo compactado com gzip, você pode usar <code>gunzip</code>, ou <code>gzip -d</code>, e depois desarquivá-lo. <code>tar -xf</code>, no entanto, reconhecerá que é um arquivo compactado e fará isso por você:</p><pre><code class="language-bash">tar -xf archive.tar.gz</code></pre><h2 id="o-comando-alias-no-linux">O comando <code>alias</code> no Linux</h2><p>É comum sempre executar um programa com um conjunto de opções que você gosta de usar.</p><p>Por exemplo, pegue o comando <code>ls</code>. Por padrão, imprime muito pouca informação:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-15.21.00-1.png" class="kg-image" alt="Screen-Shot-2020-09-03-at-15.21.00-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-03-at-15.21.00-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-15.21.00-1.png 694w" width="694" height="314" loading="lazy"></figure><p>‌ Se, no entanto, você usar a opção <code>-al</code>, imprimirá algo mais útil, incluindo a data de modificação do arquivo, o tamanho, o proprietário e as permissões. Ele também listará os arquivos ocultos (arquivos que começam com <code>.</code>):</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-15.21.08-1.png" class="kg-image" alt="Screen-Shot-2020-09-03-at-15.21.08-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-03-at-15.21.08-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-15.21.08-1.png 793w" sizes="(min-width: 720px) 720px" width="793" height="389" loading="lazy"></figure><p>Você pode criar um outro comando – por exemplo, gosto de chamá-lo de <code>ll</code>, que é um alias para <code>ls -al</code>.</p><p>Você faz assim:</p><pre><code class="language-bash">alias ll='ls -al'</code></pre><p>Depois de fazer isso, você pode chamar <code>ll</code> como se fosse um comando normal do UNIX:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-15.22.51-1.png" class="kg-image" alt="Screen-Shot-2020-09-03-at-15.22.51-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-03-at-15.22.51-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-15.22.51-1.png 793w" sizes="(min-width: 720px) 720px" width="793" height="339" loading="lazy"></figure><p>Chamar &nbsp;<code>alias</code> sem qualquer opção listará os aliases definidos:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-15.30.19-1.png" class="kg-image" alt="Screen-Shot-2020-09-03-at-15.30.19-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-03-at-15.30.19-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-15.30.19-1.png 793w" sizes="(min-width: 720px) 720px" width="793" height="264" loading="lazy"></figure><p>‌O alias funcionará até que a sessão do terminal seja fechada.</p><p>Para torná-lo permanente, você precisa adicioná-lo à configuração do shell. Pode ser <code>~/.bashrc</code> ou <code>~/.profile</code> ou <code>~/.bash_profile</code> se você usar o shell Bash, dependendo do caso de uso.</p><p>Tenha cuidado com aspas se você tiver variáveis no comando: se você usar aspas duplas, a variável será resolvida no momento da definição. Se você usar aspas simples, ela será resolvida no momento da invocação. Os dois comandos abaixo são diferentes:</p><pre><code class="language-bash">alias lsthis="ls $PWD"
alias lscurrent='ls $PWD'</code></pre><p>$PWD refere-se à pasta atual em que o shell está. Se você navegar para uma nova pasta, <code>lscurrent</code> listará os arquivos na nova pasta, enquanto <code>lsthis</code> ainda listará os arquivos na pasta onde você estava quando definiu o alias.</p><h2 id="o-comando-cat-no-linux"><strong>O comando <code>cat</code> no Linux</strong></h2><p>Semelhante a <a href="https://www.freecodecamp.org/news/unix-command-tail/"><code>tail</code></a> em alguns aspectos, temos o <code>cat</code>. A diferença está no fato de que <code>cat</code> também pode adicionar conteúdo a um arquivo. Isso o torna superpoderoso.</p><p>Em seu uso mais simples, <code>cat</code> imprime o conteúdo de um arquivo na saída padrão:</p><pre><code class="language-bash">cat file</code></pre><p>Você pode imprimir o conteúdo de vários arquivos:</p><pre><code class="language-bash">cat file1 file2</code></pre><p>Usando o operador de redirecionamento de saída <code>&gt;</code>, você pode concatenar o conteúdo de vários arquivos em um novo arquivo:</p><pre><code class="language-bash">cat file1 file2 &gt; file3</code></pre><p>Usando <code>&gt;&gt;</code>, você pode anexar o conteúdo de vários arquivos em um novo arquivo, criando-o se ele não existir:</p><pre><code class="language-bash">cat file1 file2 &gt;&gt; file3</code></pre><p>Ao visualizar arquivos de código-fonte, é útil ver os números das linhas. Você pode fazer com que o <code>cat</code> os imprima usando a opção <code>-n</code> :</p><pre><code class="language-bash">cat -n file1</code></pre><p>Você só pode adicionar um número a linhas que não estejam em branco usando <code>-b</code>, ou também pode remover todas as múltiplas linhas vazias usando <code>-s</code>.</p><p><code>cat</code> é frequentemente usado em combinação com o operador <code>|</code> para alimentar o conteúdo de um arquivo como entrada para outro comando: <code>cat file1 | outro_comando</code>.</p><h2 id="o-comando-less-no-linux"><strong>O comando <code>less</code> no Linux</strong></h2><p>O comando <code>less</code> é um que eu uso muito. Ele mostra o conteúdo armazenado dentro de um arquivo, em uma interface de usuário agradável e interativa.</p><p>Use: <code>less &lt;nome_do_arquivo&gt;</code>.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screenshot-2019-02-10-at-09.11.05-1.png" class="kg-image" alt="Screenshot-2019-02-10-at-09.11.05-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screenshot-2019-02-10-at-09.11.05-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screenshot-2019-02-10-at-09.11.05-1.png 929w" sizes="(min-width: 720px) 720px" width="929" height="666" loading="lazy"></figure><p>Quando estiver dentro de uma sessão <code>less</code>, você pode sair dela pressionando <code>q</code>.</p><p>Você pode navegar pelo conteúdo do arquivo usando as teclas das setas para <code>cima</code> e para <code>baixo</code>, ou usando <code>a barra de espaço</code> e <code>b</code> para navegar página por página. Você também pode pular para o final do arquivo pressionando <code>G</code> e voltar ao início pressionando <code>g</code>.</p><p>Você pode pesquisar o conteúdo do arquivo pressionando <code>/</code> digitando uma palavra para pesquisar. Isso busca adiante. Você pode pesquisar para trás usando o símbolo <code>?</code> e digitando uma palavra.</p><p>Esse comando apenas visualiza o conteúdo do arquivo. Você pode abrir um editor diretamente pressionando <code>v</code>. Ele usará o editor do sistema, que, na maioria dos casos, é o <code>vim</code>.</p><p>Pressionar a tecla <code>F</code> entra no modo de acompanhamento ou modo de observação. Quando o arquivo é alterado por outra pessoa, como outro programa, você pode ver as alterações ao vivo.</p><p>Isso não acontece por padrão e você só vê a versão do arquivo no momento em que o abre. Você precisa pressionar <code>ctrl-C</code> para sair deste modo. Nesse caso, o comportamento é semelhante à execução do comando <code>tail -f &lt;nome_do_arquivo&gt;</code> .</p><p>Você pode abrir vários arquivos e navegar por eles usando <code>:n</code> (para ir para o próximo arquivo) e <code>:p</code> (para ir para o anterior).</p><h2 id="o-comando-tail-no-linux"><strong>O comando <code>tail</code> no Linux</strong></h2><p>O melhor caso de uso de tail, na minha opinião, é quando chamado com a opção <code>-f</code>. Ele abre o arquivo no final e observa as alterações no arquivo.</p><p>Sempre que houver novo conteúdo no arquivo, ele será impresso na janela. Isso é ótimo para observar arquivos de log, por exemplo:</p><pre><code class="language-bash">tail -f /var/log/system.log</code></pre><p>Para sair, pressione a tecla <code>ctrl-C</code>.</p><p>Você pode imprimir as últimas 10 linhas de um arquivo:</p><pre><code class="language-bash">tail -n 10 &lt;nome_do_arquivo&gt;</code></pre><p>Você pode imprimir todo o conteúdo do arquivo começando em uma linha específica usando <code>+</code> antes do número da linha:</p><pre><code class="language-bash">tail -n +10 &lt;nome_do_arquivo&gt;</code></pre><p><code>tail</code> pode fazer muito mais e, como sempre, meu conselho é verificar o &nbsp;<code>man tail</code>.</p><h2 id="o-comando-wc-no-linux"><strong>O comando <code>wc</code> no Linux</strong></h2><p>O comando <code>wc</code> nos fornece informações úteis sobre um arquivo ou entrada que ele recebe por meio de <em>pipes</em>.</p><pre><code class="language-bash">echo test &gt;&gt; test.txt
wc test.txt
1       1       5 test.txt</code></pre><p>‌Como exemplo por meio de <em>pipes</em>, podemos contar a saída da execução do comando <code>ls -al</code> :</p><pre><code class="language-bash">ls -al | wc
6      47     284</code></pre><p>A primeira coluna retornada é o número de linhas. O segundo é o número de palavras. O terceiro é o número de bytes.</p><p>Podemos dizer para apenas contar as linhas:</p><pre><code class="language-bash">wc -l test.txt</code></pre><p>ou apenas as palavras:</p><pre><code class="language-bash">wc -w test.txt</code></pre><p> apenas os bytes:</p><pre><code class="language-bash">wc -c test.txt</code></pre><p>Bytes em conjuntos de caracteres ASCII equivalem a caracteres. Com conjuntos de caracteres que não sejam ASCII, o número de caracteres pode ser diferente porque alguns caracteres podem ocupar vários bytes (por exemplo, isso acontece em Unicode).</p><p>Nesse caso, o sinalizador <code>-m</code> ajudará você a obter o valor correto:</p><pre><code class="language-bash">wc -m test.txt</code></pre><h2 id="o-comando-grep-no-linux"><strong>O comando <code>grep</code> no Linux</strong></h2><p>O comando <code>grep</code> é uma ferramenta muito útil. Quando você dominá-lo, ele o ajudará tremendamente na programação do dia a dia.</p><blockquote>Se você está se perguntando,<em><em> <code>grep</code> </em></em>significa impressão de expressão regular global.</blockquote><p>Você pode usar <code>grep</code> &nbsp;para pesquisar arquivos ou combiná-lo com <em>pipes </em>para filtrar a saída de outro comando.</p><p>Por exemplo, aqui está como podemos encontrar as ocorrências da linha <code>document.getElementById</code> no arquivo <code>index.md</code>:</p><pre><code class="language-bash">grep -n document.getElementById index.md</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-04-at-09.42.10-1.png" class="kg-image" alt="Screen-Shot-2020-09-04-at-09.42.10-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-04-at-09.42.10-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-04-at-09.42.10-1.png 969w" sizes="(min-width: 720px) 720px" width="969" height="314" loading="lazy"></figure><p>‌ Usar a opção <code>-n</code> &nbsp;mostrará os números das linhas:‌ </p><pre><code class="language-bash">grep -n document.getElementById index.md</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-04-at-09.47.04-1.png" class="kg-image" alt="Screen-Shot-2020-09-04-at-09.47.04-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-04-at-09.47.04-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-04-at-09.47.04-1.png 848w" sizes="(min-width: 720px) 720px" width="848" height="439" loading="lazy"></figure><p>Uma coisa muito útil é dizer ao grep para imprimir 2 linhas antes e 2 linhas depois da linha correspondente para dar a ele mais contexto. Isso é feito usando a opção <code>-C</code>, que aceita várias linhas:</p><pre><code class="language-bash">grep -nC 2 document.getElementById index.md</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-04-at-09.44.35-1.png" class="kg-image" alt="Screen-Shot-2020-09-04-at-09.44.35-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-04-at-09.44.35-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-04-at-09.44.35-1.png 958w" sizes="(min-width: 720px) 720px" width="958" height="539" loading="lazy"></figure><p>A pesquisa diferencia maiúsculas de minúsculas por padrão. Use o sinalizador <code>-i</code> para não diferenciar.</p><p>Conforme mencionado, você pode usar grep para filtrar a saída de outro comando. Podemos replicar a mesma funcionalidade acima usando:</p><pre><code class="language-bash">less index.md | grep -n document.getElementById</code></pre><p>A string de pesquisa pode ser uma expressão regular e isso torna o <code>grep</code> muito poderoso.</p><p>Outra coisa que você pode achar muito útil é inverter o resultado, excluindo as linhas que correspondem a uma string específica, usando a opção <code>-v</code> :</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-04-at-09.42.04-1.png" class="kg-image" alt="Screen-Shot-2020-09-04-at-09.42.04-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-04-at-09.42.04-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-04-at-09.42.04-1.png 969w" sizes="(min-width: 720px) 720px" width="969" height="314" loading="lazy"></figure><h2 id="o-comando-sort-no-linux"><strong>O comando <code>sort</code> no Linux</strong></h2><p>Suponha que você tenha um arquivo de texto que contém nomes de cachorros:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-07.56.28-1.png" class="kg-image" alt="Screen-Shot-2020-09-07-at-07.56.28-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-07-at-07.56.28-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-07.56.28-1.png 694w" width="694" height="414" loading="lazy"></figure><p>Essa lista não está ordenada.</p><p>O comando <code>sort</code> ajuda você a classificá-los por nome:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-07.57.08-1.png" class="kg-image" alt="Screen-Shot-2020-09-07-at-07.57.08-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-07-at-07.57.08-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-07.57.08-1.png 694w" width="694" height="414" loading="lazy"></figure><p>Use a opção <code>r</code> para reverter a ordem:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-07.57.28-1.png" class="kg-image" alt="Screen-Shot-2020-09-07-at-07.57.28-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-07-at-07.57.28-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-07.57.28-1.png 683w" width="683" height="364" loading="lazy"></figure><p>A classificação por padrão diferencia maiúsculas de minúsculas e é alfabética. Use a opção <code>--ignore-case</code> para classificar sem distinção entre maiúsculas e minúsculas e a opção <code>-n</code> para classificar usando uma ordem numérica.</p><p>Se o arquivo tiver linhas duplicadas:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-07.59.03-1.png" class="kg-image" alt="Screen-Shot-2020-09-07-at-07.59.03-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-07-at-07.59.03-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-07.59.03-1.png 782w" sizes="(min-width: 720px) 720px" width="782" height="514" loading="lazy"></figure><p>Você pode usar a opção <code>-u</code> para removê-los:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-07.59.16-1.png" class="kg-image" alt="Screen-Shot-2020-09-07-at-07.59.16-1" width="562" height="339" loading="lazy"></figure><p><code>sort</code> não funciona apenas em arquivos, como muitos comandos UNIX fazem – ele também funciona com <em>pipes</em>. Portanto, você pode usá-lo na saída de outro comando. Por exemplo, você pode ordenar os arquivos retornados por <code>ls</code> com:</p><pre><code class="language-bash">ls | sort</code></pre><p><code>sort</code> é muito poderoso e tem muito mais opções, que você pode explorar chamando <code>man sort</code>.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-08.01.27-1.png" class="kg-image" alt="Screen-Shot-2020-09-07-at-08.01.27-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-07-at-08.01.27-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/06/Screen-Shot-2020-09-07-at-08.01.27-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-08.01.27-1.png 1387w" sizes="(min-width: 720px) 720px" width="1387" height="1514" loading="lazy"></figure><h2 id="o-comando-uniq-no-linux"><strong>O comando <code>uniq</code> no Linux</strong></h2><p><code>uniq</code> é um comando que ajuda a classificar linhas de texto.</p><p>Você pode obter essas linhas de um arquivo ou usar <em>pipes </em>da saída de outro comando:</p><pre><code class="language-bash">uniq dogs.txt

ls | uniq</code></pre><p>Você precisa considerar este ponto importante: o <code>uniq</code> detectará apenas linhas duplicadas adjacentes.</p><p>Isso implica que você provavelmente o usará junto com <code>sort</code>:</p><pre><code class="language-bash">sort dogs.txt | uniq</code></pre><p>O comando <code>sort</code> tem sua própria maneira de remover duplicatas com a opção <code>-u</code> (<em><em>unique</em></em>). Mas <code>uniq</code> tem mais poder.</p><p>Por padrão, ele remove linhas duplicadas:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-08.39.35-1.png" class="kg-image" alt="Screen-Shot-2020-09-07-at-08.39.35-1" width="562" height="564" loading="lazy"></figure><p>Você pode instruí-lo para exibir apenas linhas duplicadas, por exemplo, com a opção <code>-d</code> :</p><pre><code class="language-bash">sort dogs.txt | uniq -d</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-08.36.50-1.png" class="kg-image" alt="Screen-Shot-2020-09-07-at-08.36.50-1" width="562" height="464" loading="lazy"></figure><p>Você pode usar o comando <code>-u</code> para exibir apenas linhas não duplicadas:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-08.38.50-1.png" class="kg-image" alt="Screen-Shot-2020-09-07-at-08.38.50-1" width="562" height="514" loading="lazy"></figure><p>Você pode contar as ocorrências de cada linha com a opção <code>-c</code> :</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-08.37.15.png" class="kg-image" alt="Screen-Shot-2020-09-07-at-08.37.15" width="562" height="564" loading="lazy"></figure><p>Use a combinação especial:</p><pre><code class="language-bash">sort dogs.txt | uniq -c | sort -nr</code></pre><p>Assim, você classificará essas linhas pelas mais frequentes:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-08.37.49-1.png" class="kg-image" alt="Screen-Shot-2020-09-07-at-08.37.49-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-07-at-08.37.49-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-08.37.49-1.png 606w" width="606" height="339" loading="lazy"></figure><h2 id="o-comando-diff-no-linux"><strong>O comando <code>diff</code> no Linux</strong></h2><p><code>diff</code> é um comando útil. Suponha que você tenha 2 arquivos que contêm quase as mesmas informações, mas não consegue encontrar a diferença entre os dois.</p><p><code>diff</code> processará os arquivos e dirá qual é a diferença.</p><p>Suponha que você tem dois arquivos: <code>dogs.txt</code> e <code>moredogs.txt</code>. A diferença é que <code>moredogs.txt</code> contêm mais um nome de cachorro:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-08.55.18-1.png" class="kg-image" alt="Screen-Shot-2020-09-07-at-08.55.18-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-07-at-08.55.18-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-08.55.18-1.png 672w" width="672" height="339" loading="lazy"></figure><p><code>diff dogs.txt moredogs.txt</code> dirá que o segundo arquivo tem mais uma linha, a linha 3 com o nome <code>Vanille</code>:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-08.56.05-1.png" class="kg-image" alt="Screen-Shot-2020-09-07-at-08.56.05-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-07-at-08.56.05-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-08.56.05-1.png 672w" width="672" height="264" loading="lazy"></figure><p>Se você inverter a ordem dos arquivos, será informado que falta a linha 3 no segundo arquivo, cujo conteúdo é &nbsp;<code>Vanille</code>:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-08.56.10-1.png" class="kg-image" alt="Screen-Shot-2020-09-07-at-08.56.10-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-07-at-08.56.10-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-08.56.10-1.png 672w" width="672" height="264" loading="lazy"></figure><p>Usar a opção <code>-y</code> vai comparar os 2 arquivos linha por linha:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-08.57.56-1.png" class="kg-image" alt="Screen-Shot-2020-09-07-at-08.57.56-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-07-at-08.57.56-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/06/Screen-Shot-2020-09-07-at-08.57.56-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-08.57.56-1.png 1068w" sizes="(min-width: 720px) 720px" width="1068" height="364" loading="lazy"></figure><p>A opção <code>-u</code> entretanto, será mais familiar para você, porque é a mesma usada pelo sistema de controle de versão Git para exibir diferenças entre versões:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-08.58.23-1.png" class="kg-image" alt="Screen-Shot-2020-09-07-at-08.58.23-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-07-at-08.58.23-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-08.58.23-1.png 859w" sizes="(min-width: 720px) 720px" width="859" height="339" loading="lazy"></figure><p>A comparação de diretórios funciona da mesma maneira. Você deve usar a opção <code>-r</code> para comparar recursivamente (entrando em subdiretórios):</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-09.01.07-1.png" class="kg-image" alt="Screen-Shot-2020-09-07-at-09.01.07-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-07-at-09.01.07-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-09.01.07-1.png 870w" sizes="(min-width: 720px) 720px" width="870" height="464" loading="lazy"></figure><p>Caso você esteja interessado em quais arquivos diferem, e não no conteúdo, use as opções <code>r</code> e <code>q</code> :</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-09.01.30-1.png" class="kg-image" alt="Screen-Shot-2020-09-07-at-09.01.30-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-07-at-09.01.30-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-09.01.30-1.png 870w" sizes="(min-width: 720px) 720px" width="870" height="264" loading="lazy"></figure><p>Existem muitas outras opções que você pode explorar na página de manual executando <code>man diff</code>:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-09.02.32-1.png" class="kg-image" alt="Screen-Shot-2020-09-07-at-09.02.32-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-07-at-09.02.32-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/06/Screen-Shot-2020-09-07-at-09.02.32-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-09.02.32-1.png 1387w" sizes="(min-width: 720px) 720px" width="1387" height="1514" loading="lazy"></figure><h2 id="o-comando-echo-no-linux"><strong>O comando <code>echo</code> no Linux</strong></h2><p>O comando <code>echo</code> faz um trabalho simples: imprime na saída o argumento passado para ele.</p><p>Esse exemplo:</p><pre><code class="language-bash">echo "hello"</code></pre><p>Isso imprimirá <code>hello</code> no terminal.</p><p>Podemos anexar a saída a um arquivo:</p><pre><code class="language-bash">echo "hello" &gt;&gt; output.txt</code></pre><p>Podemos interpolar variáveis de ambiente:</p><pre><code class="language-bash">echo "The path variable is $PATH"</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-15.44.33-1.png" class="kg-image" alt="Screen-Shot-2020-09-03-at-15.44.33-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-03-at-15.44.33-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-15.44.33-1.png 793w" sizes="(min-width: 720px) 720px" width="793" height="264" loading="lazy"></figure><p>Cuidado, pois os caracteres especiais precisam ser escapados com uma barra invertida <code>\</code>. <code>$</code> por exemplo:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-15.51.18-1.png" class="kg-image" alt="Screen-Shot-2020-09-03-at-15.51.18-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-03-at-15.51.18-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-15.51.18-1.png 793w" sizes="(min-width: 720px) 720px" width="793" height="264" loading="lazy"></figure><p>Este é apenas o começo. Podemos fazer algumas coisas legais quando se trata de interagir com os recursos do shell.</p><p>Podemos repetir os arquivos na pasta atual:</p><pre><code class="language-bash">echo *</code></pre><p>Podemos repetir os arquivos da pasta atual que começam com a letra <code>o</code>:</p><pre><code class="language-bash">echo o*</code></pre><p>Qualquer comando e recurso válido do Bash (ou qualquer shell que você esteja usando) pode ser usado aqui.</p><p>Você pode imprimir o caminho da sua pasta pessoal:</p><pre><code class="language-bash">echo ~</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-15.46.36-1.png" class="kg-image" alt="Screen-Shot-2020-09-03-at-15.46.36-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-03-at-15.46.36-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-15.46.36-1.png 793w" sizes="(min-width: 720px) 720px" width="793" height="264" loading="lazy"></figure><p>Você também pode executar comandos e imprimir o resultado na saída padrão (ou em arquivo, como você viu):</p><pre><code class="language-bash">echo $(ls -al)</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-15.48.55-1.png" class="kg-image" alt="Screen-Shot-2020-09-03-at-15.48.55-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-03-at-15.48.55-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-15.48.55-1.png 793w" sizes="(min-width: 720px) 720px" width="793" height="289" loading="lazy"></figure><p>Observe que os espaços em branco não são preservados por padrão. Você precisa colocar o comando entre aspas duplas para fazer isso:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-15.49.53-1.png" class="kg-image" alt="Screen-Shot-2020-09-03-at-15.49.53-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-03-at-15.49.53-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-15.49.53-1.png 793w" sizes="(min-width: 720px) 720px" width="793" height="314" loading="lazy"></figure><p>Você pode gerar uma lista de strings, por exemplo, intervalos:</p><pre><code class="language-bash">echo {1..5}</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-15.47.19-1.png" class="kg-image" alt="Screen-Shot-2020-09-03-at-15.47.19-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-03-at-15.47.19-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-15.47.19-1.png 793w" sizes="(min-width: 720px) 720px" width="793" height="264" loading="lazy"></figure><h2 id="o-comando-chown-no-linux"><strong>O comando <code>chown</code> no Linux</strong></h2><p>Cada arquivo/diretório em um sistema operacional como Linux ou macOS (e todo sistema UNIX em geral) tem um <strong>proprietário.</strong></p><p>O proprietário de um arquivo pode fazer tudo com ele. Pode decidir o destino desse arquivo.</p><p>O proprietário (e o usuário <code>root</code> ) também pode alterar o proprietário para outro usuário, usando o comando <code>chown</code>:</p><pre><code class="language-bash">chown &lt;owner&gt; &lt;file&gt;</code></pre><p>Assim:</p><pre><code class="language-bash">chown flavio test.txt</code></pre><p>‌Por exemplo, se você tiver um arquivo que pertence ao <code>root</code>, você não poderá escrever nele como outro usuário:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-18.40.49-1.png" class="kg-image" alt="Screen-Shot-2020-09-03-at-18.40.49-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-03-at-18.40.49-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-18.40.49-1.png 837w" sizes="(min-width: 720px) 720px" width="837" height="314" loading="lazy"></figure><p>Você pode usar <code>chown</code> para transferir a propriedade para você:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-18.40.58-1.png" class="kg-image" alt="Screen-Shot-2020-09-03-at-18.40.58-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-03-at-18.40.58-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-18.40.58-1.png 837w" sizes="(min-width: 720px) 720px" width="837" height="314" loading="lazy"></figure><p>É bastante comum precisar alterar a propriedade de um diretório e recursivamente de todos os arquivos contidos, além de todos os subdiretórios e arquivos contidos neles também.</p><p>Você pode fazer isso usando o sinalizador <code>-R</code> :</p><pre><code class="language-bash">chown -R &lt;proprietário&gt; &lt;arquivo&gt;</code></pre><p>Arquivos/diretórios não têm apenas um proprietário. Eles também têm um <strong>grupo</strong>. Através deste comando, você pode alterar isso simultaneamente enquanto altera o proprietário:</p><pre><code class="language-bash">chown &lt;proprietário&gt;:&lt;grupo&gt; &lt;nome_do_arquivo&gt;</code></pre><p>Exemplo:</p><pre><code class="language-bash">chown flavio:users test.txt</code></pre><p>Você também pode alterar o grupo de um arquivo usando o comando <code>chgrp</code>:</p><pre><code class="language-bash">chgrp &lt;grupo&gt; &lt;nome_do_arquivo&gt;</code></pre><h2 id="o-comando-chmod-no-linux"><strong>O comando <code>chmod</code> no Linux</strong></h2><p>Cada arquivo nos sistemas operacionais Linux/macOS (e sistemas UNIX em geral) possui 3 permissões: leitura, gravação e execução.</p><p>Vá para uma pasta e execute o comando <code>ls -al</code>.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-18.49.22-1.png" class="kg-image" alt="Screen-Shot-2020-09-03-at-18.49.22-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-03-at-18.49.22-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-18.49.22-1.png 914w" sizes="(min-width: 720px) 720px" width="914" height="539" loading="lazy"></figure><p>As strings estranhas que você vê em cada linha de arquivo, como <code>drwxr-xr-x</code>, definem as permissões do arquivo ou pasta.</p><p>Vamos dissecá-lo.</p><p>A primeira letra indica o tipo de arquivo:</p><ul><li><code>-</code> significa que é um arquivo normal</li><li><code>d</code> significa que é um diretório</li><li><code>l</code> significa que é um link</li></ul><p>Então você tem 3 conjuntos de valores:</p><ul><li>O primeiro conjunto representa as permissões do <strong>proprietário</strong> do arquivo</li><li>O segundo conjunto representa as permissões dos membros do <strong>grupo</strong> ao qual o arquivo está associado</li><li>O terceiro conjunto representa as permissões de <strong>todos os outros</strong></li></ul><p>Esses conjuntos são compostos por 3 valores. <code>rwx</code> significa que uma pessoa específica tem acesso de leitura (r, de <em>read </em>em inglês), gravação (w, de <em>write</em> em inglês) e execução (de <em>eXecute</em> em inglês). Qualquer coisa removida é trocada por <code>-</code>, que permite formar várias combinações de valores e permissões relativas: <code>rw-</code>, <code>r--</code>, <code>r-x</code>, e assim por diante.</p><p>Você pode alterar as permissões concedidas a um arquivo usando o comando <code>chmod</code>.</p><p><code>chmod</code> pode ser usado de 2 maneiras. O primeiro usa argumentos simbólicos, o segundo usa argumentos numéricos. Vamos começar primeiro com os símbolos, o que é mais intuitivo.</p><p>Você digita <code>chmod</code> seguido por um espaço e uma letra:</p><ul><li><code>a</code> significa tudo</li><li><code>u</code> significa usuário</li><li><code>g</code> significa grupo</li><li><code>o</code> significa outros</li></ul><p>Em seguida, você digita <code>+</code> ou <code>-</code> para adicionar uma permissão ou removê-la. Em seguida, você insere um ou mais símbolos de permissão (<code>r</code>, <code>w</code>, <code>x</code>).</p><p>Tudo seguido do nome do arquivo ou pasta.</p><p>Aqui estão alguns exemplos:</p><pre><code>chmod a+r nome_do_arquivo #todos podem ler
chmod a+rw nome_do_arquivo #todos podem ler e gravar
chmod o-rwx nome_do_arquivo #outros (que não sejam o proprietário, que não estejam no mesmo grupo do arquivo) não têm permissão de ler, gravar ou executar o arquivo</code></pre><p>‌ Você pode aplicar as mesmas permissões a várias personas adicionando várias letras antes do <code>+</code>/<code>-</code>:</p><pre><code>chmod og-r nome_do_arquivo #outros e grupo não podem mais ler</code></pre><p>‌Caso esteja editando uma pasta, você pode aplicar as permissões a todos os arquivos contidos nessa pasta usando o sinalizador <code>-r</code> (recursivo).</p><p>Argumentos numéricos são mais rápidos, mas acho difícil lembrá-los quando você não os usa no dia a dia. Você usa um algarismo que representa as permissões da persona. Este valor numérico pode ser no máximo 7 e é calculado da seguinte forma:</p><ul><li><code>1</code> se tiver permissão de execução</li><li><code>2</code> se tiver permissão de gravação</li><li><code>4</code> se tiver permissão de leitura</li></ul><p>Isso nos dá 4 combinações:</p><ul><li><code>0</code> Nenhuma permissão</li><li><code>1</code> pode executar</li><li><code>2</code> pode escrever</li><li><code>3</code> pode escrever, executar</li><li><code>4</code> pode ler</li><li><code>5</code> pode ler, executar</li><li><code>6</code> pode ler e escrever</li><li><code>7</code> pode ler, escrever e executar</li></ul><p>Nós os usamos em grupos de 3, para definir as permissões de todos os 3 grupos ao todo:</p><pre><code>chmod 777 nome_do_arquivo
chmod 755 nome_do_arquivo
chmod 644 nome_do_arquivo</code></pre><h2 id="o-comando-umask-no-linux"><strong>O comando <code>umask</code> no Linux</strong></h2><p>Ao criar um arquivo, você não precisa decidir as permissões antecipadamente. As permissões têm padrões.</p><p>Esses padrões podem ser controlados e modificados usando o comando <code>umask</code> .</p><p>Digitar <code>umask</code> sem argumentos mostrará o umask, atual, neste caso <code>0022</code>:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-04-at-09.04.19-1.png" class="kg-image" alt="Screen-Shot-2020-09-04-at-09.04.19-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-04-at-09.04.19-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-04-at-09.04.19-1.png 617w" width="617" height="264" loading="lazy"></figure><p>O que <code>0022</code> significa? Esse é um valor octal que representa as permissões.</p><p>Outro valor comum é <code>0002</code>.</p><p>Use <code>umask -S</code> para ver uma notação legível por humanos:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-04-at-09.08.18-1.png" class="kg-image" alt="Screen-Shot-2020-09-04-at-09.08.18-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-04-at-09.08.18-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-04-at-09.08.18-1.png 617w" width="617" height="264" loading="lazy"></figure><p>Neste caso, o usuário (<code>u</code>), proprietário do arquivo, possui permissões de leitura, escrita e execução nos arquivos.</p><p>Os demais usuários pertencentes ao mesmo grupo (<code>g</code>) possuem permissão de leitura e execução, igual a todos os demais usuários (<code>o</code>).</p><p>Na notação numérica, normalmente alteramos os últimos 3 dígitos.</p><p>Aqui está uma lista que dá um significado ao número:</p><ul><li><code>0</code> ler, escrever, executar</li><li><code>1</code> ler e escrever</li><li><code>2</code> ler e executar</li><li><code>3</code> somente leitura</li><li><code>4</code> escrever e executar</li><li><code>5</code> escrever apenas</li><li><code>6</code> executar apenas</li><li><code>7</code> nenhuma permissão</li></ul><p>Observe que esta notação numérica difere daquela que usamos em <code>chmod</code>.</p><p>Podemos definir um novo valor para a máscara definindo o valor em formato numérico:</p><pre><code class="language-bash">umask 002</code></pre><p>ou você pode alterar a permissão de uma função específica:</p><pre><code class="language-bash">umask g+r</code></pre><h2 id="o-comando-du-no-linux"><strong>O comando <code>du</code> no Linux</strong></h2><p>O comando <code>du</code> calculará o tamanho de um diretório como um todo:</p><pre><code class="language-bash">du</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-04-at-08.11.30-1.png" class="kg-image" alt="Screen-Shot-2020-09-04-at-08.11.30-1" width="540" height="264" loading="lazy"></figure><p>O número <code>32</code> aqui é um valor expresso em bytes.</p><p>Rodar <code>du *</code> calculará o tamanho de cada arquivo individualmente:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-04-at-08.12.35-1.png" class="kg-image" alt="Screen-Shot-2020-09-04-at-08.12.35-1" width="540" height="289" loading="lazy"></figure><p>Você pode definir <code>du</code> para exibir valores em MegaBytes, usando <code>du -m</code>, e GigaBytes, usando <code>du -g</code>.</p><p>A opção <code>-h</code> mostrará uma notação legível para tamanhos, adaptando-se ao tamanho:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-04-at-08.14.40-1.png" class="kg-image" alt="Screen-Shot-2020-09-04-at-08.14.40-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-04-at-08.14.40-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-04-at-08.14.40-1.png 760w" sizes="(min-width: 720px) 720px" width="760" height="389" loading="lazy"></figure><p>Adicionar a opção <code>-a</code> também imprimirá o tamanho de cada arquivo nos diretórios:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-04-at-08.20.12-1.png" class="kg-image" alt="Screen-Shot-2020-09-04-at-08.20.12-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-04-at-08.20.12-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-04-at-08.20.12-1.png 837w" sizes="(min-width: 720px) 720px" width="837" height="489" loading="lazy"></figure><p>Uma coisa útil é classificar os diretórios por tamanho:</p><pre><code>du -h &lt;diretório&gt; | sort -nr</code></pre><p>‌Em seguida, use <code>head</code> para obter apenas os 10 primeiros resultados:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-04-at-08.22.25-1.png" class="kg-image" alt="Screen-Shot-2020-09-04-at-08.22.25-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-04-at-08.22.25-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-04-at-08.22.25-1.png 815w" sizes="(min-width: 720px) 720px" width="815" height="464" loading="lazy"></figure><h2 id="o-comando-df-no-linux"><strong>O comando <code>df</code> no &nbsp;Linux</strong></h2><p>O comando <code>df</code> é usado para obter informações de uso do disco.</p><p>Em sua forma básica, ele imprimirá informações sobre os volumes montados:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-08-at-08.40.39-1.png" class="kg-image" alt="Screen-Shot-2020-09-08-at-08.40.39-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-08-at-08.40.39-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/06/Screen-Shot-2020-09-08-at-08.40.39-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-08-at-08.40.39-1.png 1288w" sizes="(min-width: 720px) 720px" width="1288" height="364" loading="lazy"></figure><p>Usar a opção <code>-h</code> &nbsp;(<code>df -h</code>) mostrará esses valores em um formato legível:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-08-at-08.40.50-1.png" class="kg-image" alt="Screen-Shot-2020-09-08-at-08.40.50-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-08-at-08.40.50-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/06/Screen-Shot-2020-09-08-at-08.40.50-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-08-at-08.40.50-1.png 1222w" sizes="(min-width: 720px) 720px" width="1222" height="364" loading="lazy"></figure><p>Você também pode especificar um nome de arquivo ou diretório para obter informações sobre o volume específico em que ele reside:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-08-at-08.41.27-1.png" class="kg-image" alt="Screen-Shot-2020-09-08-at-08.41.27-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-08-at-08.41.27-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/06/Screen-Shot-2020-09-08-at-08.41.27-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-08-at-08.41.27-1.png 1321w" sizes="(min-width: 720px) 720px" width="1321" height="289" loading="lazy"></figure><h2 id="o-comando-basename-no-linux"><strong>O comando <code>basename</code> no Linux</strong></h2><p>Suponha que você tenha um caminho para um arquivo, por exemplo <code>/Users/flavio/test.txt</code>.</p><p>Rodar</p><pre><code class="language-bash">basename /Users/flavio/test.txt</code></pre><p>retornará a string <code>test.txt</code>:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-10-at-08.27.52-1.png" class="kg-image" alt="Screen-Shot-2020-09-10-at-08.27.52-1" width="584" height="264" loading="lazy"></figure><p>Se você executar <code>basename</code> em uma string de caminho que aponta para um diretório, obterá o último segmento do caminho. Neste exemplo, <code>/Users/flavio</code> é um diretório:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-10-at-08.28.11-1.png" class="kg-image" alt="Screen-Shot-2020-09-10-at-08.28.11-1" width="584" height="264" loading="lazy"></figure><h2 id="o-comando-dirname-no-linux"><strong>O comando <code>dirname</code> no Linux</strong></h2><p>Suponha que você tenha um caminho para um arquivo, por exemplo <code>/Users/flavio/test.txt</code>.</p><p>Rodar</p><pre><code class="language-bash">dirname /Users/flavio/test.txt</code></pre><p>retornará a string <code>/Users/flavio</code>:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-10-at-08.31.08-1-1.png" class="kg-image" alt="Screen-Shot-2020-09-10-at-08.31.08-1-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-10-at-08.31.08-1-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-10-at-08.31.08-1-1.png 606w" width="606" height="264" loading="lazy"></figure><h2 id="o-comando-ps-no-linux"><strong>O comando <code>ps</code> no Linux</strong></h2><p>Seu computador está executando vários processos diferentes o tempo todo.</p><p>Você pode inspecionar todos eles usando o comando <code>ps</code>:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-02-at-12.25.08-1.png" class="kg-image" alt="Screen-Shot-2020-09-02-at-12.25.08-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-02-at-12.25.08-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-02-at-12.25.08-1.png 815w" sizes="(min-width: 720px) 720px" width="815" height="439" loading="lazy"></figure><p>Essa é a lista de processos iniciados pelo usuário em execução na sessão atual.</p><p>Aqui eu tenho algumas instâncias de <code>fish</code> shell, a maioria abertas pelo VS Code dentro do editor, e uma instância de Hugo executando a visualização de desenvolvimento de um site.</p><p>Esses são apenas os comandos atribuídos ao usuário atual. Para listar <strong>todos</strong> os processos precisamos passar algumas opções para os <code>ps</code>.</p><p>O mais comum que <strong>eu</strong> uso é o <code>ps ax</code>:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-02-at-12.26.00-1.png" class="kg-image" alt="Screen-Shot-2020-09-02-at-12.26.00-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-02-at-12.26.00-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/06/Screen-Shot-2020-09-02-at-12.26.00-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-02-at-12.26.00-1.png 1068w" sizes="(min-width: 720px) 720px" width="1068" height="739" loading="lazy"></figure><blockquote><em>O opção<em> <code>a</code> </em>também é usada para listar os processos de outros usuários, não apenas os seus.<em> <code>x</code> </em>mostra processos não vinculados a nenhum terminal (não iniciados pelos usuários através de um terminal).</em></blockquote><p>Como você pode ver, os comandos mais longos são cortados. Use o comando <code>ps axww</code> para continuar a listagem de comandos em uma nova linha em vez de cortá-la:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-02-at-12.30.22-1.png" class="kg-image" alt="Screen-Shot-2020-09-02-at-12.30.22-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-02-at-12.30.22-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/06/Screen-Shot-2020-09-02-at-12.30.22-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-02-at-12.30.22-1.png 1046w" sizes="(min-width: 720px) 720px" width="1046" height="664" loading="lazy"></figure><blockquote>Precisamos especificar<em><em> <code>w</code> 2 </em></em>vezes para aplicar esta configuração (não é um erro de digitação)<em><em>.</em></em></blockquote><p>Você pode procurar um processo específico combinando <code>grep</code> com um <em>pipe</em>, assim:</p><pre><code class="language-bash">ps axww | grep "Visual Studio Code"</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-02-at-12.33.45-1.png" class="kg-image" alt="Screen-Shot-2020-09-02-at-12.33.45-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-02-at-12.33.45-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/06/Screen-Shot-2020-09-02-at-12.33.45-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-02-at-12.33.45-1.png 1046w" sizes="(min-width: 720px) 720px" width="1046" height="664" loading="lazy"></figure><p>As colunas retornadas por <code>ps</code> representam algumas informações importantes.</p><p>A primeira informação é o <code>PID</code>, o ID do processo. Isso é fundamental quando você deseja fazer referência a esse processo em outro comando, por exemplo, para eliminá-lo.</p><p>Então temos <code>TT</code> que nos informa o ID do terminal usado.</p><p>Então <code>STAT</code> nos informa o estado do processo:</p><p><code>I</code> um processo que está ocioso (suspenso por mais de 20 segundos)‌‌<code>R</code> um processo executável‌‌<code>S</code> um processo que está dormindo por menos de 20 segundos‌‌<code>T</code> um processo parado‌‌<code>U</code> um processo em espera ininterrupto‌‌<code>Z</code> um processo morto (um zumbi)</p><p>Se você tiver mais de uma carta, a segunda representa mais informações, que podem ser muito técnicas.</p><p>É comum ter <code>+</code> que indica que o processo está em primeiro plano no seu terminal. <code>s</code> significa que o processo é um líder de sessão.</p><p><code>TIME</code> nos diz há quanto tempo o processo está em execução.</p><h2 id="o-comando-top-no-linux"><strong>O comando <code>top</code> no Linux</strong></h2><p>O comando <code>top</code> é usado para exibir informações dinâmicas em tempo real sobre os processos em execução no sistema.</p><p>É muito útil entender o que está acontecendo.</p><p>Seu uso é simples – basta digitar <code>top</code> e o terminal ficará totalmente imerso nesta nova visualização:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-11.39.53-1.png" class="kg-image" alt="Screen-Shot-2020-09-03-at-11.39.53-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-03-at-11.39.53-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/06/Screen-Shot-2020-09-03-at-11.39.53-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-11.39.53-1.png 1002w" sizes="(min-width: 720px) 720px" width="1002" height="739" loading="lazy"></figure><p>O processo é demorado. Para sair, você pode digitar a letra <code>q</code> ou <code>ctrl-C</code>.</p><p>Muitas informações nos são fornecidas: o número de processos, quantos estão em execução ou em suspensão, a carga do sistema, o uso da CPU e muito mais.</p><p>Abaixo, a lista de processos que ocupam mais memória e CPU é constantemente atualizada.</p><p>Por padrão, como você pode ver na coluna <code>%CPU</code> destacada, eles são classificados pela CPU usada</p><p>Você pode adicionar um sinalizador para classificar os processos pela memória utilizada:</p><pre><code class="language-bash">top -o mem</code></pre><h2 id="o-comando-kill-no-linux">O comando <code>kill</code> no Linux</h2><p>Os processos do Linux podem receber <strong>sinais</strong> e reagir a eles.</p><p>Essa é uma maneira de interagirmos com programas em execução.</p><p>O programa <code>kill</code> pode enviar uma variedade de sinais para um programa.</p><p>Não é usado apenas para encerrar um programa, como o nome sugere, mas essa é sua função principal.</p><p>Nós o usamos desta maneira:</p><pre><code class="language-bash">kill &lt;PID&gt;</code></pre><p>Por padrão, isso envia o sinal <code>TERM</code> para o ID do processo especificado.</p><p>Podemos usar sinalizadores para enviar outros sinais, incluindo:</p><pre><code class="language-bash">kill -HUP &lt;PID&gt;
kill -INT &lt;PID&gt;
kill -KILL &lt;PID&gt;
kill -TERM &lt;PID&gt;
kill -CONT &lt;PID&gt;
kill -STOP &lt;PID&gt;</code></pre><p>‌<code>HUP</code> significa <strong>desligar</strong>. É enviado automaticamente quando uma janela de terminal que iniciou um processo é fechada antes de encerrar o processo.</p><p><code>INT</code> significa <strong>interrupção</strong> e envia o mesmo sinal usado quando pressionamos <code>ctrl-C</code> no terminal, o que geralmente encerra o processo.</p><p><code>KILL</code> não é enviado para o processo, mas para o kernel do sistema operacional, que imediatamente interrompe e finaliza o processo.</p><p><code>TERM</code> significa <strong>terminar</strong>. O processo vai receber esse sinal e terminar sozinho. É o sinal padrão enviado por <code>kill</code>.</p><p><code>CONT</code> significa <strong>continuar</strong>. Pode ser usado para retomar um processo interrompido.</p><p><code>STOP</code> não é enviado para o processo, mas para o kernel do sistema operacional, que interrompe imediatamente (mas não encerra) o processo.</p><p>Você pode ver números usados, como <code>kill -1 &lt;PID&gt;</code>. Nesse caso,</p><p><code>1</code> corresponde ao <code>HUP</code>.‌‌<code>2</code> corresponde ao <code>INT</code>.‌‌<code>9</code> corresponde ao <code>KILL</code>.‌‌<code>15</code> corresponde ao <code>TERM</code>.‌‌<code>18</code> corresponde ao <code>CONT</code>.‌‌<code>15</code> corresponde ao <code>STOP</code>.</p><h2 id="o-comando-killall-no-linux"><strong>O comando <code>killall</code> no Linux</strong></h2><p>Semelhante ao comando <code>kill</code>, <code>killall</code> enviará o sinal para vários processos ao mesmo tempo, em vez de enviar um sinal para um ID de processo específico.</p><p>Essa é a sintaxe:‌</p><pre><code class="language-bash">killall &lt;nome&gt;</code></pre><p>Aqui, <code>nome</code> é o nome de um programa. Por exemplo, você pode ter várias instâncias do programa <code>top</code> em execução. <code>killall top</code> encerrará todas elas.</p><p>Você pode especificar o sinal, como acontece com <code>kill</code> (e verifique o tutorial <code>kill</code> para ler mais sobre os tipos específicos de sinais que podemos enviar), por exemplo:</p><pre><code class="language-bash">killall -HUP top</code></pre><h2 id="o-comando-jobs-no-linux"><strong>O comando <code>jobs</code> no Linux</strong></h2><p>Quando executamos um comando no Linux/macOS, podemos configurá-lo para execução em segundo plano usando o símbolo <code>&amp;</code> após o comando.</p><p>Por exemplo, podemos executar <code>top</code> em segundo plano:</p><pre><code class="language-bash">top &amp;</code></pre><p>Isso é muito útil para programas de longa duração.</p><p>Podemos voltar a esse programa usando o comando <code>fg</code>. Isso funciona bem se tivermos apenas um trabalho em segundo plano, caso contrário, precisaremos usar o número do trabalho: <code>fg 1</code>, <code>fg 2</code> e assim por diante.</p><p>Para obter o número do trabalho, usamos o comando <code>jobs</code>.</p><p>Digamos que executemos <code>top &amp;</code> e então <code>top -o mem &amp;</code>. Temos 2 instâncias principais em execução. <code>jobs</code> nos mostrará isso:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-11.49.42-1.png" class="kg-image" alt="Screen-Shot-2020-09-03-at-11.49.42-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-03-at-11.49.42-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-11.49.42-1.png 749w" sizes="(min-width: 720px) 720px" width="749" height="289" loading="lazy"></figure><p>Agora, podemos voltar para um daqueles que usam <code>fg &lt;jobid&gt;</code>. Para parar o programa novamente podemos clicar em <code>cmd-Z</code>.</p><p>Executar <code>jobs -l</code> também imprimirá o ID do processo de cada trabalho.</p><h2 id="o-comando-bg-no-linux"><strong>O comando <code>bg</code> no Linux</strong></h2><p>Quando um comando está em execução, você pode suspendê-lo usando <code>ctrl-Z</code>.</p><p>O comando interromperá imediatamente e você retornará ao terminal shell.</p><p>Você pode retomar a execução do comando em segundo plano, para que ele continue em execução, mas não o impeça de realizar outros trabalhos no terminal.</p><p>Neste exemplo, tenho 2 comandos parados:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-16.06.18-1.png" class="kg-image" alt="Screen-Shot-2020-09-03-at-16.06.18-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-03-at-16.06.18-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-16.06.18-1.png 793w" sizes="(min-width: 720px) 720px" width="793" height="264" loading="lazy"></figure><p>Posso executar o <code>bg 1</code> para retomar em segundo plano a execução do job nº 1.</p><p>Eu também poderia ter dito <code>bg</code> sem nenhuma opção, pois o padrão é escolher job nº 1 da lista.</p><h2 id="o-comando-fg-no-linux"><strong>O comando <code>fg</code> no Linux</strong></h2><p>Quando um comando está sendo executado em segundo plano, porque você o iniciou com <code>&amp;</code> no final (exemplo: <code>top &amp;</code>) ou porque você o colocou em segundo plano (com o comando <code>bg</code>), você pode colocá-lo em primeiro plano usando <code>fg</code>.</p><p>Executar</p><pre><code class="language-bash">fg</code></pre><p>retomará em primeiro plano o último trabalho que foi suspenso.</p><p>Você também pode especificar qual trabalho deseja retomar para primeiro plano passando o número do trabalho, que pode ser obtido usando o comando <code>jobs</code>.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-16.12.46-1.png" class="kg-image" alt="Screen-Shot-2020-09-03-at-16.12.46-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-03-at-16.12.46-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-16.12.46-1.png 793w" sizes="(min-width: 720px) 720px" width="793" height="264" loading="lazy"></figure><p>Executar <code>fg 2</code> retomará o job nº 2:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-16.12.54-1.png" class="kg-image" alt="Screen-Shot-2020-09-03-at-16.12.54-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-03-at-16.12.54-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-16.12.54-1.png 793w" sizes="(min-width: 720px) 720px" width="793" height="714" loading="lazy"></figure><h2 id="o-comando-type-no-linux"><strong>O comando <code>type</code> no Linux</strong></h2><p>Um comando pode ser um destes 4 tipos:</p><ul><li>um executável</li><li>um programa embutido no shell</li><li>uma função shell</li><li>um apelido</li></ul><p>O comando <code>type</code> pode ajudar a descobrir isso, caso queiramos saber ou estejamos apenas curiosos. Ele dirá como o comando será interpretado.</p><p>A saída dependerá do shell usado. Este é o Bash:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-16.32.50-1.png" class="kg-image" alt="Screen-Shot-2020-09-03-at-16.32.50-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-03-at-16.32.50-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-16.32.50-1.png 793w" sizes="(min-width: 720px) 720px" width="793" height="614" loading="lazy"></figure><p>Este é o Zsh:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-16.32.57-1.png" class="kg-image" alt="Screen-Shot-2020-09-03-at-16.32.57-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-03-at-16.32.57-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-16.32.57-1.png 969w" sizes="(min-width: 720px) 720px" width="969" height="714" loading="lazy"></figure><p>Este é o Fish:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-16.33.06-1.png" class="kg-image" alt="Screen-Shot-2020-09-03-at-16.33.06-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-03-at-16.33.06-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/06/Screen-Shot-2020-09-03-at-16.33.06-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-16.33.06-1.png 1002w" sizes="(min-width: 720px) 720px" width="1002" height="1114" loading="lazy"></figure><p>Uma das coisas mais interessantes aqui é que, para aliases, ele dirá para que serve o alias. Você pode ver o <code>ll</code> alias, no caso de Bash e Zsh, mas o Fish o fornece por padrão, então ele dirá que é uma função interna do shell.</p><h2 id="o-comando-which-no-linux"><strong>O comando <code>which</code> no Linux</strong></h2><p>Suponha que você tenha um comando que pode executar porque está no caminho do shell, mas deseja saber onde ele está localizado.</p><p>Você pode fazer isso usando <code>which</code>. O comando retornará o caminho para o comando especificado:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-17.22.47-1.png" class="kg-image" alt="Screen-Shot-2020-09-03-at-17.22.47-1" width="562" height="289" loading="lazy"></figure><p><code>which</code> funcionará apenas para executáveis armazenados em disco, não para aliases ou funções de shell integradas.</p><h2 id="o-comando-nohup-no-linux"><strong>O comando <code>nohup</code> no Linux</strong></h2><p>Às vezes, você precisa executar um processo de longa duração em uma máquina remota e depois desconectar.</p><p>Ou você, simplesmente, deseja evitar que o comando seja interrompido se houver algum problema de rede entre você e o servidor.</p><p>A maneira de executar um comando mesmo depois de efetuar logout ou fechar a sessão em um servidor é usar o comando <code>nohup</code>.</p><p>Use <code>nohup &lt;comando&gt;</code> para permitir que o processo continue funcionando mesmo depois de você sair.</p><h2 id="o-comando-xargs-no-linux"><strong>O comando <code>xargs</code> no Linux</strong></h2><p>O comando <code>xargs</code> é usado em um shell UNIX para converter a entrada padrão em argumentos para um comando.</p><p>Em outras palavras, através do uso de <code>xargs</code>, a saída de um comando é usada como entrada de outro comando.</p><p>Aqui está a sintaxe que você usará:</p><pre><code>comando1 | xargs comando2</code></pre><p>Usamos um <em>pipe </em>(<code>|</code>) para passar a saída para <code>xargs</code>. Isso cuidará da execução do comando <code>comando2</code>, usando a saída de <code>comando1</code> como seu(s) argumento(s).</p><p>Vamos fazer um exemplo simples. Você deseja remover alguns arquivos específicos de um diretório. Esses arquivos estão listados dentro de um arquivo de texto.</p><p>Temos 3 arquivos: <code>file1</code>, <code>file2</code>, <code>file3</code>.</p><p>No <code>todelete.txt</code> temos uma lista de arquivos que queremos excluir, neste exemplo <code>file1</code> e <code>file3</code>:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-08-at-07.45.28-1.png" class="kg-image" alt="Screen-Shot-2020-09-08-at-07.45.28-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-08-at-07.45.28-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-08-at-07.45.28-1.png 804w" sizes="(min-width: 720px) 720px" width="804" height="314" loading="lazy"></figure><p>Vamos canalizar a saída de <code>cat todelete.txt</code> para o comando <code>rm</code>, através de <code>xargs</code>, assim:</p><pre><code class="language-bash">cat todelete.txt | xargs rm</code></pre><p>Esse é o resultado, os arquivos que listamos agora foram excluídos:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-08-at-07.46.39-1.png" class="kg-image" alt="Screen-Shot-2020-09-08-at-07.46.39-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-08-at-07.46.39-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-08-at-07.46.39-1.png 804w" sizes="(min-width: 720px) 720px" width="804" height="389" loading="lazy"></figure><p>A forma como funciona é que <code>xargs</code> executará <code>rm</code> 2 vezes, uma para cada linha retornada por <code>cat</code>.</p><p>Este é o uso mais simples de <code>xargs</code>. Existem várias opções que podemos usar.</p><p>Um dos mais úteis, na minha opinião (especialmente quando se começa a aprender <code>xargs</code>), é <code>-p</code>. Usar esta opção fará com que o <code>xargs</code> imprima um prompt de confirmação com a ação que será executada:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-08-at-08.19.09-1.png" class="kg-image" alt="Screen-Shot-2020-09-08-at-08.19.09-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-08-at-08.19.09-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-08-at-08.19.09-1.png 606w" width="606" height="264" loading="lazy"></figure><p>A opção <code>-n</code> permite que você diga ao <code>xargs</code> para realizar uma iteração por vez, para que você possa confirmá-las individualmente com <code>-p</code>. Aqui dizemos ao <code>xargs</code> para realizar uma iteração por vez com <code>-n1</code>:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-08-at-08.32.58-1.png" class="kg-image" alt="Screen-Shot-2020-09-08-at-08.32.58-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-08-at-08.32.58-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-08-at-08.32.58-1.png 727w" sizes="(min-width: 720px) 720px" width="727" height="264" loading="lazy"></figure><p>A opção <code>-I</code> é outra amplamente utilizada. Ela permite que você coloque a saída em um espaço reservado e, então, você pode fazer várias coisas.</p><p>Uma delas é executar vários comandos:</p><pre><code>comando1 | xargs -I % /bin/bash -c 'comando2 %; comando3 %</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-08-at-08.35.37-1.png" class="kg-image" alt="Screen-Shot-2020-09-08-at-08.35.37-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-08-at-08.35.37-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-08-at-08.35.37-1.png 859w" sizes="(min-width: 720px) 720px" width="859" height="264" loading="lazy"></figure><blockquote>Você pode trocar o símbolo<em><em> <code>%</code> </em></em>que usei acima por qualquer outra coisa – é uma variável.</blockquote><h2 id="o-comando-do-editor-vim-no-linux"><strong>O comando do editor <code>vim</code> no Linux</strong></h2><p><code>vim</code> é um editor de arquivos <strong>muito</strong> popular, especialmente entre programadores. Ele é desenvolvido ativamente e atualizado com frequência, e há uma grande comunidade em torno dele. Há até uma <a href="https://vimconf.org/">conferência sobre o Vim</a>!</p><p><code>vi</code> em sistemas modernos é apenas um apelido para <code>vim</code>, que significa que <code>vim</code> melhorou.</p><p>Você inicia executando o <code>vi</code> na linha de comando.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screenshot-2019-02-10-at-11.44.36-1.png" class="kg-image" alt="Screenshot-2019-02-10-at-11.44.36-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screenshot-2019-02-10-at-11.44.36-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/06/Screenshot-2019-02-10-at-11.44.36-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screenshot-2019-02-10-at-11.44.36-1.png 1105w" sizes="(min-width: 720px) 720px" width="1105" height="690" loading="lazy"></figure><p>Você pode especificar um nome de arquivo no momento da chamada para editar esse arquivo específico:</p><pre><code class="language-bash">vi test.txt</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screenshot-2019-02-10-at-11.36.21-1.png" class="kg-image" alt="Screenshot-2019-02-10-at-11.36.21-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screenshot-2019-02-10-at-11.36.21-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/06/Screenshot-2019-02-10-at-11.36.21-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screenshot-2019-02-10-at-11.36.21-1.png 1112w" sizes="(min-width: 720px) 720px" width="1112" height="684" loading="lazy"></figure><p>Você deve saber que o Vim possui 2 modos principais:</p><ul><li>modo de comando (ou normal)</li><li>modo de inserção</li></ul><p>Ao iniciar o editor, você está no modo de comando. Você não pode inserir texto como espera de um editor baseado em GUI. Você tem que entrar no<strong> modo de inserção.</strong></p><p>Você pode fazer isso pressionando a tecla <code>i</code>. Depois de fazer isso, a palavra <code>-- INSERT --</code> aparece na parte inferior do editor:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screenshot-2019-02-10-at-11.47.39-1.png" class="kg-image" alt="Screenshot-2019-02-10-at-11.47.39-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screenshot-2019-02-10-at-11.47.39-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/06/Screenshot-2019-02-10-at-11.47.39-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screenshot-2019-02-10-at-11.47.39-1.png 1105w" sizes="(min-width: 720px) 720px" width="1105" height="690" loading="lazy"></figure><p>Agora, você pode começar a digitar e preencher a tela com o conteúdo do arquivo:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screenshot-2019-02-10-at-11.48.39-1.png" class="kg-image" alt="Screenshot-2019-02-10-at-11.48.39-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screenshot-2019-02-10-at-11.48.39-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/06/Screenshot-2019-02-10-at-11.48.39-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screenshot-2019-02-10-at-11.48.39-1.png 1105w" sizes="(min-width: 720px) 720px" width="1105" height="690" loading="lazy"></figure><p>Você pode mover-se pelo arquivo com as teclas de seta ou usando as teclas <code>h</code> - <code>j</code> - <code>k</code> - <code>l</code>. <code>h-l</code> para esquerda e direita, <code>j-k</code> para baixo e para cima.</p><p>Quando terminar de editar, você pode pressionar a tecla <code>esc</code> para sair do modo de inserção e voltar ao <strong>modo de comando.</strong></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screenshot-2019-02-10-at-11.48.44-1.png" class="kg-image" alt="Screenshot-2019-02-10-at-11.48.44-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screenshot-2019-02-10-at-11.48.44-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/06/Screenshot-2019-02-10-at-11.48.44-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screenshot-2019-02-10-at-11.48.44-1.png 1105w" sizes="(min-width: 720px) 720px" width="1105" height="690" loading="lazy"></figure><p>Neste ponto, você pode navegar no arquivo, mas não pode adicionar conteúdo a ele (e tome cuidado com as teclas que você pressiona, pois podem ser comandos).</p><p>Uma coisa que você pode querer fazer agora é <strong>salvar o arquivo</strong>. Você pode fazer isso pressionando: (dois pontos) e <code>w</code>.</p><p>Você pode <strong>salvar e sair</strong> pressionando <code>:</code>, <code>w</code> e <code>q</code>: <code>:wq</code></p><p>Você pode <strong>sair sem salvar</strong> pressionando <code>:</code>, <code>q</code> e <code>!</code>: <code>:q!</code></p><p>Você pode <strong>desfazer</strong> e editar acessando o modo de comando e pressionando <code>u</code>. Você pode <strong>refazer</strong> (cancelar um desfazer) pressionando <code>ctrl-r</code>.</p><p>Esses são os princípios básicos para trabalhar com o Vim. A partir daqui começa uma infinitude de informações na qual não podemos entrar nesta pequena introdução.</p><p>Mencionarei apenas os comandos que ajudarão você a começar a editar com o Vim:</p><ul><li>pressionar a tecla <code>x</code> exclui o caractere atualmente destacado</li><li>pressionar <code>A</code> vai para o final da linha atualmente selecionada</li><li>pressionar <code>0</code> para ir para o início da linha</li><li>ir para o primeiro caractere de uma palavra e pressionar <code>d</code> seguido de <code>w</code> para excluir essa palavra. Se você seguir com <code>e</code> em vez de <code>w</code>, o espaço em branco antes da próxima palavra será preservado</li><li>usar um número entre <code>d</code> e <code>w</code> para excluir mais de 1 palavra – por exemplo, usar <code>d3w</code> para excluir 3 palavras adiante</li><li>pressionar <code>d</code> seguido de <code>d</code> para excluir uma linha inteira. Pressionar <code>d</code> seguido de <code>$</code> para deletar toda a linha de onde está o cursor, até o final</li></ul><p>Para saber mais sobre o Vim, recomendo o <a href="https://vimhelp.org/vim_faq.txt.html">FAQ do Vim</a> (em inglês). Você também pode executar o comando <code>vimtutor</code>, que já deve estar instalado em seu sistema e o ajudará muito a iniciar a exploração do <code>vim</code>.</p><h2 id="o-comando-do-editor-emacs-no-linux"><strong>O comando do editor <code>emacs</code> no Linux</strong></h2><p><code>emacs</code> é um editor incrível e é historicamente considerado o editor de sistemas UNIX. Notoriamente, as guerras violentas entre <code>vi</code> e <code>emacs</code> e discussões acaloradas causaram muitas horas improdutivas para desenvolvedores em todo o mundo.</p><p><code>emacs</code> é muito poderoso. Algumas pessoas usam esse editor o dia todo como uma espécie de sistema operacional (<a href="https://news.ycombinator.com/item?id=19127258">https://news.ycombinator.com/item?id=19127258</a>). Falaremos apenas sobre o básico aqui.</p><p>Você pode abrir uma nova sessão do emacs simplesmente invocando <code>emacs</code>:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screenshot-2019-02-10-at-12.14.18-1.png" class="kg-image" alt="Screenshot-2019-02-10-at-12.14.18-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screenshot-2019-02-10-at-12.14.18-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/06/Screenshot-2019-02-10-at-12.14.18-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screenshot-2019-02-10-at-12.14.18-1.png 1105w" sizes="(min-width: 720px) 720px" width="1105" height="786" loading="lazy"></figure><blockquote>Usuários do macOS, parem um segundo agora. Se você estiver no Linux, não há problemas, mas o macOS não fornece aplicativos que usam GPLv3 e todos os comandos integrados do UNIX que foram atualizados para GPLv3 não foram atualizados.‌‌‌‌Embora haja um pequeno problema com os comandos que listei até agora, neste caso, usar uma versão do emacs de 2007 não é exatamente o mesmo que usar uma versão com 12 anos de melhorias e mudanças.‌‌‌‌Esse não é um problema com o Vim, que está atualizado. Para corrigir isso, execute <code>brew install emacs</code> e a execução do <code>emacs</code> usará a nova versão do Homebrew (certifique-se de ter o Homebrew instalado).</blockquote><p>Você também pode editar um arquivo existente chamando <code>emacs &lt;nome_do_arquivo&gt;</code>:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screenshot-2019-02-10-at-13.12.49-1.png" class="kg-image" alt="Screenshot-2019-02-10-at-13.12.49-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screenshot-2019-02-10-at-13.12.49-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/06/Screenshot-2019-02-10-at-13.12.49-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screenshot-2019-02-10-at-13.12.49-1.png 1105w" sizes="(min-width: 720px) 720px" width="1105" height="786" loading="lazy"></figure><p>Agora, você pode começar a editar. Quando terminar, pressione <code>ctrl-x</code> seguido de <code>ctrl-w</code>. Você confirma a pasta:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screenshot-2019-02-10-at-13.14.29-1.png" class="kg-image" alt="Screenshot-2019-02-10-at-13.14.29-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screenshot-2019-02-10-at-13.14.29-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/06/Screenshot-2019-02-10-at-13.14.29-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screenshot-2019-02-10-at-13.14.29-1.png 1105w" sizes="(min-width: 720px) 720px" width="1105" height="786" loading="lazy"></figure><p>O Emacs informa que o arquivo existe, perguntando se ele deve ser sobrescrito:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screenshot-2019-02-10-at-13.14.32-1.png" class="kg-image" alt="Screenshot-2019-02-10-at-13.14.32-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screenshot-2019-02-10-at-13.14.32-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/06/Screenshot-2019-02-10-at-13.14.32-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screenshot-2019-02-10-at-13.14.32-1.png 1105w" sizes="(min-width: 720px) 720px" width="1105" height="786" loading="lazy"></figure><p>Responda <code>y</code> e você receberá uma confirmação de sucesso:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screenshot-2019-02-10-at-13.14.35-1.png" class="kg-image" alt="Screenshot-2019-02-10-at-13.14.35-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screenshot-2019-02-10-at-13.14.35-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/06/Screenshot-2019-02-10-at-13.14.35-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screenshot-2019-02-10-at-13.14.35-1.png 1105w" sizes="(min-width: 720px) 720px" width="1105" height="786" loading="lazy"></figure><p>Você pode sair do Emacs pressionando <code>ctrl-x</code> seguido de <code>ctrl-c</code>.‌‌Como opção, use <code>ctrl-x</code> seguido de <code>c</code> (mantenha <code>ctrl</code> pressionado).</p><p>Há muito para saber sobre o Emacs, certamente mais do que sou capaz de escrever nesta pequena introdução. Eu encorajo você a abrir o Emacs e pressionar <code>ctrl-h</code> <code>r</code> para abrir o manual integrado e <code>ctrl-h</code> <code>t</code> para abrir o tutorial oficial.</p><h2 id="o-comando-do-editor-nano-no-linux"><strong>O comando do editor <code>nano</code> no Linux</strong></h2><p><code>nano</code> é um editor amigável para iniciantes.</p><p>Execute-o usando <code>nano &lt;nome_do_arquivo&gt;</code>.</p><p>Você pode digitar caracteres diretamente no arquivo sem se preocupar com os modos.</p><p>Você pode sair sem editar usando <code>ctrl-X</code>. Se você editou o buffer do arquivo, o editor solicitará sua confirmação e você poderá salvar as edições ou descartá-las.</p><p>A ajuda na parte inferior mostra os comandos do teclado que permitem trabalhar com o arquivo:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screenshot-2019-02-10-at-11.03.51-1.png" class="kg-image" alt="Screenshot-2019-02-10-at-11.03.51-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screenshot-2019-02-10-at-11.03.51-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/06/Screenshot-2019-02-10-at-11.03.51-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screenshot-2019-02-10-at-11.03.51-1.png 1203w" sizes="(min-width: 720px) 720px" width="1203" height="736" loading="lazy"></figure><p><code>pico</code> é mais ou menos igual, embora <code>nano</code> é a versão GNU do <code>pico</code> que em algum momento da história não era de código aberto. O <code>nano</code> clone foi feito para satisfazer os requisitos de licença do sistema operacional GNU.</p><h2 id="o-comando-whoami-no-linux"><strong>O comando <code>whoami</code> no Linux</strong></h2><p>Digite <code>whoami</code> para imprimir o nome do usuário atualmente conectado à sessão do terminal:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-18.08.05-1.png" class="kg-image" alt="Screen-Shot-2020-09-03-at-18.08.05-1" width="507" height="264" loading="lazy"></figure><blockquote>Observação: esse comando é diferente do comando<em><em> <code>who am i</code></em>, </em>que imprime mais informações</blockquote><h2 id="o-comando-who-no-linux"><strong>O comando <code>who</code> no Linux</strong></h2><p>O comando <code>who</code> exibe os usuários logados no sistema.</p><p>A menos que você esteja usando um servidor ao qual várias pessoas têm acesso, é provável que você seja o único usuário conectado, várias vezes:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-18.03.05-1.png" class="kg-image" alt="Screen-Shot-2020-09-03-at-18.03.05-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-03-at-18.03.05-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-18.03.05-1.png 705w" width="705" height="314" loading="lazy"></figure><p>Por que várias vezes? Porque cada shell aberto contará como um acesso.</p><p>Você pode ver o nome do terminal utilizado e a hora/dia em que a sessão foi iniciada.</p><p>Os sinalizadores <code>-aH</code> dirão <code>who</code> exibirá mais informações, incluindo o tempo ocioso e o ID do processo do terminal:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-18.05.29-1.png" class="kg-image" alt="Screen-Shot-2020-09-03-at-18.05.29-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-03-at-18.05.29-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-18.05.29-1.png 848w" sizes="(min-width: 720px) 720px" width="848" height="514" loading="lazy"></figure><p>O comando especial <code>who am i</code> listará os detalhes atuais da sessão do terminal:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-18.06.35-1.png" class="kg-image" alt="Screen-Shot-2020-09-03-at-18.06.35-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-03-at-18.06.35-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-18.06.35-1.png 617w" width="617" height="264" loading="lazy"></figure><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-18.07.30-1.png" class="kg-image" alt="Screen-Shot-2020-09-03-at-18.07.30-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-03-at-18.07.30-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-18.07.30-1.png 837w" sizes="(min-width: 720px) 720px" width="837" height="264" loading="lazy"></figure><h2 id="o-comando-su-no-linux"><strong>O comando <code>su</code> no Linux</strong></h2><p>Enquanto você estiver conectado ao shell do terminal com um usuário, pode ser necessário mudar para outro usuário.</p><p>Por exemplo, você está logado como root para realizar alguma manutenção, mas deseja mudar para uma conta de usuário.</p><p>Você pode fazer isso com o comando <code>su</code>:</p><pre><code>su &lt;nome_de_usuário&gt;</code></pre><p>Por exemplo: <code>su flavio</code>.</p><p>Se você estiver logado como usuário, executar <code>su</code> sem mais nada solicitará que você insira a senha do usuário <code>root</code>, pois esse é o comportamento padrão.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-18.18.09-1.png" class="kg-image" alt="Screen-Shot-2020-09-03-at-18.18.09-1" width="562" height="289" loading="lazy"></figure><p><code>su</code> iniciará um novo shell como outro usuário.</p><p>Quando terminar, digitar <code>exit</code> no shell fechará esse shell e retornará ao shell do usuário atual.</p><h2 id="o-comando-sudo-no-linux"><strong>O comando <code>sudo</code> no Linux</strong></h2><p><code>sudo</code> é comumente usado para executar um comando como root.</p><p>Você deve estar habilitado para usar o <code>sudo</code> e, quando estiver, poderá executar comandos como root digitando a senha do seu usuário (não a senha do usuário root).</p><p>As permissões são altamente configuráveis, o que é ótimo especialmente em um ambiente de servidor multiusuário. Alguns usuários podem ter acesso para executar comandos específicos por meio de <code>sudo</code>.</p><p>Por exemplo, você pode editar um arquivo de configuração do sistema:</p><pre><code class="language-bash">sudo nano /etc/hosts</code></pre><p>De outra forma, isso não seria salvo, pois você não tem a permissão para isso.</p><p>Você pode executar <code>sudo -i</code> para iniciar um shell como root:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-18.25.50-1.png" class="kg-image" alt="Screen-Shot-2020-09-03-at-18.25.50-1" width="584" height="289" loading="lazy"></figure><p>Você pode usar <code>sudo</code> para executar comandos como qualquer usuário. <code>root</code> é o padrão, mas use a opção <code>-u</code> para especificar outro usuário:</p><pre><code class="language-bash">sudo -u flavio ls /Users/flavio</code></pre><h2 id="o-comando-passwd-no-linux"><strong>O comando <code>passwd</code> no Linux</strong></h2><p>Os usuários do Linux têm uma senha atribuída. Você pode alterar a senha usando o comando <code>passwd</code>.</p><p>Existem duas situações aqui.</p><p>A primeira é quando você deseja alterar sua senha. Neste caso, você digita:</p><pre><code class="language-bash">passwd</code></pre><p>e um prompt interativo solicitará a senha antiga e, em seguida, solicitará a nova:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-04-at-07.32.05-1.png" class="kg-image" alt="Screen-Shot-2020-09-04-at-07.32.05-1" width="507" height="264" loading="lazy"></figure><p>Quando você é <code>root</code> (ou tem privilégios de superusuário), você pode definir o nome de usuário para o qual deseja alterar a senha:</p><pre><code>passwd &lt;usuário&gt; &lt;nova_senha&gt;</code></pre><p>Neste caso, você não precisa inserir a antiga.</p><h2 id="o-comando-ping-no-linux"><strong>O comando <code>ping</code> no Linux</strong></h2><p>O comando <code>ping</code> faz ping em um host de rede específico, na rede local ou na Internet.</p><p>Você o usa com a sintaxe <code>ping &lt;host&gt;</code>, onde <code>&lt;host&gt;</code> pode ser um nome de domínio ou um endereço IP.</p><p>Aqui está um exemplo de ping <code>google.com</code>:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-09-at-15.21.46-1.png" class="kg-image" alt="Screen-Shot-2020-09-09-at-15.21.46-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-09-at-15.21.46-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-09-at-15.21.46-1.png 914w" sizes="(min-width: 720px) 720px" width="914" height="464" loading="lazy"></figure><p>O comando envia uma solicitação ao servidor e o servidor retorna uma resposta.</p><p><code>ping</code> continua enviando a solicitação a cada segundo, por padrão. Ele continuará funcionando até você pará-lo com <code>ctrl-C</code>, a menos que você passe o número de vezes que deseja tentar com a opção <code>-c</code>: <code>ping -c 2 google.com</code>.</p><p>Assim que o <code>ping</code> for interrompido, ele imprimirá algumas estatísticas sobre os resultados: a porcentagem de pacotes perdidos e estatísticas sobre o desempenho da rede.</p><p>Como você pode ver, a tela imprime o endereço IP do host e o tempo que levou para obter a resposta.</p><p>Nem todos os servidores suportam ping, caso a solicitação expire:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-09-at-15.21.27-1.png" class="kg-image" alt="Screen-Shot-2020-09-09-at-15.21.27-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-09-at-15.21.27-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-09-at-15.21.27-1.png 914w" sizes="(min-width: 720px) 720px" width="914" height="414" loading="lazy"></figure><p>Às vezes isso, é feito propositalmente, para "ocultar" o servidor ou apenas para reduzir a carga. Os pacotes de ping também podem ser filtrados por firewalls.</p><p><code>ping</code> funciona usando o <strong>protocolo ICMP</strong> (Internet Control Message Protocol), um protocolo de camada de rede como TCP ou UDP.</p><p>A solicitação envia um pacote ao servidor com a mensagem <code>ECHO_REQUEST</code> e o servidor retorna uma mensagem <code>ECHO_REPLY</code>. Não vou entrar em detalhes, mas esse é o conceito básico.</p><p>Fazer ping em um host é útil para saber se o host está acessível (supondo que ele implemente o ping), assim como a distância que ele está em termos de quanto tempo leva para retornar para você.</p><p>Normalmente, quanto mais próximo o servidor estiver geograficamente, menos tempo levará para retornar para você. Leis físicas simples fazem com que uma distância maior introduza mais atraso nos cabos.</p><h2 id="o-comando-traceroute-no-linux"><strong>O comando <code>traceroute</code> no Linux</strong></h2><p>Ao tentar acessar um host na Internet, você passa pelo roteador doméstico. Então você chega à rede do seu ISP, que por sua vez passa por seu próprio roteador de rede upstream e assim por diante, até finalmente chegar ao host.</p><p>Você já quis saber quais etapas seus pacotes passam para fazer isso?</p><p>O comando <code>traceroute</code> é feito para isso.</p><p>Você chama</p><pre><code class="language-bash">traceroute &lt;host&gt;</code></pre><p>Ele vai reunir (lentamente) todas as informações enquanto o pacote viaja.</p><p>Neste exemplo, tentei acessar meu blog com <code>traceroute flaviocopes.com</code>:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-09-at-16.32.01-1.png" class="kg-image" alt="Screen-Shot-2020-09-09-at-16.32.01-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-09-at-16.32.01-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/06/Screen-Shot-2020-09-09-at-16.32.01-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-09-at-16.32.01-1.png 1123w" sizes="(min-width: 720px) 720px" width="1123" height="639" loading="lazy"></figure><p>Nem todo roteador percorrido nos retorna informações. Neste caso, <code>traceroute</code> imprime <code>* * *</code>. Caso contrário, podemos ver o nome do host, o endereço IP e alguns indicadores de desempenho.</p><p>Para cada roteador, podemos ver 3 amostras, o que significa que o traceroute tenta, por padrão, 3 vezes obter uma boa indicação do tempo necessário para alcançá-lo.</p><p>É por isso que leva tanto tempo para executar o <code>traceroute</code> em comparação com simplesmente fazer um <code>ping</code> naquele host.</p><p>Você pode personalizar esse número com a opção <code>-q</code>:</p><pre><code class="language-bash">traceroute -q 1 flaviocopes.com</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-09-at-16.36.07-1.png" class="kg-image" alt="Screen-Shot-2020-09-09-at-16.36.07-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-09-at-16.36.07-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/06/Screen-Shot-2020-09-09-at-16.36.07-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-09-at-16.36.07-1.png 1068w" sizes="(min-width: 720px) 720px" width="1068" height="564" loading="lazy"></figure><h2 id="o-comando-clear-no-linux"><strong>O comando <code>clear</code> no Linux</strong></h2><p>Digite <code>clear</code> para limpar todos os comandos anteriores que foram executados no terminal atual.</p><p>A tela será limpa e você verá apenas o prompt na parte superior:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-18.10.32-1.png" class="kg-image" alt="Screen-Shot-2020-09-03-at-18.10.32-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-03-at-18.10.32-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-03-at-18.10.32-1.png 738w" sizes="(min-width: 720px) 720px" width="738" height="389" loading="lazy"></figure><blockquote>Observação: este comando possui um atalho útil: <em><em><code>ctrl-L</code></em></em></blockquote><p>Depois de fazer isso, você perderá o acesso à rolagem para ver a saída dos comandos inseridos anteriormente.</p><p>Portanto, você pode querer usar <code>clear -x</code> que ainda limpa a tela, mas permite voltar para ver o trabalho anterior rolando para cima.</p><h2 id="o-comando-history-no-linux"><strong>O comando <code>history</code> no Linux</strong></h2><p>Cada vez que você executa um comando, ele é memorizado no histórico.</p><p>Você pode exibir todo o histórico usando:</p><pre><code class="language-bash">history</code></pre><p>Isso mostra a história com números:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-04-at-08.03.10-1.png" class="kg-image" alt="Screen-Shot-2020-09-04-at-08.03.10-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-04-at-08.03.10-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-04-at-08.03.10-1.png 903w" sizes="(min-width: 720px) 720px" width="903" height="539" loading="lazy"></figure><p>Você pode usar a sintaxe <code>!&lt;comando número&gt;</code> para repetir um comando armazenado no histórico. No exemplo acima, digitar <code>!121</code> repetirá <code>ls -al | wc -l</code>.</p><p>Normalmente, os últimos 500 comandos são armazenados no histórico.</p><p>Você pode combinar isso com <code>grep</code> para encontrar um comando que você executou</p><pre><code class="language-bash">history | grep docker</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-04-at-08.04.50-1.png" class="kg-image" alt="Screen-Shot-2020-09-04-at-08.04.50-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-04-at-08.04.50-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-04-at-08.04.50-1.png 903w" sizes="(min-width: 720px) 720px" width="903" height="339" loading="lazy"></figure><p>Para limpar o histórico, execute <code>history -c</code>.</p><h2 id="o-comando-export-no-linux"><strong>O comando <code>export</code> no Linux</strong></h2><p>O comando <code>export</code> é usado para exportar variáveis para processos filhos.</p><p>O que isso significa?</p><p>Suponha que você tenha uma variável TEST definida assim:</p><pre><code class="language-bash">TEST="test"</code></pre><p>Você pode imprimir seu valor usando <code>echo $TEST</code>:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-09-at-17.32.49-1.png" class="kg-image" alt="Screen-Shot-2020-09-09-at-17.32.49-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-09-at-17.32.49-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-09-at-17.32.49-1.png 793w" sizes="(min-width: 720px) 720px" width="793" height="264" loading="lazy"></figure><p>No entanto, você pode tentar definir um script Bash em um arquivo <code>script.sh</code> com o comando acima:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-09-at-17.35.23-1.png" class="kg-image" alt="Screen-Shot-2020-09-09-at-17.35.23-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-09-at-17.35.23-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-09-at-17.35.23-1.png 793w" sizes="(min-width: 720px) 720px" width="793" height="439" loading="lazy"></figure><p>Ao definir <code>chmod u+x script.sh</code> e executar este script com <code>./script.sh</code>, a linha <code>echo $TEST</code> não imprimirá nada!</p><p>Isso ocorre porque, no Bash, a variável <code>TEST</code> foi definida localmente no shell. Ao executar um script de shell ou outro comando, um subshell é iniciado para executá-lo, que não contém as variáveis locais do shell atuais.</p><p>Para disponibilizar a variável ali precisamos definir <code>TEST</code> não assim:</p><pre><code class="language-bash">TEST="test"</code></pre><p>Defina-o assim:</p><pre><code class="language-bash">export TEST="test"</code></pre><p>Tente isso e execute <code>./script.sh</code>. Agora, ele deve imprimir "test":</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-09-at-17.37.56-1.png" class="kg-image" alt="Screen-Shot-2020-09-09-at-17.37.56-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-09-at-17.37.56-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-09-at-17.37.56-1.png 793w" sizes="(min-width: 720px) 720px" width="793" height="289" loading="lazy"></figure><p>Às vezes, você precisa acrescentar algo a uma variável. Geralmente, isso é feito com a variável <code>PATH</code>. Você usa esta sintaxe:</p><pre><code class="language-bash">export PATH=$PATH:/new/path</code></pre><p>É comum usar <code>export</code> quando você cria variáveis dessa maneira. Você, contudo, também pode usá-lo ao criar variáveis nos arquivos de configuração <code>.bash_profile</code> ou <code>.bashrc</code> com Bash, ou em <code>.zshenv</code> com Zsh.</p><p>Para remover uma variável, use a opção <code>-n</code>:</p><pre><code class="language-bash">export -n TEST</code></pre><p>Chamar <code>export</code> sem qualquer opção listará todas as variáveis exportadas.</p><h2 id="o-comando-crontab-no-linux"><strong>O comando <code>crontab</code> no Linux</strong></h2><p><em>Cron jobs</em> são jobs agendados para execução em intervalos específicos. Você pode fazer com que um comando execute algo a cada hora, todos os dias, a cada 2 semanas ou nos finais de semana.</p><p>Eles são muito poderosos, principalmente quando usados em servidores para realizar manutenções e automações.</p><p>O comando <code>crontab</code> é o ponto de entrada para trabalhar com tarefas cron.</p><p>A primeira coisa que você pode fazer é explorar quais <em>cron jobs</em> são definidos por você:</p><pre><code class="language-bash">crontab -l</code></pre><p>Você pode não ter nenhum, como eu:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-09-at-17.54.31-1.png" class="kg-image" alt="Screen-Shot-2020-09-09-at-17.54.31-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-09-at-17.54.31-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-09-at-17.54.31-1.png 804w" sizes="(min-width: 720px) 720px" width="804" height="314" loading="lazy"></figure><p>Execute</p><pre><code class="language-bash">crontab -e</code></pre><p>para editar os cron jobs e adicionar novos.</p><p>Por padrão, isso abre com o editor padrão, que geralmente é o <code>vim</code>. Eu gosto mais do <code>nano</code>. Você pode usar esta linha para usar um editor diferente:</p><pre><code class="language-bash">EDITOR=nano crontab -e</code></pre><p>Agora, você pode adicionar uma linha para cada cron job.</p><p>A sintaxe para definir cron jobs é meio assustadora. É por isso que costumo usar um site para me ajudar a gerá-los sem erros: <a href="https://crontab-generator.org/">https://crontab-generator.org/</a></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-09-at-18.03.57-1.png" class="kg-image" alt="Screen-Shot-2020-09-09-at-18.03.57-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-09-at-18.03.57-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2024/06/Screen-Shot-2020-09-09-at-18.03.57-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-09-at-18.03.57-1.png 1233w" sizes="(min-width: 720px) 720px" width="1233" height="1364" loading="lazy"></figure><p>Você escolhe um intervalo de tempo para o cron job e digita o comando a ser executado.</p><p>Optei por executar um script localizado em <code>/Users/flavio/test.sh</code> a cada 12 horas. Esta é a linha crontab que preciso executar:</p><pre><code class="language-txt">* */12 * * * /Users/flavio/test.sh &gt;/dev/null 2&gt;&amp;1</code></pre><p>Eu executo <code>crontab -e</code>:</p><pre><code class="language-bash">EDITOR=nano crontab -e</code></pre><p>e adiciono essa linha. Então, pressiono <code>ctrl-X</code> e pressiono <code>y</code> para salvar.</p><p>Se tudo correr bem, o cron job está configurado:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-09-at-18.06.19-1.png" class="kg-image" alt="Screen-Shot-2020-09-09-at-18.06.19-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-09-at-18.06.19-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-09-at-18.06.19-1.png 804w" sizes="(min-width: 720px) 720px" width="804" height="264" loading="lazy"></figure><p>Feito isso, você pode ver a lista de cron jobs ativos executando:</p><pre><code class="language-bash">crontab -l</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-09-at-18.07.00-1.png" class="kg-image" alt="Screen-Shot-2020-09-09-at-18.07.00-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-09-at-18.07.00-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-09-at-18.07.00-1.png 793w" sizes="(min-width: 720px) 720px" width="793" height="339" loading="lazy"></figure><p>Você pode remover um cron job executando <code>crontab -e</code> novamente, removendo a linha e saindo do editor:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-09-at-18.07.40-1.png" class="kg-image" alt="Screen-Shot-2020-09-09-at-18.07.40-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-09-at-18.07.40-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-09-at-18.07.40-1.png 793w" sizes="(min-width: 720px) 720px" width="793" height="339" loading="lazy"></figure><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-09-at-18.07.49-1.png" class="kg-image" alt="Screen-Shot-2020-09-09-at-18.07.49-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-09-at-18.07.49-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-09-at-18.07.49-1.png 793w" sizes="(min-width: 720px) 720px" width="793" height="339" loading="lazy"></figure><h2 id="o-comando-uname-no-linux"><strong>O comando <code>uname</code> no Linux</strong></h2><p>Chamar <code>uname</code> sem nenhuma opção retornará o codinome do sistema operacional:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-07.37.41-1.png" class="kg-image" alt="Screen-Shot-2020-09-07-at-07.37.41-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-07-at-07.37.41-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-07.37.41-1.png 606w" width="606" height="339" loading="lazy"></figure><p>A opção <code>m</code> mostra o nome do hardware (x86_64 neste exemplo) e a opção <code>p</code> imprime o nome da arquitetura do processador (<code>i386</code> neste exemplo):</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-07.37.51-1.png" class="kg-image" alt="Screen-Shot-2020-09-07-at-07.37.51-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-07-at-07.37.51-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-07.37.51-1.png 606w" width="606" height="339" loading="lazy"></figure><p>A opção <code>s</code> imprime o nome do sistema operacional. <code>r</code> imprime o lançamento e <code>v</code> imprime a versão:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-07.37.56-1.png" class="kg-image" alt="Screen-Shot-2020-09-07-at-07.37.56-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-07-at-07.37.56-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-07.37.56-1.png 606w" width="606" height="339" loading="lazy"></figure><p>A opção <code>n</code> imprime o nome da rede do nó:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-07.38.01-1.png" class="kg-image" alt="Screen-Shot-2020-09-07-at-07.38.01-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-07-at-07.38.01-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-07.38.01-1.png 606w" width="606" height="339" loading="lazy"></figure><p>A opção <code>a</code> imprime todas as informações disponíveis:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-07.38.06-1.png" class="kg-image" alt="Screen-Shot-2020-09-07-at-07.38.06-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-07-at-07.38.06-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-07-at-07.38.06-1.png 606w" width="606" height="339" loading="lazy"></figure><p>No macOS, você também pode usar o comando <code>sw_vers</code> para imprimir mais informações sobre o sistema operacional macOS. Observe que isso difere da versão Darwin (o Kernel), que acima é <code>19.6.0</code>.</p><p>Darwin é o nome do kernel do macOS. O kernel é o "núcleo" do sistema operacional, enquanto o sistema operacional como um todo é chamado de macOS. No Linux, Linux é o kernel, e GNU/Linux seria o nome do sistema operacional (embora todos nos refiramos a ele como "Linux").</p><h2 id="o-comando-env-no-linux"><strong>O comando <code>env</code> no Linux</strong></h2><p>O comando <code>env</code> pode ser usado para passar variáveis de ambiente sem configurá-las no ambiente externo (o shell atual).</p><p>Suponha que você queira executar uma aplicação do Node.js e definir a variável <code>USER</code> para ele.</p><p>Você pode executar</p><pre><code class="language-bash">env USER=flavio node app.js</code></pre><p>e a variável de ambiente <code>USER</code> estará acessível na aplicação do Node.js por meio da interface Node <code>process.env</code>.</p><p>Você também pode executar o comando limpando todas as variáveis de ambiente já definidas, usando a opção <code>-i</code>:</p><pre><code class="language-bash">env -i node app.js</code></pre><p>Nesse caso, você receberá um erro dizendo <code>env: node: No such file or directory</code> porque o comando <code>node</code> não está acessível, pois a variável <code>PATH</code> usada pelo shell para procurar comandos nos caminhos comuns não está definida.</p><p>Então, você precisa passar o caminho completo para o programa <code>node</code>:</p><pre><code class="language-bash">env -i /usr/local/bin/node app.js</code></pre><p>Experimente com um arquivo <code>app.js</code> simples com este conteúdo:</p><pre><code class="language-js">console.log(process.env.NAME)
console.log(process.env.PATH)</code></pre><p>Você verá a saída como</p><pre><code>undefined
undefined</code></pre><p>Você pode passar uma variável env:</p><pre><code class="language-bash">env -i NAME=flavio node app.js</code></pre><p>e a saída será</p><pre><code>flavio
undefined</code></pre><p>A remoção da opção<code>-i</code> tornará o <code>PATH</code> disponível novamente dentro do programa:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-10-at-16.55.17-1.png" class="kg-image" alt="Screen-Shot-2020-09-10-at-16.55.17-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-10-at-16.55.17-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-10-at-16.55.17-1.png 925w" sizes="(min-width: 720px) 720px" width="925" height="264" loading="lazy"></figure><p>O comando <code>env</code> também pode ser usado para imprimir todas as variáveis de ambiente. Se executado sem opções:</p><pre><code class="language-bash">env</code></pre><p>Ele retornará uma lista das variáveis de ambiente definidas, por exemplo:</p><pre><code class="language-txt">HOME=/Users/flavio
LOGNAME=flavio
PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin
PWD=/Users/flavio
SHELL=/usr/local/bin/fish</code></pre><p>Você também pode tornar uma variável inacessível dentro do programa que você executa, usando a opção <code>-u</code>. Por exemplo, este código remove a variável <code>HOME</code> do ambiente de comando:</p><pre><code class="language-bash">env -u HOME node app.js</code></pre><h2 id="o-comando-printenv-no-linux"><strong>O comando <code>printenv</code> no Linux</strong></h2><p>Aqui está um guia rápido para o comando <code>printenv</code>, usado para imprimir os valores das variáveis de ambiente</p><p>Em qualquer shell, há um bom número de variáveis de ambiente, definidas pelo sistema ou por seus próprios scripts e configurações de shell.</p><p>Você pode imprimir todos eles no terminal usando o comando <code>printenv</code>. A saída será algo assim:</p><pre><code class="language-txt">HOME=/Users/flavio
LOGNAME=flavio
PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin
PWD=/Users/flavio
SHELL=/usr/local/bin/fish</code></pre><p>com mais algumas linhas, geralmente.</p><p>Você pode anexar um nome de variável como parâmetro, para mostrar apenas o valor dessa variável:</p><pre><code class="language-bash">printenv PATH</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-10-at-16.31.20-1.png" class="kg-image" alt="Screen-Shot-2020-09-10-at-16.31.20-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2024/06/Screen-Shot-2020-09-10-at-16.31.20-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2024/06/Screen-Shot-2020-09-10-at-16.31.20-1.png 628w" width="628" height="264" loading="lazy"></figure><h2 id="conclus-o"><strong>Conclusão</strong></h2><p>Muito obrigado por ler este manual.</p><p>Espero que ele inspire você a aprender mais sobre o Linux e seus recursos. É um conhecimento perene que não ficará desatualizado tão cedo.</p><p>Lembre-se de que você pode <a href="https://flaviocopes.com/page/linux-commands-handbook/">fazer download deste manual em PDF/ePUB/Mobi </a> se você quiser!</p><p>O autor publica <strong>tutoriais de programação</strong> diariamente em seu site, <a href="https://flaviocopes.com/">flaviocopes.com</a>, se você quiser conferir mais conteúdos excelentes como este.</p><p>Você pode entrar em contato com o autor através do <a href="https://twitter.com/flaviocopes">Twitter</a>.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Tar no Linux – exemplos de tar GZ, arquivo tar, diretório tar e do comando tar para compressão ]]>
                </title>
                <description>
                    <![CDATA[ Quer combinar alguns arquivos e diretórios em um único arquivo? O comando tar do Linux é o que você procurava! O comando tar é usado para comprimir (ou compactar) um grupo de arquivos em um "grande arquivo". O comando também é usado para extrair, manter ou modificar grandes arquivos tar. ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/tar-no-linux-exemplos-de-tar-gz-arquivo-tar-diretorio-tar-e-do-comando-tar-para-compressao/</link>
                <guid isPermaLink="false">6565262b13a65603e650204d</guid>
                
                    <category>
                        <![CDATA[ Linux ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Daniel Rosa ]]>
                </dc:creator>
                <pubDate>Mon, 27 Nov 2023 23:43:01 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2023/11/tar-article.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/tar-in-linux-example-tar-gz-tar-file-and-tar-directory-and-tar-compress-commands/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Tar in Linux – Tar GZ, Tar File, Tar Directory, and Tar Compress Command Examples</a>
      </p><p>Quer combinar alguns arquivos e diretórios em um único arquivo? O comando <code>tar</code> do Linux é o que você procurava!</p><p>O comando <code>tar</code> é usado para comprimir (ou compactar) um grupo de arquivos em um "grande arquivo". O comando também é usado para extrair, manter ou modificar grandes arquivos tar.</p><p>Arquivos comprimidos do tar combinam diversos arquivos e/ou diretórios em um único local. Os arquivos comprimidos tar não são necessariamente reduzidos em tamanho, mas podem ser. As permissões são mantidas e o comando dá suporte a vários formatos de compressão.</p><p>Aprenda a usar o comando <code>tar</code> com neste artigo.</p><h2 id="sintaxe"><strong>Sintaxe</strong></h2><p><code>tar [opções] [nome_do_arquivo_compactado] [arquivo ou diretório a ser compactado em arquivo]</code></p><p><strong><strong>Options:</strong></strong><br><strong><strong>-c :</strong></strong> cria o arquivo<br><strong><strong>-x :</strong></strong> extrai o arquivo<br><strong><strong>-f :</strong></strong> cria o arquivo com o nome de arquivo sugerido with given filename<br><strong><strong>-t :</strong></strong> exibe ou lista arquivos em um arquivo compactado<br><strong><strong>-u :</strong></strong> arquiva e adiciona a um arquivo compactado existente<br><strong><strong>-v :</strong></strong> exibe informações extensas<br><strong><strong>-A :</strong></strong> concatena os arquivos compactados<br><strong><strong>-z :</strong></strong> comprime o arquivo tar usando gzip<br><strong><strong>-j :</strong></strong> comprime o arquivo tar usando bzip2<br><strong><strong>-W :</strong></strong> verifica um arquivo compactado<br><strong><strong>-r :</strong></strong> atualiza ou adiciona um arquivo ou diretório em um arquivo .tar existente</p><h2 id="exemplos-de-uso"><strong>Exemplos de uso</strong></h2><p><strong><strong>Extra</strong>ir um arquivo<strong>:</strong></strong><br><code>tar xfv arquivo.tar</code><br>(opções: x = extrair, f = arquivo, v = com informações extensas)</p><p><strong><strong>Cr</strong>iar um arquivo com arquivos ou pastas<strong>:</strong></strong><br><code>tar cfv arquivo.tar arquivo1 arquivo2 arquivo3</code><br>(opções: c = criar)</p><p><strong><strong>Cr</strong>iar arquivos comprimidos (compactados)<strong>:</strong></strong><br><code>tar cfzv arquivo.tar arquivo1 arquivo2 arquivo3</code><br>(opções: z = comprimir com gzip)</p><p><strong>Mostrar todos os arquivos de um arquivo compactado<strong>:</strong></strong><br><code>tar tvf arquivo.tar</code></p><p><strong><strong>Cr</strong>iar um arquivo não comprimido de todos os arquivo <strong>.txt </strong>no diretório atual<strong>:</strong></strong><br><code>tar cfv arquivo.tar *.txt</code></p><p><strong><strong>Extra</strong>ir arquivos do arquivo compactado arquivo<strong>.tar.gz:</strong></strong><br><code>tar xvzf arquivo.tar.gz</code></p><p><strong><strong>Cr</strong>iar um arquivo compactado usando o<strong> bzip2:</strong></strong><br><code>tar cvfj arquivo.tar.tbz exemplo.cpp</code><br>(opções: j = comprimir com bzip2, tamanho de arquivo menor, mas que leva mais tempo do que <code>-z</code>)</p><p><strong>Atualizar o arquivo <strong>tar </strong>existente adicionando<strong> </strong>o arquivo lista_de_tarefas.<strong>txt </strong>ao arquivo compactado<strong>:</strong></strong><br><code>tar rvf arquivo.tar lista_de_tarefas.txt</code><br>(opções: r = adiciona o arquivo)</p><p><strong><strong>List</strong>ar o conteúdo do arquivo<strong> tar</strong>:</strong><br><code>tar tf arquivo.tar</code><br>(opções: t = exibir, f = arquivo)</p><p><strong><strong>Cr</strong>iar um arquivo comprimido a partir do diretório atual, mas excluindo determinados diretórios<strong>:</strong></strong><br><code>tar --exclude='./pasta' --exclude='./upload/pasta2' cfzv arquivo.tar .</code>("pasta" e "pasta2" são excluídos)</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ O comando Cat no Linux – como criar um arquivo de texto com Cat ou Touch ]]>
                </title>
                <description>
                    <![CDATA[ O comando cat é bastante popular e versátil nos ecossistemas Unix e Linux. Existem quatro usos comuns do comando cat. Ele pode exibir um arquivo, concatenar (combinar) diversos arquivos, fazer o echo de texto em tela e criar um arquivo. Exibição de um arquivo O uso mais comum do comando ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/o-comando-cat-no-linux-como-criar-um-arquivo-de-texto-com-cat-ou-touch/</link>
                <guid isPermaLink="false">6541047e41517403e4ea540f</guid>
                
                    <category>
                        <![CDATA[ Linux ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Daniel Rosa ]]>
                </dc:creator>
                <pubDate>Tue, 31 Oct 2023 14:15:03 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2023/10/5f9c9a5d740569d1a4ca2531.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/the-cat-command-in-linux-how-to-create-a-text-file-with-cat-or-touch/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">The Cat Command in Linux – How to Create a Text File with Cat or Touch</a>
      </p><p>O comando <code>cat</code> é bastante popular e versátil nos ecossistemas Unix e Linux. Existem quatro usos comuns do comando <code>cat</code>. Ele pode exibir um arquivo, concatenar (combinar) diversos arquivos, fazer o <code>echo</code> de texto em tela e criar um arquivo.</p><h2 id="exibi-o-de-um-arquivo"><strong>Exibição de um arquivo</strong></h2><p>O uso mais comum do comando <code>cat</code> é o de exibir o conteúdo de um arquivo. Abaixo vemos um exemplo que você pode experimentar.</p><pre><code class="language-sh">echo "Dance, Dance" &gt; cat_create #cria um arquivo
cat cat_create</code></pre><p>Nesse exemplo simples, usamos uma combinação de <code>echo</code> e um redirecionador para criar um arquivo contendo "Dance, Dance". Em seguida, usamos o comando <code>cat</code> para exibir o conteúdo do arquivo <code>cat_create</code>.</p><p>O resultado é este:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/10/image-11.png" class="kg-image" alt="image-11" width="585" height="65" loading="lazy"><figcaption>O resultado dos comandos do exemplo</figcaption></figure><h2 id="-con-cat-ena-o-"><strong>(Con)cat(enação)</strong></h2><p>O exemplo anterior é, de fato, um caso específico da função principal do comando <code>cat</code>, que é concatenar arquivos para exibição. &nbsp;Se usarmos o comado do mesmo modo, mas dando a ele dois ou mais arquivos, ele retorna o resultado da concatenação dos arquivos.</p><p>Se executarmos, por exemplo, o seguinte comando:</p><pre><code class="language-sh">echo "This is how we do it" &gt; test1 #Cria o primeiro arquivo
echo "*This is how we do it*" &gt; test2 #Cria o segundo arquivo
cat test1 test2
</code></pre><p>O resultado é o conteúdo do primeiro arquivo, <code>test1</code>, seguido do conteúdo do segundo arquivo, <code>test2</code>. Você pode dar ao comando <code>cat</code> diversos arquivos. Ele concatenará (combinará) todos eles. Perceba, no entanto, que o comando <code>cat</code> vai inserir automaticamente uma quebra de linha entre os resultados.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/10/image-12.png" class="kg-image" alt="image-12" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/10/image-12.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/10/image-12.png 654w" width="654" height="124" loading="lazy"><figcaption>O resultado dos dois arquivos concatenados</figcaption></figure><p><code>cat</code> também fornece alguns <em>switches</em> para realizar ações como exibir caracteres não imprimíveis (-v) ou numerar as linhas (-n). Um detalhamento completo pode ser encontrado nas páginas do <a href="https://man7.org/linux/man-pages/man1/cat.1.html">man</a> (em inglês).</p><h2 id="uso-de-echo"><strong>Uso de <em>echo</em></strong></h2><p>Este é um uso menos comum de <code>cat</code>, mas é a base para a próxima seção. Se você executar o comando <code>cat</code>, simplesmente, ele será executado em modo interativo, fazendo <code>echo</code> (repetindo em tela) tudo o que você digitar até que você saia do comando.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/10/image-13.png" class="kg-image" alt="image-13" width="188" height="245" loading="lazy"><figcaption>Usando cat em modo interativo</figcaption></figure><p>Nesse exemplo, digitei uma única palavra por linha. Cada vez que eu pressionava Enter, a linha era repetida logo abaixo.</p><p>Também é possível fazer o <code>pipe</code> de texto com o <code>cat</code>. Nesse caso, o texto é reproduzido no <code>echo</code>. Por exemplo:</p><pre><code class="language-sh">echo "Piping fun" | cat
</code></pre><p>O resultado será o seguinte:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/10/image-14.png" class="kg-image" alt="image-14" width="372" height="63" loading="lazy"><figcaption>Texto com <em>piping</em> no cat</figcaption></figure><h2 id="cria-o-de-arquivos"><strong>Criação de arquivos</strong></h2><p>Nos exemplos anteriores, usamos o comando <code>echo</code> redirecionado para um arquivo para criar outros arquivos. <code>cat</code> pode ser usado de maneira similar. De fato, podemos usar a concatenação de <code>cat</code> e a funcionalidade de <code>echo</code> para criar arquivos.</p><p>Podemos criar um arquivo com a concatenação de diversos arquivos assim:</p><pre><code class="language-sh">echo "File 1 Contents" &gt; file1
echo "File 2 Contents" &gt; file2
echo "File 3 Contents" &gt; file3
cat file1 file2 file3 &gt; combined_file
cat combined_file</code></pre><p>No exemplo acima, criamos três arquivos usando <code>echo</code>, combinamos os três arquivos em um só usando <code>cat</code> e exibimos o arquivo combinado usando <code>cat</code>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/10/image-15.png" class="kg-image" alt="image-15" width="501" height="184" loading="lazy"><figcaption>O resultado dos comandos acima. Criamos três arquivos e combinamos os três em um único arquivo usando o cat</figcaption></figure><p>Também podemos usar o modo interativo de <code>cat</code> para criar um arquivo com o texto que digitarmos no terminal.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/10/image-16.png" class="kg-image" alt="image-16" width="431" height="239" loading="lazy"></figure><p>Cada vez que você pressionar Enter, ele colocará o texto digitado no arquivo. Se você digitar algum texto, não pressionar Enter e sair, o texto digitado não será capturado no arquivo.</p><p>Esse é um modo incrível de criar um arquivo com a capacidade de inserir conteúdo nesse arquivo rapidamente.</p><h2 id="uso-de-touch-para-criar-arquivos"><strong>Uso de <em>touch</em> para criar arquivos</strong></h2><p>Às vezes, é preciso apenas que um arquivo exista. Como alternativa ao uso de <code>cat</code> para criar arquivos, é possível usar o comando <code>touch</code>.</p><p>O comando <code>touch</code> foi criado para atualizar a <em>timestamp</em> modificada de um arquivo, mas é normalmente usado como um modo rápido de criar um arquivo vazio. Aqui, vemos um exemplo de uso:</p><pre><code class="language-sh">touch nome_do_novo_arquivo</code></pre><p>O comando <code>touch</code> pode criar diversos arquivos, atualizar a modificação e/ou a criação de <em>timestamps</em> e muitas outras coisas úteis. As páginas completas do <a href="https://www.man7.org/linux/man-pages/man1/touch.1.html">man</a> (em inglês) estão no link.</p><p><code>touch</code> normalmente é usado para garantir que um arquivo exista. Ele é um ótimo comando para quando precisamos de um arquivo vazio rapidamente.</p><h2 id="resumo"><strong>Resumo</strong></h2><p><code>cat</code> é um comando muito útil. &nbsp;Você pode usá-lo para criar, exibir e combinar arquivos de texto fácil e rapidamente.</p><p>Se você apenas precisa que um arquivo exista, mas não se importa com o fato de que ele esteja vazio, usar <code>touch</code> é uma ótima alternativa.</p><p>Hughie Coles é um líder em desenvolvimento na Index Exchange. Ele escreve sobre arquitetura de software, escalabilidade, liderança e cultura. &nbsp;Para ver mais textos escritos por ele (em inglês), confira a página do autor no <a href="https://medium.com/@hughie.coles">Medium</a>.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ O comando tar no Linux: Tar CVF e tar XVF explicados com comandos de exemplo ]]>
                </title>
                <description>
                    <![CDATA[ O nome tar é, de acordo com a maior parte dos relatos, uma abreviação para tape archive (arquivo de fitas, em português). As "fitas" em questão seriam todas aquelas unidades de armazenamento magnético que eram populares na década de 1950. Isso sugere que a ferramenta tar pode ser um pouco ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/o-comando-tar-no-linux-tar-cvf-e-tar-xvf-explicados-com-comandos-de-exemplo/</link>
                <guid isPermaLink="false">64dc12d2fa562503c1caf888</guid>
                
                    <category>
                        <![CDATA[ Linux ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Daniel Rosa ]]>
                </dc:creator>
                <pubDate>Wed, 16 Aug 2023 01:34:13 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2023/08/5f9c9938740569d1a4ca1e84.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/tar-command-linux-tar-cvf-tar-xvf/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">The Tar Command in Linux: Tar CVF and Tar XVF Explained with Example Commands</a>
      </p><p>O nome <code>tar</code> é, de acordo com a maior parte dos relatos, uma abreviação para <em>tape archive</em> (arquivo de fitas, em português). As "fitas" em questão seriam todas aquelas unidades de armazenamento magnético que eram populares na década de 1950.</p><p>Isso sugere que a ferramenta <code>tar</code> pode ser um pouco antiga e ter passado de seu auge. A verdade, porém, é que, ao longo de todos os anos e passando por todas as mudanças sísmicas que ocorreram no mundo da TI, o <code>tar</code> não perdeu em nada o seu poder e valor.</p><p>Neste artigo, com base no conteúdo do meu livro <a href="https://www.amazon.com.br/Linux-Action-English-David-Clinton-ebook/dp/B09782RJ51/ref=sr_1_1?__mk_pt_BR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&amp;crid=26GEBGDRB2X7P&amp;keywords=Linux+in+Action&amp;qid=1692147739&amp;s=books&amp;sprefix=linux+in+action%2Cstripbooks%2C246&amp;sr=1-1"><em>Linux in Action</em></a> (em inglês), vou mostrar os conceitos básicos de criação, compactação e restauração de arquivos tar. Comecemos pelo início.</p><h1 id="cria-o-de-arquivos"><strong>Criação de arquivos</strong></h1><p>Este exemplo pegará todos os arquivos e diretórios dentro e sob o diretório de trabalho atual e criará um arquivo que chamei, inteligentemente, de <code>nomedoarquivo.tar</code>.</p><p>Aqui eu uso três argumentos após o comando <code>tar</code>:</p><ul><li><code>c</code> diz ao tar para criar um arquivo,</li><li><code>v</code> define o resultado em tela como extenso (do inglês, <em>verbose</em>) para que eu obtenha as atualizações, e</li><li><code>f</code> aponta para o nome do arquivo que eu desejo dar ao arquivo.</li></ul><p>O <code>*</code> informa ao <code>tar</code> que ele deve incluir todos os arquivos e diretórios locais de modo recursivo.</p><pre><code>$ tar cvf nomedoarquivo.tar *
arquivo1
arquivo2
arquivo3
diretorio1
diretorio1/maiscoisas
diretorio1/maiscoisas/arquivo100
diretorio1/maiscoisas/arquivo101
</code></pre><p>O comando tar nunca moverá ou excluirá nenhum dos diretórios e arquivos originais com os quais você o alimentou – ele só faz cópias arquivadas.</p><p>Você também deve observar que o uso de um ponto (.) em vez de um asterisco (*) no comando anterior incluiria até mesmo arquivos ocultos (cujos nomes de arquivos começam com um ponto) no arquivo.</p><p>Se você estiver acompanhando em seu próprio computador (como você definitivamente deveria estar fazendo), verá um novo arquivo chamado nomedoarquivo.tar. A extensão de nome de arquivo .tar não é necessária, mas é sempre uma boa ideia comunicar claramente o propósito de um arquivo de tantas maneiras quantas possível.</p><p>Extrair seu arquivo para restaurar os arquivos é fácil: basta usar <code>xvf</code> em vez de <code>cvf</code>. Isso, no exemplo, salvará novas cópias dos arquivos e diretórios originais no local atual.</p><pre><code>$ tar xvf nomedoarquivo.tar
arquivo1
arquivo2
arquivo3
diretorio1
diretorio1/maiscoisas
diretorio1/maiscoisas/arquivo100
diretorio1/maiscoisas/arquivo101
</code></pre><p>Claro, você também pode pedir ao tar que envie seus arquivos extraídos para outro lugar usando o argumento <code>-C</code>, seguido do local de destino:</p><pre><code>$ tar xvf nomedoarquivo.tar -C /home/meusdados/arquivosantigos/
</code></pre><p>Nem sempre você vai querer incluir todos os arquivos de uma árvore de diretório em seu arquivo.</p><p>Suponha que você tenha produzido alguns vídeos, mas eles são atualmente mantidos em diretórios junto com todos os tipos de arquivos gráficos, de áudio e de texto (contendo suas notas). Os únicos arquivos de que você precisa fazer o <em>back-up</em> são os clipes do vídeo final usando a extensão de nome de arquivo .mp4.</p><p>Fazemos isso assim:</p><pre><code>$ tar cvf nomedoarquivo.tar *.mp4
</code></pre><p>Fantástico. Esses arquivos de vídeo, no entanto, são enormes. Não seria bom tornar esse arquivo um pouco menor usando a compactação?</p><p>Seu pedido é uma ordem! Basta executar o comando anterior com o argumento <code>z</code> (zip). Isso dirá ao programa gzip para compactar o arquivo.</p><p>Se você quiser seguir a convenção, também pode adicionar uma extensão <code>.gz</code>, além da extensão <code>.tar</code>, que já está lá. Lembre-se: clareza.</p><p>Seria assim:</p><pre><code>$ tar czvf nomedoarquivo.tar.gz *.mp4
</code></pre><p>Se você tentar isso em seus próprios arquivos .mp4 e se, em seguida, executar ls -l no diretório que contém os novos arquivos, você pode notar que o arquivo <code>.tar.gz</code> não é muito menor do que o arquivo <code>.tar</code>, talvez 10% ou mais. Para que fazer isso, então?</p><p>Bem, o formato de arquivo <code>.mp4</code> é compactado. Assim, há muito menos espaço para o gzip fazer sua mágica.</p><p>Como o tar está totalmente ciente de seu ambiente Linux, você pode usá-lo para selecionar arquivos e diretórios que vivem fora do diretório de trabalho atual. Este exemplo adiciona todos os arquivos <code>.mp4</code> no diretório /home/meuusuario/Videos/:</p><pre><code>$ tar czvf nomedoarquivo.tar.gz /home/meuusuario/Videos/*.mp4
</code></pre><p>Como os arquivos podem ficar grandes, às vezes, pode fazer sentido dividi-los em vários arquivos menores, transferi-los para sua nova casa e, em seguida, recriar o arquivo original na outra extremidade. A ferramenta de divisão é feita para este fim.</p><p>Neste exemplo, <code>-b</code> diz ao Linux para dividir o arquivo <code>nomedoarquivo.tar.gz</code> em partes de 1 GB. Em seguida, a operação nomeia cada uma das partes — nomedoarquivo.tar.gz.partaa, nomedoarquivo.tar.gz.partab, nomedoarquivo.tar.gz.partac e assim por diante:</p><pre><code>$ split -b 1G nomedoarquivo.tar.gz "nomedoarquivo.tar.gz.part"
</code></pre><p>Por outro lado, você recria o arquivo lendo cada uma das partes em sequência (cat nomedoarquivo.tar.gz.part*) e, em seguida, redireciona a saída para um novo arquivo chamado nomedoarquivo.tar.gz:</p><pre><code>$ cat nomedoarquivo.tar.gz.part* &gt; nomedoarquivo.tar.gz
</code></pre><h1 id="utilizando-a-stream-de-arquivos-do-sistema-de-arquivos"><strong>Utilizando a stream de arquivos do sistema de arquivos</strong></h1><p>É aqui que a parte boa começa. Vou mostrar como criar uma imagem de arquivo a partir de uma instalação do Linux em funcionamento e transmiti-la para um local de armazenamento remoto — tudo dentro de um único comando. Aqui está o comando:</p><pre><code># tar czvf - --one-file-system / /usr /var \
  --exclude=/home/andy/ | ssh username@10.0.3.141 \
  "cat &gt; /home/nomedousuario/workstation-backup-Apr-10.tar.gz"
</code></pre><p>Em vez de tentar explicar tudo isso imediatamente, vou usar exemplos menores para explorar o comando aos poucos.</p><p>Vamos criar um arquivo de conteúdo de um diretório chamado <code>coisasimportantes</code> que está cheio de, você adivinhou, coisas realmente importantes:</p><pre><code>$ tar czvf - coisasimportantes/ | ssh nomedousuario@10.0.3.141 "cat &gt; /home/nomedousuario/meusarquivos.tar.gz"
coisasimportantes/arquivo1
coisasimportantes/arquivo2
[...]
nomedousuario@10.0.3.141's password:
</code></pre><p>Vamos explicar esse exemplo. Em vez de digitar o nome do arquivo logo após os argumentos de comando (da maneira que você fez até agora), usei um traço (czvf -).</p><p>O traço gera dados para a saída padrão. Ele permite que você envie os detalhes do nome do arquivo de volta para o final do comando e diz ao tar para esperar o conteúdo de origem para o arquivo.</p><p>Em seguida, usei um <em>pipe</em> (|) para enviar o arquivo compactado e sem nome para um login de ssh em um servidor remoto onde me foi pedida a minha senha.</p><p>O comando entre aspas executou <code>cat</code> no <em>stream</em> de dados do arquivo, que gravou o conteúdo do fluxo (do inglês, <em>stream</em>) em um arquivo chamado meusarquivos.tar.gz no meu diretório home no host remoto.</p><p>Uma vantagem de gerar arquivos dessa maneira é que você evita a sobrecarga de uma etapa intermediária. Não há necessidade de salvar temporariamente uma cópia do arquivo na máquina local. Imagine fazer <em>back-up</em> de uma instalação que ocupa 110 GB de seus 128 GB de espaço disponível. Para onde vai o arquivo?</p><p>Isso era apenas um diretório de arquivos. Suponha que você precise fazer o <em>back-up</em> de um sistema operacional Linux ativo em uma unidade USB para poder movê-lo para uma máquina separada e soltá-lo na unidade principal dessa máquina.</p><p>Supondo que já haja uma nova instalação da mesma versão do Linux na segunda máquina, a próxima operação de copiar/colar gerará uma réplica exata da primeira.</p><blockquote>OBSERVAÇÃO: isso não funcionará em uma unidade de destino que não tenha um sistema de arquivos do Linux instalado. Para lidar com a situação, você precisará usar <code>dd</code>.</blockquote><p>O próximo exemplo cria um arquivo compactado em uma unidade USB, conhecida como <code>/dev/sdc1</code>.</p><p>O argumento <code>--one-file-system</code> exclui todos os dados de qualquer sistema de arquivos que não seja o atual. Isso significa que as pseudopartições, como <code>/sys/</code> e <code>/dev/</code>, não serão adicionadas ao arquivo. Se houver outras partições que você deseja incluir (como <code>/usr/</code> e <code>/var/</code>, neste exemplo), elas devem ser adicionadas explicitamente.</p><p>Por fim, você pode excluir dados do sistema de arquivos atual usando o argumento <code>--exclude</code>:</p><pre><code># tar czvf /dev/sdc1/workstation-backup-Apr-10.tar.gz \
  --one-file-system \
  / /usr /var \
  --exclude=/home/andy/
</code></pre><p>Voltemos ao exemplo do comando de serviço completo. Usando o que você já aprendeu, arquive todos os diretórios importantes de um sistema de arquivos e copie o arquivo para uma unidade USB. Isso deve fazer sentido para você agora:</p><pre><code># tar czvf - --one-file-system / /usr /var \
  --exclude=/home/andy/ | ssh nomedousuario@10.0.3.141 \
  "cat &gt; /home/nomedousuario/workstation-backup-Apr-10.tar.gz"
</code></pre><p><em>Há muito mais coisas interessantes em termos de <em><em><em><em><em><em><em><em><em><em><em><em><em><em><em>administra</em></em></em></em></em></em></em></em></em></em></em></em></em></em></em>ção do seu sistema, na forma de livros<em><em><em><em><em><em><em><em><em><em><em><em><em><em><em>, c</em></em></em></em></em></em></em></em></em></em></em></em></em></em></em>ursos e artigos disponíveis no site do autor, <em><em><em><em><em><em><em><em><em><em><em><em><em><em><em><a href="https://bootstrap-it.com/">bootstrap-it.com</a></em></em></em></em></em></em></em></em></em></em></em></em></em></em></em> </em>(em inglês)<em><em><em><em><em><em><em><em><em><em><em><em><em><em><em><em>.</em></em></em></em></em></em></em></em></em></em></em></em></em></em></em></em></p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ O comando Chmod – como alterar permissões de arquivos no Linux ]]>
                </title>
                <description>
                    <![CDATA[ Um dos primeiros comandos que aprendi no Linux foi o comando touch, que cria um arquivo usando a linha de comando. Se você tentar criar, por exemplo, um arquivo de texto, tudo o que você precisa fazer é digitar touch filename.txt e pressionar Enter. O arquivo será criado para você ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/o-comando-chmod-como-alterar-permissoes-de-arquivos-no-linux/</link>
                <guid isPermaLink="false">64ad7156d4e9dc0571a41332</guid>
                
                    <category>
                        <![CDATA[ Linux ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Daniel Rosa ]]>
                </dc:creator>
                <pubDate>Wed, 12 Jul 2023 21:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2023/07/pexels-artem-beliaikin-912005.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/how-to-change-file-permissions-with-the-chmod-command-on-linux/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Chmod Command – How to Change File Permissions in Linux</a>
      </p><p>Um dos primeiros comandos que aprendi no Linux foi o comando <code>touch</code>, que cria um arquivo usando a linha de comando.</p><p>Se você tentar criar, por exemplo, um arquivo de texto, tudo o que você precisa fazer é digitar <code>touch filename.txt</code> e pressionar Enter. O arquivo será criado para você no diretório em que você está. Você pode, então, escrever o que quiser usando o editor de arquivos de sua escolha.</p><p>No entanto, quando se trata de criar scripts, as coisas podem ficar um pouco mais complicadas. Por quê?</p><p>Vou tentar demonstrar isso com outro exemplo. Suponha que você queira criar um script usando o <code>touch</code>. Digite <code>touch example.sh</code>, pressione Enter e pronto. Mais uma vez, você pode escrever nele usando um editor de arquivos.</p><p>Com tudo pronto, só falta testá-lo. Você digita <code>./sample.sh</code> e pressiona Enter para ver seu script em ação e... o que essa mensagem está me dizendo?</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/07/Screenshot-from-2022-03-20-13-58-39.png" class="kg-image" alt="Screenshot-from-2022-03-20-13-58-39" width="577" height="134" loading="lazy"></figure><h2 id="por-que-precisamos-de-permiss-es"><strong>Por que precisamos de permissões?</strong></h2><p>Espere aí. Eu sou o <em>admin</em>! Como assim eu não tenho permissão para executar um script que eu mesmo escrevi agora há pouco?</p><p>Na verdade, existe um motivo – e, para ser honesto, a maioria dos usuários deve ser grata por isso, já que não ser capaz de executar scripts sem saber o que você está fazendo, muitas vezes, impede que você coloque seu sistema em risco.</p><p>Vamos conversar rapidamente sobre permissões primeiro. Depois, vamos descobrir como mudá-las.</p><p>Para obter mais informações sobre seu arquivo, usaremos o comando que lista os arquivos em um diretório: <code>ls</code>.</p><p>Depois de digitar <code>ls</code> e pressionar Enter, isto é o que obtemos na linha de comando:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/07/Screenshot-from-2022-03-20-14-05-58.png" class="kg-image" alt="Screenshot-from-2022-03-20-14-05-58" width="573" height="128" loading="lazy"></figure><p>O que ele faz é listar todos os arquivos visíveis no diretório que você está no momento. Ao adicionar a flag <code>-l</code> a ele, ele fornece mais informações sobre os arquivos no diretório. Este é o resultado quando digitamos <code>ls -l</code> e pressionamos Enter:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/07/Screenshot-from-2022-03-20-14-08-00.png" class="kg-image" alt="Screenshot-from-2022-03-20-14-08-00" width="572" height="171" loading="lazy"></figure><p>Vemos o(s) mesmo(s) arquivo(s), mas com muitas informações antes dele(s). Para começar, temos uma sequência de dez traços e letras que podem parecer sem sentido no início. Este é, na verdade, o mapeamento de permissões que seu arquivo tem.</p><p>O primeiro caractere pode ser um traço (<code>-</code>, para um arquivo comum), um <code>d</code> (para um diretório) ou um <code>l</code> (para um soft link). Por uma questão de simplicidade, vou me concentrar nos arquivos simples, embora as permissões sejam válidas para todos esses tipos de arquivos/pastas.</p><p>Após o primeiro caractere, os outros 9 podem ser divididos em grupos de três. O primeiro trio mostra as permissões para o usuário atual. A seguir, temos as permissões para esse grupo. Os três últimos caracteres são as permissões para todos os usuários que não se encaixam nessas categorias.</p><p>Para nossa explicação, vamos nos concentrar nas três primeiras permissões, já que não vamos mudar de grupo ou algo do tipo.</p><p>O primeiro trio diz <code>rw-</code>.</p><p>Hora de entender o que isso significa. Há três coisas que você normalmente pode fazer com um arquivo: lê-lo, gravá-lo e executá-lo. Ou seja, basicamente, o que essas letras significam.</p><p>O primeiro <code>r</code> significa a permissão de leitura (do inglês, <em>read</em>). Então, temos <code>w</code> para a permissão de escrita (do inglês, <em>write</em>). Finalmente, um traço, ou seja, que aquilo que deveria estar ali, não está. O que deveria estar ali é um <code>x</code>, que significa eXecutável (do inglês, <em>executable</em>).</p><p>Então, falando sobre o usuário atual (eu), as permissões que tenho para esse arquivo são as permissões de leitura e gravação. No entanto, não consigo executar o arquivo <code>sample.sh</code>. É por isso que, ao tentar executar o arquivo, recebi a mensagem '<em>Permission denied</em>' (em português, permissão negada).</p><p>Como posso então executar este arquivo? É aí que o comando chmod entra em jogo.</p><h2 id="o-que-faz-o-chmod"><strong>O que faz o <em>chmod</em>?</strong></h2><p>Bem, eu venho mencionando "permissões" desde o início do artigo. Vamos estender um pouco essa explicação para dizer que elas são 'permissões para acessar um arquivo em um determinado modo. Isso significa que <code>r</code> denota a permissão para acessar o arquivo no modo de leitura, <code>w</code> denota a permissão para acessar o arquivo no modo de gravação e <code>x</code> denota a permissão para acessar o arquivo no modo executável.</p><p>Por que estou dizendo isso? Em função do comando deste artigo. <code>chmod</code> significa 'change mode' (em português, alterar o modo). Em outras palavras, ao usar esse comando, você está alterando o modo de um arquivo para o(s) modo(s) que deseja usar.</p><h2 id="como-usar-operadores-com-o-chmod"><strong>Como usar operadores com o <code>chmod</code></strong></h2><p>É necessário usar um <em>operador </em>com o comando <code>chmod</code>. Ele serve para especificar o tipo de alteração que você deseja fazer nas permissões.</p><p>Por exemplo, <code>+</code> é o operador que você usa para adicionar uma permissão àquelas que o arquivo já tem. <code>-</code> remove uma permissão da lista. Há também o operador <code>=</code>, que redefine as permissões para que você possa defini-las novamente.</p><p>No nosso caso, ao digitar <code>chmod -w sample.sh</code>, o que estou pedindo ao comando é que remova a permissão de escrita. Então, o que eu teria que fazer para adicionar a permissão de execução do arquivo é digitar <code>chmod +x sample.sh</code>.</p><p>Se eu tentar executar o arquivo, o que eu colocar no script agora poderá ser executado.</p><p>Usando <code>ls -l</code>, isso é o que eu teria agora:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/07/Screenshot-from-2022-03-20-14-12-03.png" class="kg-image" alt="Screenshot-from-2022-03-20-14-12-03" width="567" height="193" loading="lazy"></figure><h2 id="quem-recebe-as-permiss-es"><strong>Quem recebe as permissões?</strong></h2><p>Outra coisa que vale a pena ressaltar é quem está recebendo essa permissão. Você verá que o 'x' é dado a todos os usuários, ao proprietário do arquivo, ao grupo e a outros. Se isso não é o que você quer, talvez seja uma coisa boa remover a permissão de execução novamente com <code>chmod -x sample.sh</code>.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/07/Screenshot-from-2022-03-20-14-16-11.png" class="kg-image" alt="Screenshot-from-2022-03-20-14-16-11" width="571" height="166" loading="lazy"></figure><p>Para habilitar a permissão apenas para o proprietário do arquivo (eu, nesse caso), devemos adicionar um 'u' antes do '+x', assim:</p><p><code>chmod u+x sample.sh</code></p><p>Ao digitar <code>ls -l</code>, eis o que temos:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/07/Screenshot-from-2022-03-20-14-18-22.png" class="kg-image" alt="Screenshot-from-2022-03-20-14-18-22" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/07/Screenshot-from-2022-03-20-14-18-22.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/07/Screenshot-from-2022-03-20-14-18-22.png 634w" width="634" height="177" loading="lazy"></figure><p>Se você quisesse dar a permissão para o proprietário e seu grupo, então o comando seria <code>chmod ug+x sample.sh</code>.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/07/Screenshot-from-2022-03-20-14-20-25.png" class="kg-image" alt="Screenshot-from-2022-03-20-14-20-25" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/07/Screenshot-from-2022-03-20-14-20-25.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/07/Screenshot-from-2022-03-20-14-20-25.png 706w" width="706" height="155" loading="lazy"></figure><p>Bem, acho que isso cobre o que eu gostaria de mostrar a vocês. Há outras coisas que podem ser de seu interesse, como usar <code>chmod</code> com valores octais ou binários para representar as permissões. Esses, porém, são modos que usamos para ter os mesmos resultados e acredito que as letras são uma maneira mais fácil de alcançá-los.</p><p>Caso você queira mais informações sobre o comando, uma coisa que você pode fazer é digitar <code>chmod --help</code>, que dará a você uma versão resumida sobre o que o comando pode fazer. Uma descrição ainda mais detalhada pode ser obtida digitando <code>man chmod</code>.</p><p>Espero que este artigo tenha sido útil. Para ver mais artigos sobre comandos no Linux em português, confira o <a href="https://www.freecodecamp.org/portuguese/news/">editorial do freeCodeCamp em português</a>.</p><p>Uma ótima programação para você! 😃</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Lista de processos do Linux – como verificar os processos em execução ]]>
                </title>
                <description>
                    <![CDATA[ Todos os dias, os desenvolvedores usam várias aplicações e executam comandos no terminal. Essas aplicações podem incluir um navegador, editor de código, terminal, aplicação de videochamada ou reprodutor de música. Para cada uma dessas aplicações de software que você abre ou comando que executa, ele cria um processo ou tarefa. ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/lista-de-processos-do-linux-como-verificar-os-processos-em-execucao/</link>
                <guid isPermaLink="false">63d113f991baea05fef71c6f</guid>
                
                    <category>
                        <![CDATA[ Linux ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Giálisson Rocha ]]>
                </dc:creator>
                <pubDate>Sun, 07 May 2023 21:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/article-banner.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/linux-list-processes-how-to-check-running-processes/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Linux List Processes – How to Check Running Processes</a>
      </p><p>Todos os dias, os desenvolvedores usam várias aplicações e executam comandos no terminal. Essas aplicações podem incluir um navegador, editor de código, terminal, aplicação de videochamada ou reprodutor de música.</p><p>Para cada uma dessas aplicações de software que você abre ou comando que executa, ele cria um <em><em>process</em>o</em> ou <em><em>ta</em>refa</em>.</p><p>Uma bela característica do sistema operacional Linux e dos computadores modernos em geral é que eles fornecem suporte para multitarefas. Assim, vários programas podem ser executados simultaneamente.</p><p>Você já se perguntou como você pode verificar todos os programas em execução na sua máquina? Se já fez isso, este artigo é para você, pois vou mostrar aqui como listar, gerenciar e eliminar todos os processos em execução em sua máquina Linux.</p><h2 id="pr-requisitos">Pré-requisitos</h2><ul><li>Uma distro Linux instalada.</li><li>Conhecimento básico em navegação pela linha de comando.</li><li>Um sorriso no rosto 😀</li></ul><h2 id="uma-introdu-o-r-pida-aos-processos-no-linux">Uma introdução rápida aos processos no Linux</h2><p>Um processo é uma instância de um programa de computador em execução que você pode encontrar em um programa de software ou comando.</p><p>Por exemplo, se você abrir o editor do Visual Studio Code, isso criará um processo que somente será finalizado uma vez que você termine ou feche o Visual Studio Code.</p><p>Da mesma forma, quando você executa um comando no terminal (tipo <code>curl ifconfig.me</code>), ele cria um processo que só vai parar quando o comando terminar de executar ou for finalizado.</p><h2 id="como-listar-os-processos-em-execu-o-no-linux-com-o-comando-ps">Como listar os processos em execução no Linux com o comando<strong> <code>ps</code></strong></h2><p>Você pode listar os processos em execução usando o comando <code>ps</code> (ps significa <em><em>process status</em></em>). O comando <code>ps</code> exibe seus processos em execução no momento e em tempo real.</p><p>Para testar isso, basta abrir o terminal e executar o comando <code>ps</code>, assim:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/Screenshot-2021-06-28-at-3.25.33-PM.png" class="kg-image" alt="Screenshot-2021-06-28-at-3.25.33-PM" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/Screenshot-2021-06-28-at-3.25.33-PM.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/05/Screenshot-2021-06-28-at-3.25.33-PM.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/05/Screenshot-2021-06-28-at-3.25.33-PM.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/Screenshot-2021-06-28-at-3.25.33-PM.png 2000w" sizes="(min-width: 720px) 720px" width="2000" height="1274" loading="lazy"></figure><p>Isto mostrará o processo que está em execução em quatro colunas:</p><ul><li><strong><strong>PID</strong></strong> retorna o ID exclusivo do processo</li><li><strong><strong>TTY</strong></strong> retorna o tipo de terminal em que você está logado</li><li><strong><strong>TIME</strong></strong> retorna a quantidade total de uso da CPU</li><li><strong><strong>CMD</strong></strong> retorna o nome do comando que iniciou o processo.</li></ul><p>Você pode escolher exibir um determinado conjunto de processos usando qualquer combinação das opções (como <code>-A</code> <code>-a</code>, <code>-C</code>, <code>-c</code>, <code>-d</code>, <code>-E</code>, <code>-e</code>, <code>-u</code>, <code>-X</code>, <code>-x</code>, entre outros).</p><p>Se você especificar mais de uma dessas opções, todos os processos que forem combinados por, pelo menos, uma das opções indicadas serão exibidas.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/Screenshot-2021-06-28-at-3.55.10-PM.png" class="kg-image" alt="Screenshot-2021-06-28-at-3.55.10-PM" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/Screenshot-2021-06-28-at-3.55.10-PM.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/05/Screenshot-2021-06-28-at-3.55.10-PM.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/05/Screenshot-2021-06-28-at-3.55.10-PM.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/Screenshot-2021-06-28-at-3.55.10-PM.png 2000w" sizes="(min-width: 720px) 720px" width="2000" height="1274" loading="lazy"><figcaption>A página do manual do comando <code>ps</code>.</figcaption></figure><blockquote>Digite <code>man ps</code> no seu terminal para ler o manual do comando <code>ps</code>, que tem uma referência completa para todas as opções e suas utilizações.</blockquote><p>Para mostrar todos os processos em execução para todos os usuários na sua máquina, incluindo os seus nomes de usuário, e para mostrar processos não conectados ao seu terminal, é possível usar o comando abaixo:</p><pre><code>ps aux</code></pre><p>Aqui está uma descrição do comando:</p><ul><li><code>ps</code>: é o comando de status do processo.</li><li><code>a</code>: exibe informações sobre os processos de outros usuários, bem como os seus.</li><li><code>u</code>: &nbsp;exibe os processos pertencentes aos nomes de usuário especificados.</li><li><code>x</code>: inclui processos que não possuem terminal de controle.</li></ul><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/Screenshot-2021-06-28-at-4.39.05-PM.png" class="kg-image" alt="Screenshot-2021-06-28-at-4.39.05-PM" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/Screenshot-2021-06-28-at-4.39.05-PM.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/05/Screenshot-2021-06-28-at-4.39.05-PM.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/05/Screenshot-2021-06-28-at-4.39.05-PM.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/Screenshot-2021-06-28-at-4.39.05-PM.png 2000w" sizes="(min-width: 720px) 720px" width="2000" height="1274" loading="lazy"></figure><p>Isso exibirá o processo para o <em>shell </em>atual em onze colunas:</p><ul><li><strong><strong>USER</strong></strong> retorna o nome de usuário de quem está executando o processo</li><li><strong><strong>PID</strong></strong> retorna o ID de processo exclusivo</li><li><strong><strong>%CPU</strong></strong> retorna a porcentagem de uso da CPU</li><li><strong><strong>%MEM</strong></strong> retorna a porcentagem de uso da memória</li><li><strong><strong>VSV</strong></strong> retorna o tamanho virtual em Kbytes</li><li><strong><strong>RSS</strong></strong> retorna o tamanho do conjunto residente</li><li><strong><strong>TT</strong></strong> retorna o nome do terminal de controle</li><li><strong><strong>STAT</strong></strong> retorna o estado do processo simbólico</li><li><strong><strong>STARTED</strong></strong> retorna a hora de início</li><li><strong><strong>CMD</strong></strong> retorna o comando que iniciou o processo.</li></ul><h2 id="como-listar-processos-em-execu-o-no-linux-usando-os-comandos-top-e-htop">Como listar processos em execução no Linux usando os comandos<strong> <code>top</code> e <code>htop</code></strong></h2><p>Você também pode usar o comando <code>top</code> do gerenciador de tarefas no Linux para ver uma lista ordenada em tempo real dos processos principais que usam mais memória ou CPU.</p><p>Digite <code>top</code> em seu terminal e você terá um resultado como o que você vê na captura de tela abaixo:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/Screenshot-2021-06-28-at-4.27.28-PM.png" class="kg-image" alt="Screenshot-2021-06-28-at-4.27.28-PM" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/Screenshot-2021-06-28-at-4.27.28-PM.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/05/Screenshot-2021-06-28-at-4.27.28-PM.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/05/Screenshot-2021-06-28-at-4.27.28-PM.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/Screenshot-2021-06-28-at-4.27.28-PM.png 2000w" sizes="(min-width: 1200px) 1200px" width="2000" height="1274" loading="lazy"></figure><blockquote>Você pode digitar <code>q</code> para sair da sessão.</blockquote><p>Uma alternativa ao <code>top</code> é o <code>htop</code> que fornece um monitor de sistema interativo para visualizar e gerenciar processos. Ele também exibe uma lista ordenada em tempo real de processos com base em seu uso de CPU. Você pode facilmente pesquisar, filtrar e matar processos em execução.</p><p>O <code>htop</code> não está instalado no Linux por padrão. Então, você precisa instalá-lo usando o comando abaixo ou baixar os binários para sua distro Linux preferida.</p><pre><code>sudo apt update &amp;&amp; sudo apt install htop</code></pre><p>Basta digitar <code>htop</code> em seu terminal e você terá um resultado como o que você vê na captura de tela abaixo:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/Screenshot-2021-06-29-at-4.49.09-AM.png" class="kg-image" alt="Screenshot-2021-06-29-at-4.49.09-AM" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/Screenshot-2021-06-29-at-4.49.09-AM.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/05/Screenshot-2021-06-29-at-4.49.09-AM.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/05/Screenshot-2021-06-29-at-4.49.09-AM.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/Screenshot-2021-06-29-at-4.49.09-AM.png 2000w" sizes="(min-width: 1200px) 1200px" width="600" height="400" loading="lazy"></figure><h2 id="como-encerrar-processos-em-execu-o-no-linux">Como encerrar processos em execução no Linux</h2><p>Encerrar um processo significa que você termina uma aplicação ou comando em execução. Você pode encerrar um processo executando o comando <code>kill</code> com o ID do processo ou o comando <code>pkill</code> juntamente ao nome do processo, assim:</p><pre><code>kill [PID]</code></pre><p>ou</p><pre><code>pkill [COMMAND]</code></pre><p>Para encontrar o ID de um processo em execução, você pode usar o comando <code>pgrep</code> seguido do nome do processo, deste modo:</p><pre><code>pgrep iTerm2</code></pre><p>Para encerrar o processo iTerm2 na captura de tela acima, usaremos qualquer um dos comandos abaixo. Isto terminará e fechará automaticamente o processo iTerm2 (aplicação).</p><pre><code>kill 25781</code></pre><p>ou</p><pre><code>kill iTerm2</code></pre><h2 id="conclus-o">Conclusão</h2><p>Quando você lista processos em execução, geralmente é uma lista longa e agrupada. Você pode canalizá-la através de poucas palavras para exibir a saída do comando uma página de cada vez em seu terminal assim:</p><pre><code>ps aux | less</code></pre><p>Também é possível exibir apenas um processo específico que corresponda a um nome específico, assim:</p><pre><code>ps aux | grep Chrome</code></pre><p>Espero que, agora, você entenda o que são processos no Linux e como gerenciá-los usando os comandos <code>ps</code>, <code>top</code> e <code>htop</code>. Certifique-se de verificar o manual para cada comando, executando <code>man ps</code>, <code>man top</code> ou <code>man htop</code>, respectivamente. O manual inclui uma referência abrangente que você pode verificar se precisar de mais ajuda em qualquer ponto.</p><p>Obrigado pela leitura! Tudo de bom! 💙</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Linux: como adicionar e criar usuários com useradd ]]>
                </title>
                <description>
                    <![CDATA[ Se mais de uma pessoa estiver usando sua máquina com Linux em casa ou se você estiver gerenciando um servidor que fornece acesso a diversos usuários, o comando useradd é essencial para a criação de usuários. Além disso, muitos serviços que você utiliza como desenvolvedor podem exigir suas próprias contas ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/linux-como-adicionar-e-como-criar-usuarios-com-useradd/</link>
                <guid isPermaLink="false">627833af2f31960511beb3dc</guid>
                
                    <category>
                        <![CDATA[ Linux ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Daniel Rosa ]]>
                </dc:creator>
                <pubDate>Sun, 08 May 2022 21:39:52 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2022/05/5f9c9c8c740569d1a4ca32d2.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/linux-how-to-add-users-and-create-users-with-useradd/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Linux: How to Add Users and Create Users with useradd</a>
      </p><p>Se mais de uma pessoa estiver usando sua máquina com Linux em casa ou se você estiver gerenciando um servidor que fornece acesso a diversos usuários, o comando <code>useradd</code> é essencial para a criação de usuários.</p><p>Além disso, muitos serviços que você utiliza como desenvolvedor podem exigir suas próprias contas de usuário para funcionarem. Assim, mesmo como um desenvolvedor sozinho em sua própria máquina, você pode se encontrar buscando esses comandos ao instalar o MySQL ou algo semelhante.</p><p>Você pode obter uma visão geral completa das várias opções disponíveis visualizando a página de manual (man) para o utilitário: <code>man useradd</code></p><p>Se, no entanto, isso for demais para você assimilar, aqui temos uma análise de algumas das opções mais comuns e que você pode encontrar ao criar um usuário.</p><h2 id="criar-um-usu-rio"><strong>Criar um usuário</strong></h2><p>O formato simples desse comando é <code>useradd [opções] NOME_DE_USUARIO</code>.</p><p>Por exemplo, <code>useradd teste</code> (como usuário root - insira <code>sudo</code> antes se não estiver registrado como root).</p><p>Esse comando criará um usuário chamado <em>teste</em>, mas é uma operação limitada e não criará outras coisas úteis, como seu diretório home ou sua senha!</p><h2 id="adicionar-uma-senha"><strong>Adicionar uma senha</strong></h2><p>Você, então, deve adicionar a senha para o usuário <em>teste</em> usando o comando <code>passwd</code>: <code>passwd teste</code>. Isso solicitará que você insira uma senha para o usuário.</p><p><em>Existe uma opção para adicionar uma senha criptografada por meio da opção<em> <code>-p</code> </em>de<em> <code>useradd</code>, </em>mas ela não é recomendada por razões de segurança<em>.</em></em></p><p>Observe que a opção <code>-p</code> não permite que você insira uma senha de texto simples. Ela espera que você a criptografe primeiro. Isso é difícil de propósito, pois você <strong>não deve</strong> fazê-lo! Simplesmente use o comando <code>passwd</code>.</p><h2 id="outras-op-es-comuns"><strong>Outras opções comuns</strong></h2><h3 id="diret-rio-home"><strong>Diretório <em>home</em></strong></h3><p>Para criar um usuário com o diretório <em>home</em> padrão, use a opção abaixo:</p><p><code>useradd -m teste</code></p><p>Esse usuário agora terá um diretório <em>/home/teste</em>.</p><p>Você pode passar uma opção adicional para alterar um diretório <em>home</em>, por exemplo:</p><p><code>useradd -m -d /alternate teste</code></p><h3 id="shell"><strong>Shell</strong></h3><p>Por padrão, seus usuários criados provavelmente terão o shell de login padrão bin/bash ou bin/sh, que serão definidos em <code>/etc/default/useradd</code>.</p><p>Você pode sobrescrever esse padrão com a opção <code>-s</code>:</p><p><code>useradd -s usr/bin/zsh teste</code></p><h2 id="unir-todas-as-op-es"><strong>Unir todas as opções</strong></h2><p>Para construir o comando inteiro, coloque as opções uma após a outra - a ordem não é importante - e encerre com o nome de usuário que você quer criar.</p><p>Assim, para criar um usuário chamado <em>user</em> com um diretório <em>home</em> e um shell personalizado, seu comando teria a seguinte aparência:</p><p><code>useradd -m -s /usr/bin/zsh user</code></p><p>Depois, você adicionaria uma senha para o usuário: <code>passwd user</code></p><h2 id="n-o-se-esque-a-de-ler-o-manual"><strong>Não se esqueça de ler o manual</strong></h2><p>Agora que você já viu o básico sobre o que pode fazer essa ferramenta, espero que a página do manual (man) seja mais navegável.</p><p><code>man useradd</code> mostrará para você como adicionar coisas como datas de validade na conta, atribuir grupos e assim por diante.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ O processo de inicialização do Linux - 6 etapas descritas em detalhes ]]>
                </title>
                <description>
                    <![CDATA[ Um sistema operacional (SO) é o software de baixo nível que gerencia recursos, controla periféricos e fornece serviços básicos para outros softwares. No Linux, existem 6 estágios distintos no processo de inicialização típico. 1. BIOS BIOS significa Basic Input/Output System. Em termos simples, o BIOS carrega e executa o carregador ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/o-processo-de-inicializacao-do-linux-6-etapas-descritas-em-detalhes/</link>
                <guid isPermaLink="false">61f1dab153557304fa19be6e</guid>
                
                    <category>
                        <![CDATA[ Linux ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Fernando Mota Freitas ]]>
                </dc:creator>
                <pubDate>Thu, 03 Feb 2022 14:34:06 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2022/01/5f9c9cef740569d1a4ca34fc-1.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/the-linux-booting-process-6-steps-described-in-detail/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">The Linux Booting Process - 6 Steps Described in Detail</a>
      </p><p>Um sistema operacional (SO) é o software de baixo nível que gerencia recursos, controla periféricos e fornece serviços básicos para outros softwares. No Linux, existem 6 estágios distintos no processo de inicialização típico.</p><h3 id="1-bios"><strong>1. BIOS</strong></h3><p>BIOS significa Basic Input/Output System. Em termos simples, o BIOS carrega e executa o carregador de inicialização Master Boot Record (MBR).</p><p>Quando você liga o computador pela primeira vez, a primeira coisa que o BIOS faz é executar algumas verificações de integridade do HDD ou SSD.</p><p>Em seguida, o BIOS procura, carrega e executa o programa carregador de inicialização, que pode ser encontrado no Master Boot Record (MBR). O MBR às vezes está em um pendrive ou CD-ROM, como em uma instalação em formato live-USB do Linux.</p><p>Uma vez que o programa carregador de inicialização é detectado, ele é carregado na memória e o BIOS dá o controle do sistema a ele.</p><h3 id="2-mbr"><strong>2. MBR</strong></h3><p>MBR significa Master Boot Record e é responsável por carregar e executar o carregador de inicialização GRUB.</p><p>O MBR está localizado no 1º setor do disco inicializável, que normalmente é <code>/dev/hda</code> ou <code>/dev/sda</code>, dependendo do seu hardware. O MBR também contém informações sobre o GRUB, ou LILO em sistemas muito antigos.</p><h3 id="3-grub"><strong>3. GRUB</strong></h3><p>Às vezes chamado de GNU GRUB, que é a abreviação de GNU GR e Unified Bootloader, é o carregador de inicialização típico para a maioria dos sistemas Linux modernos.</p><p>A tela inicial do GRUB geralmente é a primeira coisa que você vê quando inicializa seu computador. Tem um menu simples onde você pode selecionar algumas opções. Se você tiver várias imagens de kernel instaladas, poderá usar o teclado para selecionar aquela com a qual deseja que seu sistema inicialize. Por padrão, a imagem do kernel mais recente é selecionada.</p><p>A tela inicial aguarda alguns segundos para você selecionar uma opção. Se você não fizer isso, ele carregará a imagem padrão do kernel.</p><p>Em muitos sistemas, você pode encontrar o arquivo de configuração do GRUB em <code>/boot/grub/grub.conf</code> ou <code>/etc/grub.conf</code>. Aqui está um exemplo de um arquivo <code>grub.conf</code> simples:</p><pre><code class="language-text">#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-194.el5PAE)
      root (hd0,0)
      kernel /boot/vmlinuz-2.6.18-194.el5PAE ro root=LABEL=/
      initrd /boot/initrd-2.6.18-194.el5PAE.img</code></pre><h3 id="4-n-cleo"><strong>4. Núcleo</strong></h3><p>O kernel é muitas vezes referido como o núcleo de qualquer sistema operacional, incluindo o Linux. Ele tem controle total sobre tudo em seu sistema.</p><p>Neste estágio do processo de inicialização, o kernel que foi selecionado pelo GRUB primeiro monta o sistema de arquivos raiz especificado no arquivo <code>grub.conf</code>. Em seguida, executa o programa <code>/sbin/init</code>, que é sempre o primeiro programa a ser executado. Você pode confirmar isso com seu ID de processo (PID), que deve ser sempre 1.</p><p>O kernel então estabelece um sistema de arquivos raiz temporário usando o disco RAM inicial (initrd) até que o sistema de arquivos real seja montado.</p><h3 id="5-iniciar"><strong>5. Iniciar</strong></h3><p>Neste ponto, seu sistema executa programas de nível de execução. Em um ponto, ele procuraria um arquivo init, geralmente encontrado em <code>/etc/inittab</code>para decidir o nível de execução do Linux.</p><p>Os sistemas Linux modernos usam o systemd para escolher um nível de execução. De acordo com a <a href="https://translate.google.com/website?sl=en&amp;tl=pt&amp;client=webapp&amp;u=https://www.tecmint.com/change-runlevels-targets-in-systemd/">TecMint</a> , estes são os níveis de execução disponíveis:</p><blockquote><strong>O nível de execução 0</strong> é correspondido por <strong>poweroff.target</strong> (e <strong>runlevel0.target</strong> é um link simbólico para <strong>poweroff.target</strong> ). <br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<strong>O nível de execução 1</strong> é correspondido por <strong>rescue.target</strong> (e <strong>runlevel1.target</strong> é um link simbólico para <strong>rescue.target</strong> ). <br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<strong>O nível de execução</strong> 3 é emulado por <strong>multi-user.target</strong> (e <strong>runlevel3.target</strong> é um link simbólico para <strong>multi-user.target</strong> ). <br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<strong>O nível de execução 5</strong> é emulado por <strong>graphical.target</strong>(e <strong>runlevel5.target</strong> é um link simbólico para <strong>graphical.target</strong> ). <br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<strong>O nível de execução 6</strong> é emulado por <strong>reboot.target</strong> (e <strong>runlevel6.target</strong> é um link simbólico para <strong>reboot.target</strong> ). <br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<strong>Emergency</strong> é correspondido por <strong>Emergency.target</strong> .</blockquote><p>O systemd então começará a executar programas de nível de execução.</p><h3 id="6-programas-de-n-vel-de-execu-o"><strong>6. Programas de nível de execução</strong></h3><p>Dependendo de qual distribuição Linux você instalou, você poderá ver diferentes serviços sendo iniciados. Por exemplo, você pode pegar <code>starting sendmail …. OK</code>.</p><p>Eles são conhecidos como programas de nível de execução e são executados a partir de diretórios diferentes, dependendo do nível de execução. Cada um dos 6 níveis de execução descritos acima tem seu próprio diretório:</p><ul><li>Nível de execução 0 –<code>/etc/rc0.d/</code></li><li>Nível de execução 1 –<code>/etc/rc1.d/</code></li><li>Nível de execução 2 –<code>/etc/rc2.d/</code></li><li>Nível de execução 3 –<code>/etc/rc3.d/</code></li><li>Nível de execução 4 –<code>/etc/rc4.d/</code></li><li>Nível de execução 5 –<code>/etc/rc5.d/</code></li><li>Nível de execução 6 –<code>/etc/rc6.d/</code></li></ul><p>Observe que a localização exata desses diretórios varia de distribuição para distribuição.</p><p>Se você procurar nos diferentes diretórios de nível de execução, encontrará programas que começam com "S" ou "K" para inicialização e eliminação, respectivamente. Os programas de inicialização são executados durante a inicialização do sistema e eliminam os programas durante o desligamento.</p><p>Isso é tudo que você precisa saber sobre o processo de inicialização do Linux. Agora vá lá e deixe <a href="https://translate.google.com/website?sl=en&amp;tl=pt&amp;client=webapp&amp;u=https://en.wikipedia.org/wiki/Tux_(mascot)">Tux</a> orgulhoso.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Tutorial de symlink no Linux – Como criar e remover um link simbólico ]]>
                </title>
                <description>
                    <![CDATA[ Um symlink (também chamado de link simbólico) é um tipo de arquivo no Linux que aponta para outro arquivo ou diretório em seu computador. Os symlinks são semelhantes aos atalhos no Windows. Alguns chamam os symlinks de "soft links" – um tipo de link nos sistemas Linux/UNIX – em oposição ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/tutorial-de-symlink-no-linux-como-criar-e-remover-um-link-simbolico/</link>
                <guid isPermaLink="false">619c395fd630de0504ee45a6</guid>
                
                    <category>
                        <![CDATA[ Linux ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Daniel Rosa ]]>
                </dc:creator>
                <pubDate>Tue, 23 Nov 2021 01:16:25 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2021/11/5f9c9b4f740569d1a4ca2b02.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/symlink-tutorial-in-linux-how-to-create-and-remove-a-symbolic-link/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Symlink Tutorial in Linux – How to Create and Remove a Symbolic Link</a>
      </p><p>Um symlink (também chamado de link simbólico) é um tipo de arquivo no Linux que aponta para outro arquivo ou diretório em seu computador. Os symlinks são semelhantes aos atalhos no Windows.</p><p>Alguns chamam os symlinks de "soft links" – um tipo de link nos sistemas Linux/UNIX – em oposição aos "hard links."</p><h2 id="diferen-a-entre-um-soft-link-e-um-hard-link"><strong>Diferença entre um soft link e um hard link</strong></h2><p>Os soft links lembram os atalhos, podendo apontar para outro arquivo ou diretório em qualquer sistema de arquivos.</p><p>Os hard links também são atalhos para pastas e diretórios, mas um hard link não pode ser criado para um arquivo ou diretório em um sistema de arquivos diferente.</p><p>Vamos ver os passos envolvidos na criação e remoção de um symlink. Também veremos o que são links quebrados e como excluí-los.</p><h2 id="como-criar-um-symlink"><strong>Como criar um symlink</strong></h2><p>A sintaxe para a criação de um symlink é:</p><pre><code class="language-shell">ln -s &lt;caminho para o arquivo/diretório a ser vinculado&gt; &lt;caminho do link a ser criado&gt;</code></pre><p><code>ln</code> é o comando para links. A flag <code>-s</code> especifica que o link tem de ser um soft link. O <code>-s</code> também pode ser inserido como <code>-symbolic</code>.</p><p>Por padrão, o comando <code>ln</code> cria hard links. O próximo argumento é o <code>caminho para o arquivo ou diretório</code> para onde você quer fazer um link (ou seja, o arquivo ou diretório para o qual você quer criar um atalho).</p><p>O último argumento é o <code>caminho para o link</code> em si (o atalho).</p><h2 id="como-criar-um-symlink-para-um-arquivo-comando-de-exemplo"><strong>Como criar um symlink para um arquivo – comando de exemplo</strong></h2><pre><code class="language-shell">ln -s /home/james/transactions.txt trans.txt
</code></pre><p>Após executar esse comando, você poderá acessar o arquivo <code>/home/james/transactions.txt</code> usando <code>trans.txt</code>. Qualquer modificação feita em <code>trans.txt</code> será refletida no arquivo original.</p><p>Observe que esse comando acima criará o arquivo de link <code>trans.txt</code> em seu diretório atual. Também é possível criar um arquivo vinculado em um diretório assim:</p><pre><code class="language-shell">ln -s /home/james/transactions.txt my-stuff/trans.txt
</code></pre><p>Deve haver um diretório chamado "my-stuff" no seu diretório atual – do contrário, o comando lançará um erro.</p><h2 id="como-criar-um-symlink-para-um-diret-rio-comando-de-exemplo"><strong>Como criar um symlink para um diretório – comando de exemplo</strong></h2><p>Da mesma forma que acima, podemos usar:</p><pre><code class="language-shell">ln -s /home/james james
</code></pre><p>Isso criaria um diretório vinculado por symlink chamado 'james', que teria o conteúdo de <code>/home/james</code>. Quaisquer mudanças a este diretório vinculado também afetarão o diretório original.</p><h2 id="como-remover-um-symlink"><strong>Como remover um symlink</strong></h2><p>Antes de querer remover um symlink, confirme se o arquivo ou o diretório é um symlink, para não bagunçar seus arquivos.</p><p>Uma maneira de fazer isso é:</p><pre><code class="language-shell">ls -l &lt;caminho do suposto symlink&gt;
</code></pre><p>Ao executar esse comando no seu terminal, serão exibidas as propriedades do arquivo. No resultado, se o primeiro caractere for uma letra L minúscula ('l'), significa que o arquivo/diretório é um symlink.</p><p>Você também verá uma seta (-&gt;) ao final indicando o arquivo/diretório para o qual o symlink aponta.</p><p>Há dois métodos de remover um symlink:</p><h3 id="como-usar-unlink-para-remover-um-symlink"><strong>Como usar unlink para remover um symlink</strong></h3><p>A sintaxe é:</p><pre><code class="language-shell">unlink &lt;caminho para o symlink&gt;
</code></pre><p>Isso exclui o symlink se o processo tiver êxito.</p><p>Mesmo se o symlink estiver na forma de um diretório, não inclua '/', pois o Linux assumirá que é um diretório e <code>unlink</code> não pode excluí-los.</p><h3 id="como-usar-rm-para-remover-um-symlink"><strong>Como usar rm para remover um symlink</strong></h3><p>Como vimos, um symlink é apenas outro arquivo ou diretório que aponta para um arquivo ou diretório original. Para remover essa relação, é possível remover o arquivo vinculado.</p><p>Assim, a sintaxe é:</p><pre><code class="language-shell">rm &lt;caminho para o symlink&gt;
</code></pre><p>Por exemplo:</p><pre><code class="language-shell">rm trans.txt
rm james
</code></pre><p>Observe que tentar executar <code>rm james/</code> resultaria em um erro, pois o Linux assumirá que 'james/' é um diretório, o que exigiria outras opções, como <code>r</code> e <code>f</code>. No entanto, não é isso que queremos. Um symlink pode ser um diretório, mas estamos interessados apenas no nome.</p><p>O benefício principal de <code>rm</code> com relação a <code>unlink</code> é o fato de você poder remover diversos symlinks ao mesmo tempo, do mesmo jeito que você remove arquivos.</p><h2 id="como-encontrar-e-excluir-links-quebrados"><strong>Como encontrar e excluir links quebrados</strong></h2><p>Links quebrados ocorrem quando o arquivo ou o diretório para o qual um symlink aponta muda de caminho ou é excluído.</p><p>Por exemplo, se 'transactions.txt' mudasse de <code>/home/james</code> para <code>/home/james/personal</code>, o link 'trans.txt' estaria quebrado. Qualquer tentativa de acessar o arquivo resultaria em um erro 'No such file or directory' (O arquivo ou diretório não existe). Isso ocorre porque o link não tem conteúdo próprio.</p><p>Ao descobrir links quebrados, você pode excluir o arquivo com facilidade. Um modo fácil de excluir symlinks quebrados é:</p><pre><code class="language-shell">find /home/james -xtype l
</code></pre><p>Isso listará todos os symlinks quebrados no diretório <code>james</code> – de arquivos, diretórios e subdiretórios.</p><p>Ao passar a opção <code>-delete</code>, você os excluirá, dessa forma:</p><pre><code class="language-shell">find /home/james -xtype l -delete
</code></pre><h2 id="para-concluir"><strong>Para concluir</strong></h2><p>Os links simbólicos são um recurso interessante dos sistemas Linux e UNIX.</p><p>Você pode criar symlinks facilmente acessíveis para que eles façam referência a um arquivo ou diretório que, do contrário, não seria de fácil acesso. Com um pouco de prática, você entenderá como eles funcionam em um nível mais intuitivo e eles o deixarão ser muito mais eficiente no gerenciamento de sistemas de arquivos.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ O comando LS do Linux – Como listar arquivos em um diretório e flags de opções ]]>
                </title>
                <description>
                    <![CDATA[ Desde a criação do Unix, na década de 1970, muitos sistemas operacionais o utilizaram em sua base. Muitos desses sistemas não deram certo, enquanto outros tiveram sucesso. O Linux é um dos sistemas operacionais baseados no Unix de mais sucesso. Ele tem o código aberto e é utilizado no mundo ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/o-comando-ls-do-linux-como-listar-arquivos-em-um-diretorio-e-flags-de-opcao/</link>
                <guid isPermaLink="false">6163751d96e54204fe3c3b7b</guid>
                
                    <category>
                        <![CDATA[ Linux ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Daniel Rosa ]]>
                </dc:creator>
                <pubDate>Tue, 12 Oct 2021 05:11:08 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2021/10/article-banner-7.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/the-linux-ls-command-how-to-list-files-in-a-directory-with-options/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">The Linux LS Command – How to List Files in a Directory + Option Flags</a>
      </p><p>Desde a criação do Unix, na década de 1970, muitos sistemas operacionais o utilizaram em sua base. Muitos desses sistemas não deram certo, enquanto outros tiveram sucesso.</p><p>O Linux é um dos sistemas operacionais baseados no Unix de mais sucesso. Ele tem o código aberto e é utilizado no mundo todo e por vários setores.</p><p>Um recurso incrível do sistema operacional Linux é a Command Line Interface (CLI), ou interface de linha de comando, que permite aos usuários interagirem com o computador por meio de um shell. O shell do Linux é um ambiente REPL (de <strong><strong>R</strong></strong>ead, <strong><strong>E</strong></strong>valuate, <strong><strong>P</strong></strong>rint, <strong><strong>L</strong></strong>oop, em inglês), onde os usuários podem inserir um comando e o shell o executa e retorna um resultado.</p><p>O comando <code>ls</code> é um dos vários comandos do Linux que permite que o usuário liste arquivos ou diretórios a partir da CLI.</p><p>Neste artigo, analisarei em detalhes o comando <code>ls</code> e algumas das flags mais importantes de que você precisará diariamente.</p><h2 id="pr-requisitos"><strong>Pré-requisitos</strong></h2><ul><li>Um computador com diretórios e arquivos</li><li>Ter instalada uma das distros do Linux</li><li>Conhecimento básico sobre como navegar na CLI</li><li>Um sorriso no rosto :)</li></ul><h2 id="o-comando-ls-do-linux"><strong>O comando ls do Linux</strong></h2><p>O comando <code>ls</code> é usado para listar arquivos ou diretórios no Linux e em outros sistemas operacionais baseados no Unix.</p><p>Da mesma forma que você navegaria no seu <em>Explorador de arquivos</em> (no Windows) ou no <em><em>Finder</em></em> (no Mac) em uma interface gráfica, o comando <code>ls</code> permite que você liste todos os arquivos ou diretórios no diretório atual por padrão, permitindo uma maior interação com eles pela linha de comando.</p><p>Inicie seu terminal, digite <code>ls</code> e pressione Enter para ver o comando em ação:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-08-20-at-9.40.29-PM.png" class="kg-image" alt="Screenshot-2020-08-20-at-9.40.29-PM" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2021/10/Screenshot-2020-08-20-at-9.40.29-PM.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2021/10/Screenshot-2020-08-20-at-9.40.29-PM.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2021/10/Screenshot-2020-08-20-at-9.40.29-PM.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-08-20-at-9.40.29-PM.png 2000w" sizes="(min-width: 1200px) 1200px" width="2000" height="1277" loading="lazy"></figure><h2 id="como-listar-arquivos-em-um-diret-rio-com-op-es"><strong>Como listar arquivos em um diretório com opções</strong></h2><p>O comando <code>ls</code> também aceita algumas flags (também conhecidas como opções), que são informações adicionais que mudam como os arquivos ou diretórios são listados no seu terminal.</p><p>Em outras palavras, as flags mudam a maneira como o comando <code>ls</code> funciona:</p><pre><code> ls [flags] [diretório]</code></pre><blockquote>Observação: a palavra <strong><strong>conte</strong>údo</strong> usada no decorrer do artigo se refere aos <strong>arquivos<strong> </strong>e <strong>dire</strong>tórios</strong> que estão sendo listados, não ao conteúdo dos arquivos/diretórios de fato.</blockquote><h3 id="listar-arquivos-no-diret-rio-de-trabalho-atual"><strong>Listar arquivos no diretório de trabalho atual</strong></h3><p>Digite o comando <code>ls</code> para listar o conteúdo do diretório de trabalho atual:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-08-20-at-9.40.29-PM-2.png" class="kg-image" alt="Screenshot-2020-08-20-at-9.40.29-PM-2" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2021/10/Screenshot-2020-08-20-at-9.40.29-PM-2.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2021/10/Screenshot-2020-08-20-at-9.40.29-PM-2.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2021/10/Screenshot-2020-08-20-at-9.40.29-PM-2.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-08-20-at-9.40.29-PM-2.png 2000w" sizes="(min-width: 1200px) 1200px" width="2000" height="1277" loading="lazy"></figure><h3 id="listar-arquivos-em-outro-diret-rio"><strong>Listar arquivos em outro diretório</strong></h3><p>Digite o comando <code>ls [caminho do diretório aqui]</code> para listar o conteúdo de outro diretório:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-08-20-at-10.32.52-PM.png" class="kg-image" alt="Screenshot-2020-08-20-at-10.32.52-PM" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2021/10/Screenshot-2020-08-20-at-10.32.52-PM.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2021/10/Screenshot-2020-08-20-at-10.32.52-PM.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2021/10/Screenshot-2020-08-20-at-10.32.52-PM.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-08-20-at-10.32.52-PM.png 2000w" sizes="(min-width: 1200px) 1200px" width="2000" height="1277" loading="lazy"></figure><h3 id="listar-os-arquivos-no-diret-rio-root"><strong>Listar os arquivos no diretório root</strong></h3><p>Digite o comando <code>ls /</code> para listar o conteúdo do diretório root:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-08-20-at-10.46.10-PM.png" class="kg-image" alt="Screenshot-2020-08-20-at-10.46.10-PM" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2021/10/Screenshot-2020-08-20-at-10.46.10-PM.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2021/10/Screenshot-2020-08-20-at-10.46.10-PM.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2021/10/Screenshot-2020-08-20-at-10.46.10-PM.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-08-20-at-10.46.10-PM.png 2000w" sizes="(min-width: 1200px) 1200px" width="2000" height="1277" loading="lazy"></figure><h3 id="listar-arquivos-no-diret-rio-pai"><strong>Listar arquivos no diretório pai</strong></h3><p>Digite o comando <code>ls ..</code> para listar o conteúdo do diretório pai, um nível acima. Use <code>ls ../..</code> para o conteúdo que está dois níveis acima:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-08-20-at-10.48.22-PM.png" class="kg-image" alt="Screenshot-2020-08-20-at-10.48.22-PM" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2021/10/Screenshot-2020-08-20-at-10.48.22-PM.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2021/10/Screenshot-2020-08-20-at-10.48.22-PM.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2021/10/Screenshot-2020-08-20-at-10.48.22-PM.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-08-20-at-10.48.22-PM.png 2000w" sizes="(min-width: 1200px) 1200px" width="2000" height="1277" loading="lazy"></figure><h3 id="listar-arquivos-no-diret-rio-home-do-usu-rio-home-user-"><strong>Listar arquivos no diretório home do usuário (/home/user)</strong></h3><p>Digite o comando <code>ls ~</code> para listar o conteúdo do diretório home do usuário:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-08-20-at-10.51.19-PM.png" class="kg-image" alt="Screenshot-2020-08-20-at-10.51.19-PM" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2021/10/Screenshot-2020-08-20-at-10.51.19-PM.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2021/10/Screenshot-2020-08-20-at-10.51.19-PM.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2021/10/Screenshot-2020-08-20-at-10.51.19-PM.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-08-20-at-10.51.19-PM.png 2000w" sizes="(min-width: 1200px) 1200px" width="2000" height="1277" loading="lazy"></figure><h3 id="listar-somente-diret-rios"><strong>Listar somente diretórios</strong></h3><p>Digite o comando <code>ls -d */</code> para listar somente diretórios:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-08-21-at-12.53.05-PM.png" class="kg-image" alt="Screenshot-2020-08-21-at-12.53.05-PM" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2021/10/Screenshot-2020-08-21-at-12.53.05-PM.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2021/10/Screenshot-2020-08-21-at-12.53.05-PM.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2021/10/Screenshot-2020-08-21-at-12.53.05-PM.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-08-21-at-12.53.05-PM.png 1622w" sizes="(min-width: 1200px) 1200px" width="1622" height="1084" loading="lazy"></figure><h3 id="listar-arquivos-com-subdiret-rios"><strong>Listar arquivos com subdiretórios</strong></h3><p>Digite o comando <code>ls *</code> para listar o conteúdo do diretórios com seus subdiretórios:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-08-21-at-1.07.54-PM.png" class="kg-image" alt="Screenshot-2020-08-21-at-1.07.54-PM" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2021/10/Screenshot-2020-08-21-at-1.07.54-PM.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2021/10/Screenshot-2020-08-21-at-1.07.54-PM.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2021/10/Screenshot-2020-08-21-at-1.07.54-PM.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-08-21-at-1.07.54-PM.png 1622w" sizes="(min-width: 1200px) 1200px" width="1622" height="1084" loading="lazy"></figure><h3 id="listar-arquivos-recursivamente"><strong>Listar arquivos recursivamente</strong></h3><p>Digite o comando <code>ls -R</code> para listar todos os arquivos e diretórios com seus subdiretórios correspondentes até o último arquivo:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-09-01-at-9.04.56-AM.png" class="kg-image" alt="Screenshot-2020-09-01-at-9.04.56-AM" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2021/10/Screenshot-2020-09-01-at-9.04.56-AM.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2021/10/Screenshot-2020-09-01-at-9.04.56-AM.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2021/10/Screenshot-2020-09-01-at-9.04.56-AM.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-09-01-at-9.04.56-AM.png 2000w" sizes="(min-width: 1200px) 1200px" width="2000" height="1277" loading="lazy"></figure><blockquote>Se você tiver muitos arquivos, isso pode levar muito tempo para terminar, já que cada arquivo em cada diretório será exibido. Você pode, em vez disso, especificar um diretório no qual deseja executar esse comando, como <code>ls Downloads -R</code></blockquote><h3 id="listar-arquivos-e-seus-tamanhos"><strong>Listar arquivos e seus tamanhos</strong></h3><p>Digite o comando <code>ls -s</code> (com <strong><strong>s</strong></strong> minúsculo) para listar arquivos e diretórios e seus tamanhos:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-08-21-at-12.30.19-PM.png" class="kg-image" alt="Screenshot-2020-08-21-at-12.30.19-PM" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2021/10/Screenshot-2020-08-21-at-12.30.19-PM.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2021/10/Screenshot-2020-08-21-at-12.30.19-PM.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2021/10/Screenshot-2020-08-21-at-12.30.19-PM.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-08-21-at-12.30.19-PM.png 1622w" sizes="(min-width: 1200px) 1200px" width="1622" height="1084" loading="lazy"></figure><h3 id="listar-arquivos-em-formato-longo"><strong>Listar arquivos em formato longo</strong></h3><p>Digite o comando <code>ls -l</code> para listar o conteúdo do diretório em formato tabela com colunas que incluem:</p><ul><li>permissões do conteúdo</li><li>número de links do conteúdo</li><li>proprietário do conteúdo</li><li>proprietário do grupo do conteúdo</li><li>tamanho do conteúdo em bytes</li><li>última data/hora de modificação do conteúdo</li><li>nome do arquivo ou diretório</li></ul><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-08-20-at-10.52.37-PM.png" class="kg-image" alt="Screenshot-2020-08-20-at-10.52.37-PM" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2021/10/Screenshot-2020-08-20-at-10.52.37-PM.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2021/10/Screenshot-2020-08-20-at-10.52.37-PM.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2021/10/Screenshot-2020-08-20-at-10.52.37-PM.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-08-20-at-10.52.37-PM.png 2000w" sizes="(min-width: 1200px) 1200px" width="2000" height="1277" loading="lazy"></figure><h3 id="listar-arquivos-em-formato-longo-com-tamanhos-de-arquivo-leg-veis"><strong>Listar arquivos em formato longo com tamanhos de arquivo legíveis</strong></h3><p>Digite o comando <code>ls -lh</code> para listar os arquivos ou diretórios no mesmo formato de tabela acima, mas com outra coluna representando o tamanho de cada arquivo/diretório:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-08-21-at-12.14.33-PM.png" class="kg-image" alt="Screenshot-2020-08-21-at-12.14.33-PM" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2021/10/Screenshot-2020-08-21-at-12.14.33-PM.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2021/10/Screenshot-2020-08-21-at-12.14.33-PM.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2021/10/Screenshot-2020-08-21-at-12.14.33-PM.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-08-21-at-12.14.33-PM.png 1622w" sizes="(min-width: 1200px) 1200px" width="1622" height="1084" loading="lazy"></figure><p>Observe que os tamanhos estão listados em bytes (B), megabytes (MB), gigabytes (GB) ou terabytes (TB) quando o tamanho do arquivo ou diretório for maior do que 1024 bytes.</p><h3 id="listar-arquivos-incluindo-arquivos-ocultos"><strong>Listar arquivos incluindo arquivos ocultos</strong></h3><p>Digite o comando <code>ls -a</code> para listar arquivos ou diretórios incluindo arquivos ou diretórios ocultos. No Linux, tudo o que começa com um <code>.</code> é considerado um arquivo oculto:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-08-21-at-11.12.26-AM.png" class="kg-image" alt="Screenshot-2020-08-21-at-11.12.26-AM" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2021/10/Screenshot-2020-08-21-at-11.12.26-AM.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2021/10/Screenshot-2020-08-21-at-11.12.26-AM.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2021/10/Screenshot-2020-08-21-at-11.12.26-AM.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-08-21-at-11.12.26-AM.png 1622w" sizes="(min-width: 1200px) 1200px" width="1622" height="1084" loading="lazy"></figure><h3 id="listar-arquivos-em-formato-longo-incluindo-arquivos-ocultos"><strong>Listar arquivos em formato longo incluindo arquivos ocultos</strong></h3><p>Digite o comando <code>ls -l -a</code>, <code>ls -a -l</code>, <code>ls -la</code> ou <code>ls -al</code> para listar os arquivos ou diretórios em formato de tabela com informações adicionais que incluem os arquivos ou diretórios ocultos:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-08-21-at-12.17.01-PM.png" class="kg-image" alt="Screenshot-2020-08-21-at-12.17.01-PM" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2021/10/Screenshot-2020-08-21-at-12.17.01-PM.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2021/10/Screenshot-2020-08-21-at-12.17.01-PM.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2021/10/Screenshot-2020-08-21-at-12.17.01-PM.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-08-21-at-12.17.01-PM.png 1622w" sizes="(min-width: 1200px) 1200px" width="1622" height="1084" loading="lazy"></figure><h3 id="listar-arquivos-e-orden-los-por-data-e-hora"><strong>Listar arquivos e ordená-los por data e hora</strong></h3><p>Digite o comando <code>ls -t</code> para listar os arquivos ou diretórios e ordená-los pela última data e hora de modificação em ordem descendente (do maior para o menor).</p><p>Você também pode adicionar uma flag <code>-r</code> para inverter a ordenação, dessa forma: <code>ls -tr</code>:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-08-21-at-12.20.09-PM.png" class="kg-image" alt="Screenshot-2020-08-21-at-12.20.09-PM" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2021/10/Screenshot-2020-08-21-at-12.20.09-PM.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2021/10/Screenshot-2020-08-21-at-12.20.09-PM.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2021/10/Screenshot-2020-08-21-at-12.20.09-PM.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-08-21-at-12.20.09-PM.png 1622w" sizes="(min-width: 1200px) 1200px" width="1622" height="1084" loading="lazy"></figure><h3 id="listar-arquivos-e-orden-los-por-tamanho-de-arquivo"><strong>Listar arquivos e ordená-los por tamanho de arquivo</strong></h3><p>Digite o comando <code>ls -S</code> (com <strong><strong>S</strong></strong> maiúsculo) para listar arquivos ou diretórios e ordená-los por tamanho de arquivo em ordem descendente (do maior para o menor).</p><p>Você também pode adicionar uma flag <code>-r</code> para inverter a ordenação, dessa forma: <code>ls -Sr</code>:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-08-21-at-12.20.38-PM.png" class="kg-image" alt="Screenshot-2020-08-21-at-12.20.38-PM" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2021/10/Screenshot-2020-08-21-at-12.20.38-PM.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2021/10/Screenshot-2020-08-21-at-12.20.38-PM.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2021/10/Screenshot-2020-08-21-at-12.20.38-PM.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-08-21-at-12.20.38-PM.png 1622w" sizes="(min-width: 1200px) 1200px" width="1622" height="1084" loading="lazy"></figure><h3 id="listar-arquivos-e-gerar-o-resultado-em-um-arquivo"><strong>Listar arquivos e gerar o resultado em um arquivo</strong></h3><p>Digite o comando <code>ls &gt; output.txt</code> para imprimir o resultado do comando em um arquivo <code>output.txt</code>. Você pode usar qualquer uma das flags discutidas anteriormente, como <code>-la</code>, por exemplo. O ponto importante aqui está no resultado, que será registrado em um arquivo, em vez de exibido na linha de comando.</p><p>Assim, você pode usar o arquivo da maneira que achar interessante, ou ainda registrar o conteúdo do arquivo, com <code>cat output.txt</code>:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-09-01-at-9.12.59-AM.png" class="kg-image" alt="Screenshot-2020-09-01-at-9.12.59-AM" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2021/10/Screenshot-2020-09-01-at-9.12.59-AM.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2021/10/Screenshot-2020-09-01-at-9.12.59-AM.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2021/10/Screenshot-2020-09-01-at-9.12.59-AM.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-09-01-at-9.12.59-AM.png 2000w" sizes="(min-width: 1200px) 1200px" width="2000" height="1277" loading="lazy"></figure><h1 id="conclus-o"><strong>Conclusão</strong></h1><p>Há milhares de outros comandos e combinações que você pode explorar para listar arquivos e diretórios com base em suas necessidades. Algo de que você deve se lembrar é da capacidade de combinar diversos comandos em um só.</p><p>Imagine que você deseja uma lista em formato longo, incluindo arquivos ocultos, e que deseja ordená-los por tamanho de arquivo. O comando seria <code>ls -alS</code>, que é uma combinação de <code>ls -l</code>, <code>ls -a</code> e <code>ls -S</code>.</p><p>Se você se esquecer de qualquer um desses comandos ou se não tiver certeza sobre o que fazer, você pode executar o comando <code>ls --help</code> ou <code>man ls</code>, que exibirão um manual com todas as opções possíveis para o comando <code>ls</code>:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-09-01-at-9.57.37-AM.png" class="kg-image" alt="Screenshot-2020-09-01-at-9.57.37-AM" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2021/10/Screenshot-2020-09-01-at-9.57.37-AM.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2021/10/Screenshot-2020-09-01-at-9.57.37-AM.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2021/10/Screenshot-2020-09-01-at-9.57.37-AM.png 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2021/10/Screenshot-2020-09-01-at-9.57.37-AM.png 2000w" sizes="(min-width: 1200px) 1200px" width="2000" height="1244" loading="lazy"></figure><p>Obrigado por ter lido este artigo!</p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
