Links de salto
- Geração de números básicos
- Gerar sequências formatadas
- Gerar arquivos de teste com texto
- Repita um comando um número específico de vezes
- Crie registro de data e hora ou intervalos de tempo
- Verifique a disponibilidade da porta
- Loop através de faixas de scripts
- Arquivos divididos com base em linhas
- Realize operações matemáticas
O comando SEQ é muito mais do que uma impressora numérica simples. É um bloco de construção fundamental que você pode usar para criar arquivos de teste, controlar loops, executar verificações de rede e executar cálculos matemáticos. Aqui estão algumas maneiras comuns de usar o comando SEQ.
Geração de números básicos
Na sua essência, o SEQ imprime os números em sequência. Você só precisa dar um único número e ele contará de 1 até esse número. Por exemplo:
seq 5 Isso imprime números de 1 a 5. Essa é a forma mais simples, mas a mágica começa quando você ajusta o início, o passo, o formato ou o tubo da saída em outros comandos.
Por exemplo, se você deseja começar de um número específico, forneça um número inicial como o primeiro argumento e um número final como o segundo.
seq 3 7
Isso gerará números de 3 a 7 (ou seja, 3, 4, 5, 6, 7).
Às vezes, você precisa pular números em uma sequência, como gerar apenas números uniformes ou contar por cinco. O argumento de incremento, colocado entre os valores de início e final, lida com isso. Por exemplo, para gerar números ímpares de 1 a 10, use uma etapa de 2:
seq 1 2 10
Este comando diz ao SEQ para começar em 1, subir para 10, mas tome medidas de 2, produzindo 1, 3, 5, 7 e 9.
Você também pode contar para trás. Para fazer isso, forneça um valor de incremento negativo como este:
seq 10 -1 1
Isso imprime números de 10 para 1 com um incremento de -1.
Gerar números de ponto flutuante
O SEQ não se limita a números inteiros; Ele lida com números de ponto flutuante (decimal) com a mesma facilidade. Isso é útil para cálculos científicos ou ao trabalhar com dados que requerem precisão decimal.
Por exemplo, para contar de 0,5 a 2,0 em incrementos de 0,3, execute:
seq 0.5 0.3 2.0
E você receberá uma sequência de decimais com tamanho de etapa específica.
Usando um separador personalizado
Por padrão, o SEQ separa cada número com um caractere novo. O sinalizador -s (separador) permite definir um separador personalizado. Por exemplo, para gerar números de 1 a 5 em uma única linha separada por uma vírgula e um espaço, execute:
seq -s ", "15 Como alternativa, você pode canalizar a saída para XARGs para colocar todos os números em uma única linha separada por espaços. Xargs lê itens da entrada padrão e os converte em argumentos para outro comando (por padrão, eco).
seq 1 10 | xargs
Gerar sequências formatadas
Digamos que você queira gerar números de 1 a 10, mas deseja que todos tenham dois dígitos com um zero líder. Para conseguir isso, você pode usar a opção -f junto com um especificador de formato como este:
seq -f "%02g" 1 10
Aqui, %G é o formato do número padrão e 02 diz a Seq para que o número tenha 2 dígitos de largura com zeros principais.
Para a tarefa comum de simplesmente preencher todos os números com os zeros principais para ter a mesma largura, o SEQ fornece o sinalizador ainda mais simples -w (largura igual).
seq -w 1 100
Este comando garante que todos os números tenham igual largura adicionando zeros líderes, produzindo 001, 002 e 099 a 100.
Esse tipo de formatação também é perfeita para criar arquivos acolchoados com zero que classificam corretamente. Ao combinar o SEQ com o Touch e o XARGS, você pode gerar vários arquivos vazios. Por exemplo, para criar 5 arquivos de texto vazios e acolchoados com zero, execute isso:
seq -f "text_%02g.txt" 1 5 | xargs touch
Depois de executar isso, você terá uma lista de arquivos (text_01.jpg, text_02.jpg, etc.) que sempre classificarão no pedido numérico correto. Você também pode gerar arquivos com nomes baseados em data:
seq -f "2025-03-%02g.txt" 1 31 | xargs touch
Esse loop fornece arquivos para todos os dias de março de 2025.
Gerar arquivos de teste com texto
Além de gerar números, você pode usar o SEQ para criar arquivos de teste com dados fictícios. Basta combinar seq com tubulação e redirecionamento junto com o loop for.
Por exemplo, para testar um script, você pode precisar de arquivos fictícios com algum conteúdo. Este script cria cinco arquivos, cada um contendo uma linha de texto indicando seu número:
for i in $(seq 15); do
echo"This is test file number $i" > testfile_$i.txt
done Além disso, eu também recomendo o uso da opção -w (seq -w 1 5) para os números do PAD, para que os arquivos classificem bem.
Você também pode gerar arquivos com várias linhas de conteúdo. O script a seguir cria cinco arquivos, cada um contendo 100 linhas numeradas de maneira única:
for i in $(seq 15); do
for line in $(seq 1100); do
echo"File $i, Line $line: Some random content here"
done > "file_$i.txt"
done Aqui, o loop externo itera sobre os números de 1 a 5 para nomes de arquivos, enquanto o loop interno gera 100 linhas por arquivo, com a saída redirecionada para um arquivo nomeado com base no contador do loop externo.
Repita um comando um número específico de vezes
Às vezes, você precisa executar um comando várias vezes quando se preocupa apenas com a repetição, não com os números reais. Por exemplo, você pode estar testando a latência da rede com ping ou executando um script repetidamente para verificar um bug. O SEQ fornece uma maneira limpa de fazer isso sem escrever um loop tradicional para o loop.
Por exemplo, você pode usar o SEQ com XARGs para aplicações de teste de estresse ou verificar se um serviço iniciar corretamente.
seq 10 | xargs -I {} curl -s http://mywebsite.com > /dev/nullEste comando atinge o site dez vezes, o que pode ajudá -lo a verificar se o seu servidor da Web lida com solicitações simultâneas corretamente.
O SEQ também combina lindamente com loops para repetir ações. Para imprimir olá, mundo! Cinco vezes, você pode usar:
for i in $(seq 15); do
echo"Hello, world!";
done Isso imprime a mensagem cinco vezes.
Crie registro de data e hora ou intervalos de tempo
Outro excelente caso de uso do SEQ está gerando uma série de registros de data e hora, especialmente ao criar dados de teste ou simular logs. Eles poderiam representar segundos, minutos ou dias.
Suponha que você precise de uma lista de cada intervalo de 15 minutos em uma hora para um relatório.
seq -f "%02g" 0 15 59
Isso produz 00, 15, 30 e 45.
Você também pode gerar registros de data e hora precisos. Este exemplo imprime um registro de data e hora para cada minuto nos próximos 10 minutos:
start=$(date +%s)
for i in $(seq 09); do
echo "$(date -d "@$((start + i*60))" +"%Y-%m-%d %H:%M:%S")"
done O script imprime todos os 10 futuros registros de data e hora imediatamente. Não aguarda um minuto entre as saídas. Se você deseja um ticker em tempo real que imprime uma linha por minuto, adicione o sono 60 dentro do loop.
Para criar registros de data e hora em um formato HH: MM por uma hora inteira, você pode usar um loop simples:
for minute in $(seq -f "%02g"059); do
echo"14:$minute"
done Isso listará 14:00, 14:01, até 14:59. É uma maneira poderosa de gerar dados de séries temporais estruturadas diretamente do seu terminal.
Verifique a disponibilidade da porta
Se você é um administrador ou desenvolvedor do sistema, também pode usar o SEQ para digitalizar uma variedade de portas e verificar sua disponibilidade. Por exemplo, pode ser necessário implantar um aplicativo, mas não tem certeza de qual porta é gratuita. Vamos escanear uma variedade de portas em sua máquina local para ver quais estão abertas.
Podemos usar o SEQ para gerar números de porta e colocá -los em um utilitário de rede como o NC para verificar as conexões.
for port in $(seq 80008010); do
nc -z -v -w 1 localhost $port &> /dev/null && echo"Port $port is OPEN"
done Aqui está um colapso do comando:
- Para porta em $ (SEQ 8000 8010): Loops através de cada número da porta.
- NC -Z -V -W 1 localhost $ PORT: Este é o comando principal que tenta uma conexão.
- -z: varredura para serviços de escuta sem enviar dados.
- -v: fornece saída detalhada (que escondemos).
- -w 1: define um tempo limite de 1 segundo.
- &> /dev /null: redireciona toda a saída da NC para que vemos apenas nossa mensagem final.
- && echo “Port $ porta está aberto”: o operador && garante que o comando echo seja executado apenas se o comando NC for bem -sucedido (ou seja, a porta estiver aberta).
Esses métodos requerem privilégios e ferramentas apropriados. Use -os com responsabilidade e somente em sistemas que você possui ou tem permissão para testar.
Como alternativa, você pode usar um recurso específico de bash que não requer NC:
for port in $(seq 80008100); do
(echo > /dev/tcp/localhost/$port) &> /dev/null && echo"Port $port is open"
done Para verificação séria de portas, você deve usar ferramentas dedicadas como o NMAP, mas para verificações rápidas durante o desenvolvimento, esse método SEQ funciona muito bem.
Loop através de faixas de scripts
Enquanto o Bash tem seus próprios caminhos de criar loops, o uso do SEQ geralmente é mais portátil e legível, especialmente para intervalos complexos ou números de ponto flutuante. Ao escrever scripts, o SEQ torna limpa e limpa os loops em faixas numéricas.
Por exemplo, para processar um lote de itens entre dois pontos, você pode definir variáveis de partida e final. O loop lida com o resto:
#!/bin/bash
START_ITEM=25
END_ITEM=75
echo"Starting to process items from $START_ITEM to $END_ITEM..."
for item_number in $(seq $START_ITEM $END_ITEM); do
echo"Processing item #$item_number..."
sleep 0.1# simulate work
done
echo"All items processed!" Esse script é fácil de manter, você só precisa alterar as variáveis na parte superior.
Além disso, você pode aplicar a mesma idéia a cenários do mundo real, como o processamento de dados em lote. Por exemplo, você pode verificar o uso do disco para uma série de diretórios numerados usando isso:
for i in $(seq 110); do
du -sh /var/log/archive_$i 2>/dev/null
done Como o SEQ suporta o preenchimento, você pode manter tudo ordenadamente encomendado. Criar backups diários para um mês inteiro se torna direto com:
for day in $(seq -w 131); do
tar -czf backup_2025-09-$day.tar.gz /data
done Este liner cria 31 arquivos compactados com nomes adequadamente formatados (backup_2025-09-01.tar.gz, etc.), o que facilita muito a classificação e a recuperação.
Arquivos divididos com base em linhas
Se você precisar dividir um arquivo grande em pedaços menores, o SEQ poderá ajudá -lo a calcular as faixas de linha para cada pedaço. Enquanto o comando dividido foi projetado para isso, o uso do SEQ oferece mais controle granular sobre o processo e a nomeação de arquivos.
Por exemplo, para dividir o BigFile em pedaços de 100 linhas cada, execute o seguinte:
lines=$(wc -l < bigfile)
for startin $(seq 1100 $lines); do
end=$((start + 99))
sed -n "${start},${end}p" bigfile > chunk_$(printf"%04d"$start).txt
done Este script recebe pela primeira vez a contagem total de linhas. O loop for usa então seq para gerar o número da linha de partida para cada pedaço (1, 101, 201, etc.). Dentro do loop, sed extratos que blocos de linhas e o salvam em um arquivo nomeado exclusivo.
Realize operações matemáticas
O SEQ é um ótimo companheiro para calculadoras de linha de comando como BC e AWK. Você pode colocar uma série de números diretamente em outro programa para realizar um cálculo.
Para somar todos os números de 1 a 100, use isto:
seq -s "+" 1 100 | bc
Aqui, em vez de separar números com as novas linhas, colocamos um sinal A + entre eles. A saída é uma única sequência enviada como entrada para BC, que avalia a expressão.
Com o AWK, você pode alcançar o mesmo resultado:
seq 1 100 | awk '{s+=$1} END{print s}'Esse padrão de geração, formatação e cálculo é extremamente útil para análise de dados rápida na linha de comando.
Embora o SEQ pareça uma utilidade menor, ele resolve elegantemente muitos pequenos problemas repetitivos. Ele combina com outros comandos Linux para criar um poderoso frasco e scripts, tornando-o uma ferramenta essencial para qualquer usuário da linha de comando.