História de Comandos©2002 FABRICIO FERRARI

A partir do momento em que o shell inicia, ele passa a guardar todos os comandos digitados pelo usuário, na seqüência em que são digitados. Estes comandos podem ser recuperados, editados e novamente executados pelo shell, simplificando tarefas repetitivas em arquivos distintos. Este recurso é chamado de história porque grava a seqüência de acontecimentos no âmbito do shell.

O número de comandos gravados pelo shell é determinado pela variável de ambiente history[*], enquanto que a variável savehist determina quantos comandos serão gravados no arquivo .history quando o usuário termina a sessão, para serem recuperados numa sessão futura.

A primeira maneira de examinar os comandos do shell é através do comando history que mostra em parte algo como

$ \vdots$

   122   9:35   df
   123   9:35   new
   124   9:35   rusers
   125   9:35   ls
   126   9:35   sort Makefile
   127   9:35   sort Makefile > lixo
   128   9:35   sort Makefile > lixo2
   129   9:35   ls
   130   9:35   diff lixo lixo2
   131   9:35   diff lixo Makefile
   132   9:35   ls
   133   9:35   clear
   134   9:35   rm lixo*
   135   9:35   make

$ \vdots$

onde vemos o número do comando na história, a hora da chamada e a sintaxe do comando. O caracter de substituição da história é o $ !$, logo se quiséssemos executar o comando de ordem 133 (clear) novamente, simplesmente digitamos

$ $ !$133

clear

que limparia a tela do terminal.


Tabela 3.3: Indicadores da história do tcsh.
OPERADOR EFEITO
$ !!$ comando anterior
$ !n$ $ n$-ésimo comando
$ !$-$ n$ $ !n$ a partir do fim
$ !$txt comando mais recente que inicia com txt
$ !$?txt? comando mais recente que contém txt
$ !$* todos argumentos do comando anterior, exceto o argumento zero (o nome do comando)
$ !\widehat{\ }$ o primeiro argumento do comando anterior
$ !$$ o último argumento do comando anterior
$ !$ {txt } faz com que somente txt seja usado na interpretação da história


Na maioria das implementações do tcsh é possível usar as setas do teclado \fbox{\sf $\uparrow$} \fbox{\sf $\downarrow$} para percorrer a história de comandos. Existem alguns modificadores da história que simplificam o reutilização dos comandos já digitados. Para repetir o último comando executado digitamos $ !!$. Como no exemplo acima, o comando de ordem $ n$ é reexecutado através da sintaxe $ !n$, onde $ n$ é seu número. Se quisermos contar do fim para o começo, isto é, para reexecutar o comando $ n$ a partir do atual, basta fazer $ !-n$. Se o clear devesse ser executado novamente, poderíamos procurá-lo pelo seu nome, através da sintaxe $ !$nome. Neste caso

$ $ !$clear

clear

fazemos com que o shell procure pelo comando mais recente que comece com o texto clear, podendo abreviá-lo por $ !$clea, $ !$cle ou mesmo $ !$c. O shell lê os comandos na ordem inversa daquela em que foram digitados, até encontrar o texto que coincida com aquele fornecido pelo usuário, quando executa o comando. Veja outros operadores de procura da história na tabela [*].



Subsections
leon 2008-08-19