Olá, Mayara. Tudo bem?
Os comandos no Linux funcionam baseados em fluxo de dados ou stream. Os dados entram em uma ponta, são processados pelo comando e saem por outra ponta. A entrada padrão desse fluxo é o que você digita no teclado e a saída padrão é a tela do terminal.
Os comandos também permitem que essa entrada, ao invés de ser feita pelo que você escreve, seja feita por arquivos como o que o cat
faz quando você passa um arquivo para ele. Na verdade, até mesmo a entrada padrão é implementada como um arquivo, mas esse detalhe é mais avançado e pode ficar pra depois.
Quando você não passa nenhum arquivo para o cat
, ele vai ser executado usando a entrada padrão do terminal. Quando você digita algo e pressiona a tecla enter, o cat
usa aquilo que você digitou como input para o programa, processa e mostra o resultado. Como você passou a opção -n
, ele vai enumerar aquela entrada que você passou. Ele vai fazer isso até identificar que não tem mais entradas para processar. Os arquivos possuem um "caractere" especial que indica que eles acabaram, o EOF - End Of File (fim do arquivo). Mas como não estamos processando um arquivo propriamente dito, temos que dar um jeito de mandar um sinal para indicar o fim.
Esse sinal é mandado pressionando Ctrl + D, é o sinal chamado EOF, que identifica que o arquivo terminou. Quando você mandar o EOF, o cat entende que chegou no fim do arquivo que ele estava lendo e para a execução.
Outra forma de parar é pressionando Ctrl + C, mas nesse caso é um sinal mais geral de interromper a execução do processo que está rodando.
Espero ter ajudado. Se tiver dúvidas é só dizer.