utils:more
Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
Ambos lados da revisão anteriorRevisão anteriorPróxima revisão | Revisão anterior | ||
utils:more [2024/12/14 23:59] – [Noções básicas] conceitos de posição e pesquisa hrcerq | utils:more [2025/01/08 23:23] (atual) – [Noções básicas] Primeira referência a ctags no artigo hrcerq | ||
---|---|---|---|
Linha 1: | Linha 1: | ||
====== more ====== | ====== more ====== | ||
- | **more** é um paginador | + | **more** é um paginador [[utils:glossario#t|de terminal]] :?:, originário |
- | + | ||
- | ===== História ===== | + | |
- | + | ||
- | O comando __more__ surgiu no 3.0BSD, por estudantes da universidade de Berkeley (originalmente criado por Daniel Halbert, em 1978). O comando foi gradualmente aprimorado ainda nesse sistema e depois se espalhou para outros UNIX, e depois até mesmo para sistemas não UNIX. | + | |
- | + | ||
- | O programa inicialmente tinha algumas limitações, | + | |
- | ===== Padronização ===== | + | |
- | + | ||
- | O paginador __more__ é parte do padrão POSIX. Presente nas seguintes revisões: | + | |
- | + | ||
- | * [[https:// | + | |
- | * [[https:// | + | |
- | * [[https:// | + | |
- | * [[https:// | + | |
- | * [[https:// | + | |
- | + | ||
- | ===== Implementações ===== | + | |
- | + | ||
- | Em alguns sistemas tipo UNIX é comum que o paginador __more__ seja apenas uma referência à ferramenta __less__, com opções de compatibilidade com o padrão. Por este motivo, a lista de implementações abaixo fica bem restrita: | + | |
- | + | ||
- | * [[https:// | + | |
- | * [[https:// | + | |
- | + | ||
- | __less__ (aqui usado como __more__): | + | |
- | + | ||
- | * [[https:// | + | |
- | + | ||
- | Nesse sentido, __less__ pode ser entendido como uma das implementações | + | |
- | + | ||
- | Cabe dizer também que no OpenBSD há uma página de manual dedicada ao uso de __less__ em modo de compatibilidade com __more__: | + | |
- | + | ||
- | * [[https:// | + | |
- | + | ||
- | Existem algumas diferenças quanto ao nível de aderência dessas implementações ao padrão POSIX, sendo o modo de compatibilidade | + | |
- | + | ||
- | Além dos sistemas aderentes (totalmente ou parcialmente) ao padrão POSIX, outros sistemas também possuem o paginador __more__, com algumas diferenças inevitáveis de implementação, | + | |
- | + | ||
- | * [[https:// | + | |
- | * [[https:// | + | |
- | * [[https:// | + | |
===== Noções básicas ===== | ===== Noções básicas ===== | ||
Linha 47: | Linha 7: | ||
Para aprender a usar o __more__, vamos começar detalhando alguns conceitos comuns da sua terminologia: | Para aprender a usar o __more__, vamos começar detalhando alguns conceitos comuns da sua terminologia: | ||
- | **Avançar** e **Retroceder** | + | * **Avançar** e **Retroceder** |
O principal benefício de um paginador de terminal é o fato de que o texto a ser lido não precisa caber por inteiro na tela do terminal. Ele apresenta o texto inteiro, se couber, mas caso não caiba, ele mostra apenas uma parcela do texto, e você pode avançar ou retroceder no texto, isto é, visualizar linhas " | O principal benefício de um paginador de terminal é o fato de que o texto a ser lido não precisa caber por inteiro na tela do terminal. Ele apresenta o texto inteiro, se couber, mas caso não caiba, ele mostra apenas uma parcela do texto, e você pode avançar ou retroceder no texto, isto é, visualizar linhas " | ||
Linha 55: | Linha 15: | ||
Há diferentes maneiras de avançar e de retroceder. O movimento pode ser feito por páginas, por linhas ou por grupos de linhas, e pode ainda ser feito via rolagem ou via redesenho. Há ainda a possibilidade de mudar para pontos diferentes do texto fazendo pesquisas por termos ou navegando para locais previamente marcados. E ainda existe também a navegação para um ponto especificado (seja pelo número da linha ou por um percentual em relação ao tamanho total do arquivo). | Há diferentes maneiras de avançar e de retroceder. O movimento pode ser feito por páginas, por linhas ou por grupos de linhas, e pode ainda ser feito via rolagem ou via redesenho. Há ainda a possibilidade de mudar para pontos diferentes do texto fazendo pesquisas por termos ou navegando para locais previamente marcados. E ainda existe também a navegação para um ponto especificado (seja pelo número da linha ou por um percentual em relação ao tamanho total do arquivo). | ||
- | **Anterior** e **Próximo** | + | * **Anterior** e **Próximo** |
Ao ser chamado, o programa __more__ pode receber como argumentos um ou mais arquivos de texto que serão abertos para a leitura paginada. Caso haja mais de um, a paginação dos arquivos é separada (isto é, os arquivos não são concatenados e lidos em sequência). Ao terminar a leitura de um arquivo, é apresentado um //prompt// para que se passe para o próximo arquivo da lista, ou encerrar o programa, caso não haja mais nenhum. | Ao ser chamado, o programa __more__ pode receber como argumentos um ou mais arquivos de texto que serão abertos para a leitura paginada. Caso haja mais de um, a paginação dos arquivos é separada (isto é, os arquivos não são concatenados e lidos em sequência). Ao terminar a leitura de um arquivo, é apresentado um //prompt// para que se passe para o próximo arquivo da lista, ou encerrar o programa, caso não haja mais nenhum. | ||
Linha 61: | Linha 21: | ||
É possível também acionar comandos internos do paginador __more__, para navegar de volta para o arquivo anterior, ou pular o arquivo atual e passar para o próximo da lista. | É possível também acionar comandos internos do paginador __more__, para navegar de volta para o arquivo anterior, ou pular o arquivo atual e passar para o próximo da lista. | ||
- | **Capacidades do terminal** | + | * **Buffer** |
+ | |||
+ | Para paginar arquivos, __more__ usa um //buffer//, isto é, uma área de memória que vai guardar o texto do arquivo. O modo como __more__ gerencia esse //buffer// é um detalhe de implementação, | ||
+ | |||
+ | * **Capacidades do terminal** | ||
É possível acionar o programa __more__ a partir de diferentes tipos de terminal (ou emuladores de terminal). Cada um deles pode ter capacidades diferentes. Capacidades dizem respeito a cores suportadas, tamanhos de tela suportados, possibilidade ou não de retroceder no texto, possibilidades de formatação (negrito, itálico e sublinhado, por exemplo), dentre outras propriedades. | É possível acionar o programa __more__ a partir de diferentes tipos de terminal (ou emuladores de terminal). Cada um deles pode ter capacidades diferentes. Capacidades dizem respeito a cores suportadas, tamanhos de tela suportados, possibilidade ou não de retroceder no texto, possibilidades de formatação (negrito, itálico e sublinhado, por exemplo), dentre outras propriedades. | ||
Linha 67: | Linha 31: | ||
A depender das capacidades oferecidas pelo terminal, o programa __more__ poderá oferecer mais ou menos recursos. | A depender das capacidades oferecidas pelo terminal, o programa __more__ poderá oferecer mais ou menos recursos. | ||
- | **Comando** | + | * **Comando** |
Uma vez com o programa aberto, é possível enviar alguns comandos para ele. Comandos como navegar para outro arquivo (anterior, próximo ou algum arquivo cujo nome seja informado), abrir o arquivo atual em um editor de texto, pesquisar por alguma palavra ou trecho específico, | Uma vez com o programa aberto, é possível enviar alguns comandos para ele. Comandos como navegar para outro arquivo (anterior, próximo ou algum arquivo cujo nome seja informado), abrir o arquivo atual em um editor de texto, pesquisar por alguma palavra ou trecho específico, | ||
- | **Editor** | + | * **Editor** |
Uma vez com o programa __more__ aberto, é possível acionar um editor de texto para abrir o arquivo atual e possivelmente alterá-lo. Portanto nesse existe a noção de editor como o programa que vai ser usado nesse contexto (tipicamente o __vi__). | Uma vez com o programa __more__ aberto, é possível acionar um editor de texto para abrir o arquivo atual e possivelmente alterá-lo. Portanto nesse existe a noção de editor como o programa que vai ser usado nesse contexto (tipicamente o __vi__). | ||
- | **Examinar** | + | * **Examinar** |
Na especificação POSIX, o termo " | Na especificação POSIX, o termo " | ||
- | **Linhas** e **Colunas** | + | * **Expressão regular** |
+ | |||
+ | Vide [[prog: | ||
+ | |||
+ | * **Linhas** e **Colunas** | ||
Tratando-se de um paginador de texto de terminal, as dimensões verticais e horizontais são dadas, respectivamente, | Tratando-se de um paginador de texto de terminal, as dimensões verticais e horizontais são dadas, respectivamente, | ||
Linha 87: | Linha 55: | ||
O critério de divisão de linhas nesse caso é a presença de caracteres de fim de linha (// | O critério de divisão de linhas nesse caso é a presença de caracteres de fim de linha (// | ||
- | **Marcador** | + | * **Marcador** |
Posições dentro do texto podem ser marcadas, de modo que depois fique prático voltar para aquele ponto, se necessário. | Posições dentro do texto podem ser marcadas, de modo que depois fique prático voltar para aquele ponto, se necessário. | ||
- | **Página** | + | * **Página** |
Uma página é caracterizada pela quantidade de linhas **visíveis** que cabe em uma tela. Aqui friso o " | Uma página é caracterizada pela quantidade de linhas **visíveis** que cabe em uma tela. Aqui friso o " | ||
- | **Pesquisa** | + | * **Pesquisa** |
O paginador __more__ suporta pesquisa de texto, de modo a facilitar a navegação para ocorrências do texto pesquisado. A pesquisa pode ser feita tanto de modo afirmativo (linha que possui aquele texto) como negativa (linha que não possui), e também pode ser direcionada para a frente (da linha atual para o fim do arquivo) ou para trás (da linha anterior para o início do arquivo). | O paginador __more__ suporta pesquisa de texto, de modo a facilitar a navegação para ocorrências do texto pesquisado. A pesquisa pode ser feita tanto de modo afirmativo (linha que possui aquele texto) como negativa (linha que não possui), e também pode ser direcionada para a frente (da linha atual para o fim do arquivo) ou para trás (da linha anterior para o início do arquivo). | ||
- | **Posição** | + | * **Posição** |
Uma posição dentro do paginador é dada por uma linha. Por exemplo, a posição 50 significa que a linha de número 50 é deve ser a primeira visível na tela. | Uma posição dentro do paginador é dada por uma linha. Por exemplo, a posição 50 significa que a linha de número 50 é deve ser a primeira visível na tela. | ||
- | **Prompt** | + | * **Prompt** |
+ | |||
+ | __more__ é uma ferramenta interativa. O modo dessa ferramenta de mostrar que está à espera de um comando do usuário (como avançar ou retroceder no texto, por exemplo) é apresentando um //prompt// ao fim da página. | ||
+ | |||
+ | Esse //prompt// consiste em um texto destacado informando o nome do arquivo que está sendo lido, e possivelmente algumas informações adicionais (como o percentual de linhas desde o início do arquivo até o ponto atual em relação ao tamanho total do arquivo). | ||
+ | |||
+ | * **Redesenho** | ||
+ | |||
+ | Um redesenho da tela é o movimento de apagar o conteúdo atual da tela, e reescrever ou substituir por um texto diferente. | ||
+ | |||
+ | * **Rolagem** | ||
+ | |||
+ | Uma rolagem de tela é o movimento de adicionar linhas ao fim da página (quando está avançando) ou ao topo (quando está retrocedendo) e deslizar as demais linhas para cima (ao avançar) ou para baixo (ao retroceder). | ||
+ | |||
+ | * **Tags** | ||
+ | |||
+ | //Tags// (do inglês, etiquetas) são uma maneira de rastrear definições (de funções, de tipos e outros objetos) dentro de um arquivo de código-fonte C ou Fortran (e opcionalmente de outras linguagens). Um arquivo específico guarda as referências dessas definições, | ||
+ | |||
+ | O arquivo em questão é gerado pelo utilitário [[utils: | ||
+ | ===== Iniciando e encerrando ===== | ||
+ | |||
+ | Iniciar o paginador __more__ é bastante simples. Basta acionar o programa, seguido (opcionalmente) pelos seus [[utils: | ||
+ | |||
+ | < | ||
+ | $ more arquivo1 arquivo2 arquivo3 | ||
+ | </ | ||
+ | |||
+ | Os arquivos não são abertos todos de uma vez. Apenas o primeiro deles estará visível na tela do terminal (ou seja, neste exemplo, apenas // | ||
+ | |||
+ | Antes de tratarmos sobre como navegar pelos arquivos abertos, precisamos falar sobre como encerrar o paginador. Basta digitar **q**, um //comando// que encerra o paginador, independente de você ter lido tudo ou não. Em qualquer ponto do texto, de qualquer um dos arquivos abertos para examinação, | ||
+ | |||
+ | Ao encerrar __more__, você notará que o texto continuará visível na tela. | ||
+ | |||
+ | <note tip> | ||
+ | A permanência do texto na tela pode ou não ser conveniente (costuma ser, quando o conteúdo do arquivo paginado é alguma informação útil para algum outro comando que deseja executar), mas caso não seja, você pode depois limpar a tela com __clear__ (ou **Ctrl** + **L**). | ||
+ | </ | ||
+ | |||
+ | ===== Comandos ===== | ||
... | ... | ||
+ | ===== Trocando de arquivos ===== | ||
- | **Redesenho** | + | ... |
+ | |||
+ | ===== Texto formatado ===== | ||
... | ... | ||
- | **Rolagem** | + | ===== Pesquisa de texto ===== |
... | ... | ||
- | **Tags** | + | ==== Expressões regulares ==== |
... | ... | ||
- | **Terminal** | + | ===== Marcadores ===== |
... | ... | ||
- | ===== Iniciando e encerrando | + | |
+ | ===== Passando para a edição | ||
... | ... | ||
+ | |||
+ | ===== História ===== | ||
+ | |||
+ | O comando __more__ surgiu no 3.0BSD, por estudantes da universidade de Berkeley (originalmente criado por Daniel Halbert, em 1978). O comando foi gradualmente aprimorado ainda nesse sistema e depois se espalhou para outros UNIX, e depois até mesmo para sistemas não UNIX. | ||
+ | |||
+ | O programa inicialmente tinha algumas limitações, | ||
+ | ===== Padronização ===== | ||
+ | |||
+ | O paginador __more__ é parte do padrão POSIX. Presente nas seguintes revisões: | ||
+ | |||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
+ | ===== Implementações ===== | ||
+ | |||
+ | Em alguns sistemas tipo UNIX é comum que o paginador __more__ seja apenas uma referência à ferramenta __less__, com opções de compatibilidade com o padrão. Por este motivo, a lista de implementações abaixo fica bem restrita: | ||
+ | |||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
+ | __less__ (aqui usado como __more__): | ||
+ | |||
+ | * [[https:// | ||
+ | |||
+ | Nesse sentido, __less__ pode ser entendido como uma das implementações de __more__, desde que usado em modo de compatibilidade (isto é, com o uso da variável de ambiente **LESS_IS_MORE**, | ||
+ | |||
+ | Cabe dizer também que no OpenBSD há uma página de manual dedicada ao uso de __less__ em modo de compatibilidade com __more__: | ||
+ | |||
+ | * [[https:// | ||
+ | |||
+ | Existem algumas diferenças quanto ao nível de aderência dessas implementações ao padrão POSIX, sendo o modo de compatibilidade do __less__ um dos mais aderentes (sobretudo se considerarmos o suporte a __ctags__). | ||
+ | |||
+ | Além dos sistemas aderentes (totalmente ou parcialmente) ao padrão POSIX, outros sistemas também possuem o paginador __more__, com algumas diferenças inevitáveis de implementação, | ||
+ | |||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// |
utils/more.1734231589.txt.gz · Última modificação: 2024/12/14 23:59 por hrcerq