Activa las notificaciones para estar al tanto de lo más nuevo en tecnología.

A 40 años del comando “grep” de Unix

Grep es un comando de Unix, una utilería, como solemos llamar a muchos comandos de uno de los sistemas operativos más significativos del cómputo. Grep...

grep00

Grep es un comando de Unix, una utilería, como solemos llamar a muchos comandos de uno de los sistemas operativos más significativos del cómputo. Grep busca en el archivo de entrada por patrones específicos e imprime las líneas que contienen el o los patrones buscados. Grep lo escribió Ken Thompson, quien creó Unix. Grep apareció en Unix v4 con características limitadas, comparadas con lo que hoy puede hacer grep. Esta es la página de ayuda (al invocar el comando “man”) en Unix v6:

NAME
 grep — search a file for a pattern

SYNOPSIS
 grep [ -v ] [ -b ] [ -c ] [ -n ] expression [ file ] …

DESCRIPTION
 Grep searches the input files (standard input default) for
 lines matching the regular expression. Normally, each line
 found is copied to the standard output. If the -v flag is
 used, all lines but those matching are printed. If the -c
 flag is used, only a count of matching lines is printed. If
 the -n flag is used, each line is preceded its relative line
 number in the file. If the -b flag is used, each line is
 preceded by the block number on which it was found. This is
 sometimes useful in locating disk block numbers by context.

 In all cases the file name is shown if there is more than
 one input file.

 For a complete description of the regular expression, see ed
 (I). Care should be taken when using the characters $ * [ ^
 | ( ) and \ in the regular expression as they are also mean-
 ingful to the Shell. It is generally necessary to enclose
 the entire expression argument in quotes.

SEE ALSO
 ed (I), sh (I)

BUGS
 Lines are limited to 256 characters; longer lines are trun-
 cated.

Para muchos, el nacimiento de grep fue el 3/3/1973, y muchos artículos en la red creen que esta fue la fecha de creación de grep, incluso la Wikipedia. Sin embargo, la versión v4 de Unix dice:

.th GREP I 3/3/73
.sh NAME
grep \*- search a file for a pattern

A pregunta expresa de saber la fecha de nacimiento de este comando, se buscó a Ken Thompson, que ahora trabaja en Google, el cual escribió lo siguiente:

From: Ken Thompson <[email protected]>
Date: Sun, Jan 12, 2014 at 8:26 PM
Subject: Re: the birthday of grep

i dont remember what the date in .th macro means.
it probably is the last modified date of the man page,
not the command. i never recall that we ever noted
when a command was created. nromally, we
would only be able to say something like “it first
appeared in version X of the manual.

even after saying that, we were very careful not
to put junk into the utilities directory. grep was
a private command of mine for quite a while
before i made it public.

thats the long answer. the short answer is
“sometime before the 4th edition.”

ken

ken_t

La traducción sería algo como esto: “no recuerdo lo que significa la fecha en el macro .th. Probablemente es la última fecha de modificación de las páginas de man, no del comando. No recuerdo que llevásemos cuenta de cuándo se creó un comando. Normalmente  diríamos solamente algo como esto: “este comando apareció en la versión X del manual por primera vez”.

Incluso después de decir esto, nosotros fuimos muy cuidadosos de no poner basura en la carpeta de las utilidades. grep fue un comando privado mío por un tiempo, antes de que lo hiciese público.

Esta es la respuesta larga. La corta es “en algún momento antes de la cuarta edición”.

Hay alguien, apellidado McIlroy, que asegura que grep fue inventado para él. Dice el personaje en cuestión: “Una tarde le pregunté a Ken Thompson si podría hacer un reconocedor de expresiones regulares fuera del editor y hacer que pasara por un programa este proceso. Dijo que sí. La siguiente mañana hallé una nota en mi correo anunciando un programa llamado grep. Trabajaba perfectamente. Cuando le pregunté ´por qué de ese nombre chistoso, Ken dijo que era obvio:  g/re/p (global regular expression print).” Esta historia aparece en el capítulo 9 de “On the Early History and Impact of Unix Tools to Build the Tools for a New Millenium”. El origen del nombre ha sido confirmado por Dennis Ritchie, el creador de C (y de una buena parte de Unix).

Referencias:

medium 

Comentarios