UNPKG

arch-wiki-md-repo

Version:

All arch-wiki articles in markdown format, updated every two days.

480 lines (310 loc) 29.7 kB
Artigos relacionados * [Bash](/index.php/Bash "Bash") * [Zsh](/index.php/Zsh "Zsh") * [Recomendações gerais](/index.php/Recomenda%C3%A7%C3%B5es_gerais "Recomendações gerais") * [Projeto GNU](/index.php/Projeto_GNU "Projeto GNU") * [sudo](/index.php/Sudo "Sudo") * [cron](/index.php/Cron "Cron") * [Página man](/index.php/P%C3%A1gina_man "Página man") * [Securely wipe disk#shred](/index.php/Securely_wipe_disk#shred "Securely wipe disk") * [File permissions and attributes](/index.php/File_permissions_and_attributes "File permissions and attributes") * [Color output in console](/index.php/Color_output_in_console "Color output in console") * [Archiving and compression tools](/index.php/Archiving_and_compression_tools "Archiving and compression tools") Este artigo trata dos utilitários chamados *core* ("principais") em um sistema GNU/Linux, como *less*, *ls* e *grep*. O escopo deste artigo inclui, mas não está limitado a, os utilitários incluídos no pacote GNU [coreutils](https://www.archlinux.org/packages/?name=coreutils). O que se segue são várias dicas e truques e outras informações úteis relacionadas a esses utilitários. ## Contents * [1 Comandos básicos](#Comandos_b.C3.A1sicos) * [2 awk](#awk) * [3 cat](#cat) * [4 chmod](#chmod) * [5 chown](#chown) * [6 dd](#dd) * [7 find](#find) * [8 grep](#grep) * [9 iconv](#iconv) * [9.1 Converter um arquivo no lugar](#Converter_um_arquivo_no_lugar) * [10 ip](#ip) * [11 less](#less) * [11.1 Vim como alternativa de paginador](#Vim_como_alternativa_de_paginador) * [12 locate](#locate) * [13 ls](#ls) * [13.1 Formato longo](#Formato_longo) * [13.2 Nomes de arquivos contendo espaços envoltos por aspas](#Nomes_de_arquivos_contendo_espa.C3.A7os_envoltos_por_aspas) * [14 lsblk](#lsblk) * [15 mkdir](#mkdir) * [16 mv](#mv) * [17 od](#od) * [18 pv](#pv) * [19 rm](#rm) * [20 sed](#sed) * [21 seq](#seq) * [22 ss](#ss) * [23 tar](#tar) * [24 which](#which) * [25 wipefs](#wipefs) * [26 Veja também](#Veja_tamb.C3.A9m) ## Comandos básicos A tabela a seguir lista os comandos básicos do shell, cada usuário Linux deve estar familiarizado. Veja as seções abaixo e "Artigos relacionados" para obter detalhes. | Comando | Descrição | Página de manual | Exemplo | | man | Mostra página de manual para um comando | [man(7)](https://jlk.fjfi.cvut.cz/arch/manpages/man/man.7) | man ed | | cd | Muda o diretório (comando embutido no shell) | [cd(1p)](https://jlk.fjfi.cvut.cz/arch/manpages/man/cd.1p) | cd /etc/pacman.d | | mkdir | Cria um diretório | [mkdir(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/mkdir.1) | mkdir ~/novapasta | | rmdir | Remove diretório vazio | [rmdir(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/rmdir.1) | rmdir ~/pastavazia | | rm | Remove um arquivo | [rm(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/rm.1) | rm ~/arquivo.txt | | rm -r | Remove diretório e seu conteúdo | rm -r ~/.cache | | ls | Lista arquivos | [ls(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ls.1) | ls *.mkv | | ls -a | Lista arquivos ocultos | ls -a /home/archie | | ls -al | Lista arquivos ocultos e propriedades de arquivos | | mv | Move um arquivo | [mv(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/mv.1) | mv ~/comprimido.zip ~/archive/comprimido2.zip | | cp | Copia uma arquivo | [cp(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/cp.1) | cp ~/.bashrc ~/.bashrc.bak | | chmod +x | Torna um arquivo [executável](/index.php/Execut%C3%A1vel "Executável") | [chmod(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/chmod.1) | chmod +x ~/.local/bin/meuscript.sh | | cat | Mostrar conteúdo de arquivo | [cat(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/cat.1) | cat /etc/hostname | | strings | Mostra caracteres imprimíveis em arquivos binários | [strings(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/strings.1) | strings /usr/bin/free | | find | Pesquisa por um arquivo | [find(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/find.1) | find ~ -name meuarquivo | | mount | Monta uma partição | [mount(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/mount.8) | mount /dev/sdc1 /media/usb | | df -h | Mostra o espaço restante em todas as partições | [df(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/df.1) | | ps -A | Mostra todos os processos em execução | [ps(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ps.1) | | killall | Mata todas as instâncias em execução de um processo | [killall(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/killall.1) | | ss -at | Exibe uma lista de sockets TCP abertos | [ss(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ss.8) | ## awk [AWK](https://en.wikipedia.org/wiki/pt:AWK "wikipedia:pt:AWK") é uma linguagem de varredura e processamento de padrão. Há várias implementações: * **gawk** — A versão GNU do awk, veja [gawk(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/gawk.1). [https://www.gnu.org/software/gawk/](https://www.gnu.org/software/gawk/) || [gawk](https://www.archlinux.org/packages/?name=gawk) (parte do [base](https://www.archlinux.org/groups/x86_64/base/)) * **nawk** — A única e verdadeira implementação do AWK, veja [nawk(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/nawk.1). [https://www.cs.princeton.edu/~bwk/btl.mirror/](https://www.cs.princeton.edu/~bwk/btl.mirror/) || [nawk](https://www.archlinux.org/packages/?name=nawk) * **mawk** — Uma implementação muito rápida do AWK. [http://invisible-island.net/mawk/](http://invisible-island.net/mawk/) || [mawk](https://aur.archlinux.org/packages/mawk/) * [BusyBox](/index.php/BusyBox "BusyBox") também inclui uma implementação do AWK. ## cat [cat](https://en.wikipedia.org/wiki/pt:cat_(Unix) é um utilitário padrão do Unix que concatena arquivos para a saída padrão. * Porque o *cat* não é embutido no shell, em muitas ocasiões você pode achar mais conveniente usar um [redirecionamento](https://en.wikipedia.org/wiki/Redirection_(computing) "wikipedia:Redirection (computing)"), por exemplo em scripts, ou se você se preocupa muito com desempenho. De fato, `< *arquivo*` faz o mesmo que `cat *arquivo*`. * *cat* pode trabalhar com várias linhas: ``` $ cat << EOF >> *caminho/arquivo* *primeira linha* ... *última linha* EOF ``` Alternativamente, usando `printf`: ``` $ printf '%s ' 'primeira linha' ... 'última linha' ``` * Se você precisa listar linhas na ordem reversa, há um *coreutil* chamado [tac](https://en.wikipedia.org/wiki/tac_(Unix) (*cat* inverso). ## chmod Veja [File permissions and attributes#Changing permissions](/index.php/File_permissions_and_attributes#Changing_permissions "File permissions and attributes"). ## chown Veja [File permissions and attributes#Changing ownership](/index.php/File_permissions_and_attributes#Changing_ownership "File permissions and attributes"). ## dd [dd](https://en.wikipedia.org/wiki/pt:dd_(Unix) é um utilitário para o Unix e sistemas operacionais similares Unix, cujo principal objetivo é converter e copiar um arquivo. Similarmente ao *cp*, por padrão o *dd* faz cópia bit a bit do arquivo, mas com recursos de controle de fluxo de E/S de baixo nível. Alguns aplicativos notáveis de *dd* são: * [Disk cloning#Using dd](/index.php/Disk_cloning#Using_dd "Disk cloning"), * Patches de arquivos binários: digamos que se queira substituir offset `0x123AB` de um arquivo com a sequência hexadecimal `FF C0 14`, isso pode ser feito com a linha de comando: `# printf '\xff\xc0\x14' | dd seek=$((0x123AB)) conv=notrunc bs=1 of=*/caminho/para/arquivo*` Para mais informações, veja [dd(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/dd.1) ou da [documentação completa](https://www.gnu.org/software/coreutils/dd). **Dica:** Por padrão, *dd* emite nada até a tarefa está finalizada. Para monitorar o progresso da operação, adicione a opção `status=progress` ao comando. **Atenção:** Deve-se ter muito cuidado ao usar *dd*, pois, assim como qualquer comando desse tipo, ele pode destruir dados de forma irreversível. ## find *find* é parte do pacote [findutils](https://www.archlinux.org/packages/?name=findutils), que pertence ao grupo de pacotes [base](https://www.archlinux.org/groups/x86_64/base/). **Dica:** [fd](https://www.archlinux.org/packages/?name=fd) é uma alternativa simples, rápida e amigável ao `find` que fornece mais padrões sensíveis (p. ex., ignora arquivos ocultos, diretórios e arquivos listados no `.gitignore`, `fd PADRÃO` em vez de `find -iname '*PADRÃO*'`). Possui saída colorida (semelhante ao `ls`), suporte a Unicode, expressões regulares e muito mais. Provavelmente se esperaria que um comando *find* levasse como argumento um nome de arquivo e pesquisasse no sistema de arquivos para arquivos que correspondessem a esse nome. Para um programa que faz exatamente isso, veja [#locate](#locate) abaixo. Em vez disso, find leva um conjunto de diretórios e combina cada arquivo abaixo deles contra um conjunto de expressões. Este design permite alguns "one-liners" muito poderosos que não seriam possíveis usando o design "intuitivo" descrito acima. Veja [GregsWiki:UsingFind](https://mywiki.wooledge.org/UsingFind "gregswiki:UsingFind") para detalhes de uso. ## grep [grep](https://en.wikipedia.org/wiki/pt:grep "wikipedia:pt:grep") (de *g/re/p*, *global/regular expression/print*, do [ed](https://en.wikipedia.org/wiki/pt:Ed_(software) "wikipedia:pt:Ed (software)")) é um utilitário de pesquisa de texto de linha de comando originalmente escrito para Unix. O comando *grep* pesquisa arquivos ou entrada padrão para linhas correspondendo a uma expressão regular dada, e imprime essas linhas para a saída padrão. * Lembre-se que *grep* trata de arquivos, então um construto como `cat *arquivo* | grep *padrão*` pode ser substituído com `grep *padrão* *arquivo*` * Há alternativas ao *grep* otimizadas para código fonte em VCS, tal como [ripgrep](https://www.archlinux.org/packages/?name=ripgrep), [the_silver_searcher](https://www.archlinux.org/packages/?name=the_silver_searcher) e [ack](https://www.archlinux.org/packages/?name=ack). * Para incluir números de linha de arquivo na saída, use a opção `-n`. * *grep* também pode ser usado para pesquisa hexadecimal em um arquivo binário, para procurar por, digamos, a sequência `A1 F2` em um arquivo, a linha de comando é: `$ LANG=C grep --text --perl-regexp "\xA1\xF2" */caminho/para/arquivo*` **Nota:** Alguns comandos enviam suas saídas para [stderr(3)](https://jlk.fjfi.cvut.cz/arch/manpages/man/stderr.3) e o grep não tem aparente efeito. Neste caso, redirecione *stderr* para *stdout* com `*comando* 2>&1 | grep *args*` ou (par Bash 4) `*comando* |& grep *args*`. Veja também [Redirecionamento de E/S](http://www.tldp.org/LDP/abs/html/io-redirection.html) (inglês). Para suporte a cores, veja [Color output in console#grep](/index.php/Color_output_in_console#grep "Color output in console"). Veja [grep(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/grep.1) para mais detalhes. ## iconv *iconv* converte uma codificação de caracteres de um *codeset* para outro. O seguinte comando vai converter o arquivo `*foo*` de ISO-8859-15 para UTF-8, salvando-o em `*foo*.utf`: ``` $ iconv -f ISO-8859-15 -t UTF-8 *foo* > *foo*.utf ``` Veja [iconv(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/iconv.1) para mais detalhes. ### Converter um arquivo no lugar **Dica:** Você pode usar [recode](https://www.archlinux.org/packages/?name=recode) em vez do iconv se você não deseja tocar no mtime. Ao contrário do [sed](#sed), *iconv* não fornece uma opção para converter um arquivo no lugar onde se encontra. Porém, `sponge` do pacote [moreutils](https://www.archlinux.org/packages/?name=moreutils) pode ajudar: ``` $ iconv -f WINDOWS-1251 -t UTF-8 *foobar*.txt | sponge *foobar*.txt ``` Veja [sponge(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/sponge.1) para detalhes. ## ip [ip](https://en.wikipedia.org/wiki/Iproute2 "wikipedia:Iproute2") permite que você mostre informações sobre dispositivos de rede, endereços IP, tabelas de roteamento e outros objetos no Linux. Software de [IP](https://en.wikipedia.org/wiki/pt:Protocolo_de_Internet "wikipedia:pt:Protocolo de Internet"). Ao anexar vários comandos, você também pode manipular ou configurar a maioria desses objetos. **Nota:** O utilitário *ip* é fornecido pelo pacote [iproute2](https://www.archlinux.org/packages/?name=iproute2), que está incluído no grupo [base](https://www.archlinux.org/groups/x86_64/base/). | Objeto | Propósito | Página de manual | | ip addr | gerenciamento de endereço de protocolo | [ip-address(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ip-address.8) | | ip addrlabel | gerenciamento de rótulo de endereço de protocolo | [ip-addrlabel(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ip-addrlabel.8) | | ip l2tp | tunelamento de Ethernet over IP (L2TPv3) | [ip-l2tp(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ip-l2tp.8) | | ip link | configuração de dispositivo de rede | [ip-link(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ip-link.8) | | ip maddr | gerenciamento de endereços de multicast | [ip-maddress(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ip-maddress.8) | | ip monitor | monitore por mensagens de netlink | [ip-monitor(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ip-monitor.8) | | ip mroute | gerenciamento de cache de roteamento de multicast | [ip-mroute(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ip-mroute.8) | | ip mrule | regra no banco de dados de política de roteamento multicast | | ip neigh | gerenciamento de tabelas de vizinhança/ARP | [ip-neighbour(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ip-neighbour.8) | | ip netns | gerenciamento de espaço de nome de rede de processo | [ip-netns(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ip-netns.8) | | ip ntable | configuração de tabela de vizinhança | [ip-ntable(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ip-ntable.8) | | ip route | gerenciamento de tabela de roteamento | [ip-route(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ip-route.8) | | ip rule | gerenciamento de banco de dados de políticas de roteamento | [ip-rule(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ip-rule.8) | | ip tcp_metrics | gerenciamento para Métricas de TCP | [ip-tcp_metrics(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ip-tcp_metrics.8) | | ip tunnel | configuração de tunel | [ip-tunnel(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ip-tunnel.8) | | ip tuntap | gerencia dispositivos TUN/TAP | | ip xfrm | gerencia políticas IPsec | [ip-xfrm(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ip-xfrm.8) | O comando `help` está disponível para todos os objetos. Por exemplo, digitar `ip addr help` mostrará a você a sintaxe de comando disponível para o objeto do endereço. Para uso avançado, veja o [documentação do iproute2](http://www.policyrouting.org/iproute2.doc.html). O artigo [Configuração de rede](/index.php/Configura%C3%A7%C3%A3o_de_rede "Configuração de rede") mostra como o comando *ip* é usado na prática para várias tarefas comuns. **Nota:** Você pode estar familiarizado com o comando [ifconfig](https://en.wikipedia.org/wiki/ifconfig "wikipedia:ifconfig"), que era usado em versões antigas do Linux para configuração de interface. Ele está obsoleto no Arch Linux; em vez dele, você deve usar o *ip*. ## less [less](https://en.wikipedia.org/wiki/pt:less e [pg](https://en.wikipedia.org/wiki/pg_(Unix) "wikipedia:pg (Unix)"), *less* oferece uma interface mais avançada e um [conjunto de recursos](http://www.greenwoodsoftware.com/less/faq.html) mais completo. Veja [List of applications#Terminal pagers](/index.php/List_of_applications#Terminal_pagers "List of applications") para alternativas. ### Vim como alternativa de paginador [Vim](/index.php/Vim "Vim") inclui um script para visualizar o conteúdo de arquivos texto, arquivos comprimidos, binários e diretórios. Adicione a seguinte linha para o arquivo de configuração do seu shell para usá-lo como paginador: `~/.bashrc` `alias less='/usr/share/vim/vim80/macros/less.sh'` Há também uma alternativa para a macro *less.sh*, que pode funcionar como a variável de ambiente `PAGER`. Instale [vimpager](https://www.archlinux.org/packages/?name=vimpager) e adicione o seguinte para o arquivo de configuração do seu shell: `~/.bashrc` ``` export PAGER='vimpager' alias less=$PAGER ``` Agora, programas que usam a variável de ambiente `PAGER`, como o [git](/index.php/Git "Git"), vão usar *vim* como paginador. ## locate [Instale](/index.php/Instale "Instale") o pacote [mlocate](https://www.archlinux.org/packages/?name=mlocate). O pacote contém uma unidade `updatedb.timer`, que invoca uma atualização do banco de dados a cada dia. O temporizador é ativado logo após a instalação, [inicie](/index.php/Inicie "Inicie") manualmente se você quiser usá-lo antes de reiniciar. Você também pode executar manualmente *updatedb* como root a qualquer momento. Por padrão, os caminhos como `/media` e `/mnt` são ignorados, portanto, *locate* pode não descobrir arquivos em dispositivos externos. Veja a [updatedb(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/updatedb.8) para obter detalhes. O comando *locate* é uma ferramenta Unix comum para encontrar rapidamente arquivos pelo nome. Ele oferece melhorias de velocidade ao longo da ferramenta [find](https://en.wikipedia.org/wiki/pt:Find "wikipedia:pt:Find") pesquisando um arquivo de banco de dados pré-construído, em vez do sistema de arquivos diretamente. A desvantagem dessa abordagem é que as mudanças feitas desde a construção do arquivo de banco de dados não podem ser detectadas pelo *locate*. Antes que o *locate* possa ser usado, o banco de dados precisará ser criado. Para fazer isso, execute `updatedb` como root. Veja também [How locate works and rewrite it in one minute](http://jvns.ca/blog/2015/03/05/how-the-locate-command-works-and-lets-rewrite-it-in-one-minute/) ("Como locate funciona e rescreva-o em um minuto"). ## ls [ls](https://en.wikipedia.org/wiki/pt:ls "wikipedia:pt:ls") lista conteúdos de diretório. Veja `info ls` ou [o manual online](https://www.gnu.org/software/coreutils/manual/html_node/ls-invocation.html#ls-invocation) para mais informações. [exa](https://the.exa.website) é uma alternativa moderna e mais amigável para o `ls` e `tree`, que possui mais recursos, tal como exibir modificações [Git](/index.php/Git "Git") junto com nomes de arquivos, colorizando diferentemente cada coluna no modo `--long`, ou exibindo no modo `--long` metadados junto com uma visão `tree`. [exa](https://www.archlinux.org/packages/?name=exa) ### Formato longo A opção `-l` exibe alguns metadados, por exemplo: `$ ls -l */caminho/para/diretório*` ``` total 128 drwxr-xr-x 2 archie users 4096 Jul 5 21:03 'Área de trabalho' drwxr-xr-x 6 archie users 4096 Jul 5 17:37 Documentos drwxr-xr-x 2 archie users 4096 Jul 5 13:45 Downloads -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 clientes.ods -rw-r--r-- 1 archie users 3339 Jun 27 08:28 'a fazer' -rwxr-xr-x 1 archie users 2048 Jul 6 12:56 meuscript.sh ``` O valor `total` representa a alocação de disco total para os arquivos no diretório, por padrão em número de blocos. Abaixo, cada arquivo e subdiretório está representado por uma linha dividida em 7 campos de metadados, na ordem a seguir: * tipo e permissões: * o primeiro caractere é o tipo de entrada, veja `info ls -n "What information is listed"` para uma explicação de todos os tipos possíveis; por exemplo: * `-` denota um arquivo normal; * `d` denota um diretório, isto é, uma pasta contendo outros arquivos ou pastas; * `p` denota um pipe dado (também conhecido como FIFO); * `l` denota um link simbólico; * os caracteres restantes são [permissões](/index.php/Permissions "Permissions") da entrada; * número de [links absolutos](https://en.wikipedia.org/wiki/Hard_link "wikipedia:Hard link") para a entidade; arquivos serão pelo menos 1, isto é, a própria referência mostrada; as pastas terão pelo menos 2: a referência mostrada, entrada `.` autorreferenciada, e então uma entrada `..` em cada uma dessas subpastas; * nome do [usuário](/index.php/Usu%C3%A1rio "Usuário") dono; * nome do [grupo](/index.php/Grupo "Grupo"); * tamanho; * marca de tempo da última modificação; * nome da entidade. ### Nomes de arquivos contendo espaços envoltos por aspas Por padrão, nomes de arquivos e diretórios que contêm espaços são exibidos envoltos por aspas simples. Para alterar esse comportamento, use as opções `-N` ou `--quoting-style=literal`. Alternativamente, defina a [variável de ambiente](/index.php/Vari%C3%A1vel_de_ambiente "Variável de ambiente") `QUOTING_STYLE` para `literal`. [[1]](https://unix.stackexchange.com/questions/258679/why-is-ls-suddenly-surrounding-items-with-spaces-in-single-quotes) ## lsblk [lsblk(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/lsblk.8) vai mostrar todos os [dispositivos de blocos](https://en.wikipedia.org/wiki/pt:Arquivo_de_dispositivo#Dispositivos_de_bloco "wikipedia:pt:Arquivo de dispositivo") disponíveis junto com seus esquemas de particionamento, por exemplo: `$ lsblk -f` ``` NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 vfat C4DA-2C4D /boot ├─sda2 swap 5b1564b2-2e2c-452c-bcfa-d1f572ae99f2 [SWAP] └─sda3 ext4 56adc99b-a61e-46af-aab7-a6d07e504652 / ``` O início do nome do dispositivo especifica o tipo de dispositivo de bloco. A maioria dos dispositivos de armazenamento modernos (por exemplo, discos rígidos, [SSDs](/index.php/SSD "SSD") e unidades flash USB) é reconhecida como disco SCSI (`sd`). O tipo é seguido por uma letra minúscula a partir de `a` para o primeiro dispositivo (`sda`), `b` para o segundo dispositivo (`sdb`), e assim por diante. As partições "existentes" em cada dispositivo serão listadas com um número a partir de `1` para a primeira partição (`sda1`), `2` para a segunda (`sda2`), e assim por diante. No exemplo acima, apenas um dispositivo está disponível (`sda`) e esse dispositivo possui três partições (`sda1` para `sda3`), cada uma com um [sistema de arquivo](/index.php/File_system "File system"). Outros tipos comuns de dispositivos de blocos incluem, por exemplo, `mmcblk` para cartões de memória e `nvme` para dispositivos [NVMe](/index.php/NVMe "NVMe"). Tipos desconhecidos podem ser pesquisados na [documentação do kernel](https://web.archive.org/web/20161221203124/https://www.kernel.org/doc/Documentation/devices.txt). ## mkdir [mkdir](https://en.wikipedia.org/wiki/pt:mkdir "wikipedia:pt:mkdir") cria diretórios. Para criar um diretório e toda sua hierarquia, a opção `-p` é usada; do contrário, um erro é impresso. Como os usuários devem saber o que eles querem, a opção `-p` pode ser usada como padrão: ``` alias mkdir='mkdir -p -v' ``` A opção `-v` o torna verboso. Alterar o modo de um diretório recém-criado usando *chmod* não é necessário como a opção `-m` permite que você defina as permissões de acesso. **Dica:** Se você já quer um diretório temporário, uma alternativa melhor pode ser o [mktemp](https://en.wikipedia.org/wiki/Temporary_file "wikipedia:Temporary file"): `mktemp -d`. ## mv [mv](https://en.wikipedia.org/wiki/pt:mv_(Unix) move e renomeia arquivos e diretórios. Para limitar dano potencial causado pelo comando, use um alias: ``` alias mv='timeout 8 mv -iv' ``` Esse alias suspende *mv* após 8 segundos, pede confirmação antes de sobrescrever quaisquer arquivos existentes, lista as operações em progresso e não armazena ele mesmo no arquivo de histórico do shell se o shell estiver configurado para ignorar comandos iniciando com espaço. ## od O comando [od](https://en.wikipedia.org/wiki/od_(Unix) (*o*ctal *d*ump) é útil para visualizar dados que não estejam em um formato legível por humanos, como o código executável de um programa, ou o conteúdo de um dispositivo não formatado. Veja o [manual](https://www.gnu.org/software/coreutils/manual/html_node/od-invocation.html#od-invocation) para mais informações. ## pv Você pode usar [pv](https://www.archlinux.org/packages/?name=pv) (*pipe viewer*) para monitorar o progresso de dados por meio de um *pipeline*, por exemplo: ``` # dd if=*/origem/fluxo_arquivo* | pv -*opções_monitoramento* -s *tam_de_arquivo* | dd of=*/destino/fluxo_arquivo* ``` Na maioria dos casos, `pv` funciona como um substituto para `cat`. ## rm [rm](https://en.wikipedia.org/wiki/pt:rm_(Unix) remove arquivos ou diretórios. Para limitar danos potenciais causados pelo comando, use um alias: ``` alias rm='timeout 3 rm -Iv --one-file-system' ``` Este alias suspende *rm* após três segundos, solicita confirmação para excluir três ou mais arquivos, lista as operações em andamento, não envolve mais de um sistema de arquivos e não se armazena no arquivo de histórico de shell se o shell estiver configurado para ignorar os comandos iniciais do espaço. Substitua `-I` por `-i` se preferir confirmar mesmo para um arquivo. Usuários do zsh podem querer colocar `noglob` antes de `timeout` para evitar expansões implícitas. Para remover diretórios que se acredita estarem vazios, use *rmdir*, pois ele falha se houver arquivos dentro do alvo. ## sed [sed](https://en.wikipedia.org/wiki/pt:sed "wikipedia:pt:sed") é um editor do fluxo para filtrar e transformar texto. Aqui está uma [lista](http://sed.sourceforge.net/sed1line.txt) útil de exemplos de um só linha com *sed*. **Dica:** Alternativas mais poderosa são [awk](#awk) e o idioma [Perl](/index.php/Perl "Perl"). ## seq *seq* imprime uma sequência de números. Alternativas embutidas em shell estão disponíveis, então é de boa prática usá-las como explicado no [Wikipédia](https://en.wikipedia.org/wiki/Seq_(Unix) "wikipedia:Seq (Unix)"). ## ss *ss* é um utilitário par investigar portas de rede e é parte do pacote [iproute2](https://www.archlinux.org/packages/?name=iproute2) no grupo [base](https://www.archlinux.org/groups/x86_64/base/). Tem uma funcionalidade similar ao utilitário [obsoleto](http://www.archlinux-br.org/noticias/155/) netstat. Uso comum inclui: Exiba todos os soquetes TCP com nomes de serviços: ``` $ ss -at ``` Exiba todos os soquetes TCP com números de portas: ``` $ ss -atn ``` Exiba todos os soquetes UDP: ``` $ ss -au ``` Para mais informações, veja [ss(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/ss.8) ou `ss.html` do pacote [iproute2](https://www.archlinux.org/packages/?name=iproute2). ## tar Como um formato de arquivamento antigo do Unix, arquivos .tar – conhecidos como "tarballs" – são amplamente usados para empacotamento nos sistema operacionais tipo Unix. Os pacotes de tanto o [pacman](/index.php/Pacman_(Portugu%C3%AAs) "Pacman (Português)") quanto [AUR](/index.php/AUR_(Portugu%C3%AAs) "AUR (Português)") são comprimidos em tarballs, e o Arch usa o programa *tar* do [Projeto GNU](/index.php/Projeto_GNU "Projeto GNU") por padrão. Para pacotes *.tar*, *tar* por padrão vai extrair o arquivo conforme sua extensão: ``` $ tar xvf *arquivo.EXTENSÃO* ``` Forçando um formato dado: | Tipo de arquivo | Comando de extração | | `*arquivo*.tar` | `tar xvf *arquivo*.tar` | | `*arquivo*.tgz` | `tar xvzf *arquivo*.tgz` | | `*arquivo*.tar.gz` | `tar xvzf *arquivo*.tar.gz` | | `*arquivo*.tar.bz` | `bzip -cd *arquivo*.bz | tar xvf -` | | `*arquivo*.tar.bz2` | `tar xvjf *arquivo*.tar.bz2` `bzip2 -cd *arquivo*.bz2 | tar xvf -` | | `*arquivo*.tar.xz` | `tar xvJf *arquivo*.tar.xz` `xz -cd *arquivo*.xz | tar xvf -` | | `*arquivo*.tar.zst` | `tar -I zstd xvf *arquivo*.tar.zst` | A construção de alguns dos argumentos do *tar* podem ser considerado legado, mas eles ainda são úteis ao realizar operações específicas. Veja [tar(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/tar.1) para detalhes. ## which [which](https://en.wikipedia.org/wiki/Which_(Unix) mostra o caminho completo de comandos shells. No exemplo a seguir, o caminho completo de `ssh` é usado como argumento para `journalctl`: ``` # journalctl $(which sshd) ``` ## wipefs *wipefs* pode listar ou apagar assinaturas de [sistema de arquivos](/index.php/File_system "File system"), [RAID](/index.php/RAID "RAID") ou [tabela de partições](/index.php/Partition "Partition") (strings mágicas) do dispositivo específico. Ela não apaga os sistemas de arquivos em si nem quaisquer outros dados do dispositivo. Veja [wipefs(8)](https://jlk.fjfi.cvut.cz/arch/manpages/man/wipefs.8) para mais informações. Por exemplo, para apagar todas as assinaturas do dispositivo `/dev/sdb` e criar uma arquivo backup de assinatura `~/wipefs-sdb-*deslocamento*.bak` para cada assinatura: ``` # wipefs --all --backup /dev/sdb ``` ## Veja também * [Uma amostra do coreutils](http://www.reddit.com/r/commandline/comments/19garq/a_sampling_of_coreutils_120/) [, parte 2](http://www.reddit.com/r/commandline/comments/19ge6v/a_sampling_of_coreutils_2040/) [, parte 3](http://www.reddit.com/r/commandline/comments/19j1w3/a_sampling_of_coreutils_4060/) - Visão geral de comandos no coreutils * [Documentação online do GNU Coreutils](https://www.gnu.org/software/coreutils/manual/coreutils.html) * [Aprenda o comando DD](https://www.linuxquestions.org/questions/linux-newbie-8/learn-the-dd-command-362506/)