Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ÓRDENES “BUSCAR”,
find, locate (slocate) y updatedb, which, whereis, file,
“TIPO ORDEN/FICHERO”,
type, cmp, comm, diff, script.
“COMPARAR”,...
COMANDOS “m” mdir, mcd, mmd, mrd, mdeltree, mren, mtype, mcopy, mmove,
(“mtools”) mdel, mformat, mattrib,...
ÓRDENES “FILTRO” cat, more, less, sort, grep, head, tail, wc, tee, tr, cut,
paste, join, nl, uniq.
FICHERO
Redirección salida: > (1>)
ORDEN CON SALIDA >> (1>>)
Canalización: | 2>
2>>
&> (2>&1)
Formatos entrada:
- Leer los datos de la “entrada estándar” (teclado) (No tiene utilidad):
filtro [-opciones] [argumentos]
- Leer los datos de un(os) “fichero(s)” (redirección entrada) (Se asume “<”):
filtro [-opciones] [argumentos] [<] fichero(s)
- Leer los datos de la “salida de una orden” (canalización):
orden con S | filtro [-opciones] [argumentos] | filtro [-opciones] [argumentos]...
Formatos salida:
- Escribir el resultado de “salida normal” en un “fichero” (redirección salida
normal):
orden-filtro > fichero-salida-normal
- Escribir el resultado de “salida de error” en un “fichero” (redirección salida de
error):
orden-filtro 2> fichero-salida-error
- Escribir el resultado de “salida normal” y de “salida de error” en el mismo
“fichero” (redirección ambas salidas al mismo fichero):
orden-filtro &> fichero-salida o orden-filtro 2>&1 fichero-salida
=> more
Filtro: Paginar un fichero o la salida de una orden (sólo hacia delante).
more [-opciones] [fichero(s)]
orden con S | more [-opciones]
Ejemplos:
Paginar un fichero:
more /etc/passwd
cat /etc/passwd | more
Paginar la salida de orden:
ls –laiR | more
=> less
Filtro: Paginar un fichero o la salida de una orden (hacia delante y hacia atrás).
less [-opciones] [fichero(s)]
orden con S | less [-opciones]
Ejemplos:
Paginar un fichero:
less /etc/passwd
cat /etc/passwd | less
Paginar la salida de una orden:
ls –laiR | less
=> sort
Filtro: Ordenar las líneas de un fichero o la salida de una orden por el primer
carácter (y por los siguientes caracteres si fuera necesario).
(Para una misma letra, min antes que MAY). (Números ordenados por su representación
ASCII, no por su valor, de modo que, por ejemplo, “100” está antes que “40”, ya que
“1” antes que “4”).
sort [-opciones] [fichero(s)]
orden con S | sort [-opciones]
Opciones:
Globales, [pueden escribirse de forma independiente (“–opción”, con guión) o pueden
formar parte de un campo clave (“opción”, sin guión) (tienen preferencia sobre las
opciones escritas de forma independientes)]:
-b Ignorar “blancos” al principio.
-d Ordenar tipo “diccionario” (sólo tiene en cuenta letras,
dígitos y “blancos”).
-f Convertir min a MAY al comparar (ignorar diferencia
MAY/min para la misma letra). (Para una misma letra, min
antes que MAY).
-n Ordenar por el valor numérico, no por su representación
ASCII. (Números ordenados por su representación ASCII, no
=> head
Filtro: Mostrar la primera parte de un fichero o de la salida de una orden, por
defecto, las 10 primeras líneas.
head [-opciones] [fichero(s)]
orden con S | head [-opciones]
Opciones:
-n nº o -nº Primeras nº líneas.
-c nº Primeros nº caracteres (bytes).
-c nºb Primeros nº bloques (512 bytes).
-c nºk Primeros nº kb (1 kb = 1.024 bytes).
-c nºm Primeros nº mb (1 mb = 1.024 kb= 1.048.576 bytes).
Ejemplos:
Primeras 10 líneas de un fichero:
head /etc/passwd
Primeras 20 líneas de un fichero:
head -n 20 /etc/passwd
Primeros 2.048 kb de un fichero:
head -c 2k ~/datos.txt
Primeras 5 líneas de un listado:
ls -l /etc | head -5
=> tail
Filtro: Mostrar la última parte de un fichero o de la salida de una orden, por
defecto, las 10 últimas líneas. Si antes del “nº” se pone un “+” (por ejemplo,
-n +nº), mostrar desde dicha parte hasta el final.
tail [-opciones] [fichero(s)]
orden con S | tail [-opciones]
Opciones:
-n nº o –nº Últimas nº líneas.
-c nº Últimos nº caracteres (bytes).
head –n nº
tail –n +nº
tail –n nº
=> wc
Filtro: Mostrar el nº de caracteres (bytes) y/o palabras y/o líneas de un fichero o
de la salida de una orden, por defecto, los tres valores.
wc [-opciones] [fichero(s)]
orden con S | wc [-opciones]
Opciones:
-c nº caracteres
-w nº palabras
-l nº líneas
Ejemplos:
Nº de usuarios del sistema:
wc -l /etc/passwd
Nº de grupos del sistema:
cat /etc/group | wc –l
Cantidad de caracteres, palabras y líneas de un fichero:
wc ~/datos.txt
Nª de usuarios conectados:
who | wc –l
Nº de ficheros de un listado:
ls -l | tail -n +2 |wc –l
=> tr
Filtro:
- Sin opción “-d” y con “caracteres1” y “caracteres2”: Traducir (cambiar)
“caracteres1” a “caracteres2”.
- Con opción “-d” y “caracteres1”: Eliminar “caracteres1”.
- Con opción “-s” y “caracteres1”: Reemplazar secuencia de “caracteres1” repetidos
por un solo “carácter1”.
- Sin opción “-d” y con opción “-s” y “caracteres1” y “caracteres2”: Traducir
“caracteres1” a “caracteres2” y, luego, reemplazar secuencia de “caracteres2”
repetidos a uno solo”.
- Con opciones “-d” y “-s” y con “caracteres1” y “caracteres2”: Eliminar
“caracteres1” y, luego, reemplazar secuencia de “caracteres2” repetidos a uno
solo”.
Para trabajar con un fichero hay que usar explícitamente la redirección de la
entrada: “< fichero”.
tr [-opciones] caracteres1 [caracteres2] [ < fichero]
orden con S | tr [-opciones] caracteres1 [caracteres2]
Opciones:
-d Eliminar “caracteres1”.
-s Eliminar caracteres repetidos, dejando uno.
-c Caracteres complementarios de “caracteres1” (los que “no” son). Por ejemplo,
-c A-Za-z0-9 son caracteres no alfanuméricos (mejor usar –c ‘[:alnum:]’).
Notas:
- “caracteres2” se expande a la misma longitud que “caracteres1”, si fuera necesario,
repitiendo su último carácter.
- Caracteres en exceso en “caracteres2” se ignoran.
Caracteres especiales y clases de caracteres (van entrecomillados)(man tr):
‘\nnn’ Carácter cuyo nº octal es “nnn” (nº octal de 3 dígitos).
‘\\’ Carácter “barra inversa” (“backslash”) “\”.
‘\b’ Carácter “retroceso” (“backspace”) (“^H”).
‘\n’ Carácter “avance de línea” (LF, ASCII: 10dec, 12oct ) (“^J”).
‘\r’ Carácter “enter” (“return”) (CR, ASCII: 13dec, 15oct) (“^M”).
‘\t’ Carácter “tabulador horizontal” (“^I”).
‘[:alpha:]’ Letras.
‘[:alnum:]’ Letras y números (dígitos).
‘[:upper:]’ Letras mayúsculas.
‘[:lower:]’ Letras minúsculas.
‘[:space:]’ Espacio horizontal o vertical.
‘[caracter*nº]’ “nº” veces el carácter “carácter”. Por ejemplo: [x*6]=xxxxxx.
‘[carácter*]’ En “caracteres2” tantas veces “carácter” hasta tener la misma
longitud que “caracteres1”.
Listas de caracteres y rangos de caracteres [GNU no soporta la sintaxis con corchetes
como System V (por ejemplo, tr -d ‘[0123456789]’ eliminaría los corchetes y los
números)] (man tr):
c1c2c3... Lista caracteres “c1”, “c2”, “c3”,.... (sin corchetes).
carácter1-carácter2 Rango caracteres de “carácter1” a “carácter2” en orden
ascendente (sin corchetes).
=> nl
Filtro: Numerar las líneas de un fichero o de la salida de una orden.
nl [-opciones] [fichero(s)]
orden con S | nl [-opciones]
Ejemplos:
Numerar las líneas de un fichero:
nl ~/fich.txt
=> uniq
Filtro: Mostrar líneas únicas de un fichero ordenado (eliminar líneas repetidas de un
fichero ordenado).
uniq [-opciones] [fichero(s)]
orden con S | uniq [-opciones]
Opciones:
-c Mostrar antes de la línea el nº de líneas repetidas.
-d Mostrar solamente las líneas repetidas.
-u Mostrar solamente líneas únicas.
-i Ignorar diferencia MAY/min.
Ejemplos:
Número de veces que aparece un código postal (cortar el campo del código postal,
ordenar el resultado, eliminar líneas repetidas contando las veces repetidas, ordenar
en orden numérico decreciente):
cut –f 6 direcciones.dat | sort | unic –c | sort –rn
Códigos postales que aparecen sólo una vez:
cut –f 6 direcciones.dat | uniq –u
=> find
Orden: Buscar en una estructura de directorios ficheros/directorios que cumplan
una(s) condición(es) y ejecutar con los ficheros encontrados una acción. Por defecto,
se busca en el directorio actual y en sus subdirectorios (directorio-inicial) y se
muestra el resultado en pantalla (acción).
find [directorio-inicial...] [-opciones] condición(es) [acción]
directorio-inicial... Directorio desde el que se empieza a buscar (por defecto,
directorio actual y sus subdirectorios). Pueden ser varios
separados por espacio.
Opciones:
-maxdepth nºnivel Nº de niveles descendentes en la estructura de directorios en los
que se busca (por defecto, todos). (-maxdepth 2 significa que
busca en el directorio especificado en la orden -el actual, por
defecto- y en los dos siguientes niveles de subdirectorios;
-maxdepth 0 significa que sólo busca en el directorio
especificado en la orden -el actual, por defecto).
-mindepth nºnivel Nº de niveles que se desciende en la estructura de directorios
antes de empezar la búsqueda (por defecto, ninguno).
Condiciones:
-name nombre o ‘plantilla’ Ficheros tienen el nombre o encajan en la plantilla (se
diferencia MAY/min).
-iname nombre o ‘plantilla’ Ficheros tienen el nombre o encajan en la plantilla (no
se diferencia MAY/min).
-user usuario Ficheros pertenecen al usuario (nombre o nº).
-group grupo Ficheros pertenecen al grupo (nombre o nº).
-nouser Ficheros no pertenecen al usuario.
-nogroup Ficheros no pertenecen al grupo del usuario.
-perm modo Ficheros tienen los permisos (modo simbólico o modo
octal).
-inum nº Ficheros tienen el nº de inodo.
-links nº Ficheros tienen el nº de enlaces duros.
-atime nº Ficheros tienen fecha de "acceso" hace "nº" días.
-ctime nº Ficheros tienen fecha de "cambio" hace "nº" días.
-mtime nº Ficheros tienen fecha de "modificación" hace "nº" días.
-size nº[carácter] Ficheros tienen tamaño “nº [Carácter: “b” -> bloques
(512 bytes ¿o 1.024 bytes?) (por defecto); “k” -> kb;
“c” -> bytes o caracteres].
-type carácter Ficheros son del tipo (“f”: fichero, “d”: directorio,
"l": enlace simbólico,...).
-empty Ficheros/directorios vacíos.
...
Los valores numéricos (nº) de las condiciones pueden tener el formato:
+nº Mayor que.
-nº Menor que.
nº Igual que.
Operadores de condiciones (de mayor a menor “prioridad”):
(condicion1 condicion2) Operador “paréntesis”: Cambiar prioridad operadores. Sin
paréntesis, las condiciones se evalúan según la
prioridad y para igual prioridad, de izquierda a
derecha.
! condición Operador “no” (“not”): Verdad si “condición” es falsa.
not condición
condición1 condición2 Operador “y” (“and”): Verdad si ambas condiciones son
verdad (“condición2” no se evalúa si “condición1” es
falsa). Operador por defecto.
condición1 –a condición2
condición1 –and condición2
=> which
Orden: Mostrar la trayectoria (directorios) de una(s) orden(es), buscando en los
directorios de la variable PATH.
which [-opciones] orden(es)
Opciones:
-a Mostrar todas las órdenes que se encuentran, no sólo la primera.
Ejemplos:
Mostrar los directorios de algunas órdenes:
which pwd -> /bin/pwd
which useradd cd -> /usr/sbin/useradd
-> which: no cd in (/usr/local/bin:/bin:/usr/bin:…)
=> whereis
Orden: Mostrar la trayectoria (directorios) de una(s) orden(es), su(s) fichero(s) de
página(s) de manual en inglés y su(s) fichero(s) fuente(s), buscando en los
directorios especificados en el propio programa.
whereis [-opciones] orden(es)
Opciones:
-b Mostrar sólo los ficheros binarios.
-m Mostrar sólo los ficheros de páginas de manual.
-s Mostrar sólo los ficheros fuentes.
Ejemplos:
Mostrar los directorios de algunas órdenes:
whereis pwd -> pwd: /bin/pwd /usr/share/man/man1/pwd.1.bz2 /usr/share/...
whereis –b pwd -> pwd: /bin/pwd
whereis useradd cd -> useradd: /usr/sbin/useradd /usr/share/man/man8/useradd.8.bz2
-> cd: /usr/share/man/man1/cd.1.bz2 /usr/share/man/mann/cd.n.bz2
=> type
Orden: Mostrar si una orden es una "función" (function), un "alias", un "comando
interno" (builtin), un “comando externo” (file) o nada (unfound).
type [-opciones] orden(es)
Opciones:
-t Mostrar una sola palabra.
-a Mostrar todos los valores.
Ejemplos:
Mostrar el tipo de algunas órdenes:
type pwd -> pwd is a shell builtin
type –t pwd -> builtin
type chmod -> chmod is /bin/chmod
type –t chmod -> file
type ls -> ls is aliased to `ls –F –color=auto`
type –t ls -> alias
type –a pwd -> pwd is a shell builtin
-> pwd is /bin/pwd
=> cmp
Orden: Comparar dos ficheros y mostrar el resultado en pantalla. Si los ficheros son
iguales, no muestra nada; si diferentes, muestra el nº de byte (carácter) y nº de
línea en el que ocurre la primera diferencia (la numeración empieza en "1").
cmp [-opciones] fichero1 fichero2
Opciones:
-l Mostrar el nº de byte (decimal) y los valores de byte diferentes (octal) para
cada diferencia.
-s No mostrar nada para ficheros diferentes; se produce el código de salida ("0":
ficheros iguales; "1": ficheros diferentes; ">1": error).
Ejemplos:
Comparar dos ficheros (iguales):
cmp ~/fich1.dat ~/fich2.dat
Comparar dos ficheros (diferentes):
cmp ~/agenda1.dat ~/agenda2.dat
Resultado:
agenda1.dat agenda2.dat differ: char 15, line 3
Comparar dos ficheros:
cmp –l ~/agenda1.dat ~/agenda2.dat
Resultado:
15 141 101
21 124 106
...
cmp: EOF on agenda1.dat
Comparar dos ficheros y mostrar el código de salida:
cmp –s ~/agenda1.dat ~/agenda2.dat;echo $?
Resultado:
1
=> diff
Orden: Comparar el contenido de dos ficheros y mostrar cómo ha de cambiarse el texto
del primer fichero para que coincida con el segundo fichero. También, comparar los
ficheros correspondientes de dos directorios.
diff [-opciones] fichero1 fichero2
Opciones:
-q Mostrar solamente si los ficheros son diferentes, no las diferencias.
-s Mostrar solamente si los ficheros son iguales.
Ejemplos:
Comparar dos ficheros:
diff ~/fich1.txt ~/fich2.txt
Resultado:
3,7c3,4 -> (c)ambiar las líneas 3 a 7 del primer fichero por las líneas 3 a 4 del
segundo fichero. Otros códigos: (a) -> añadir; (d) -> borrar;...
...
=> script
Orden: Escribir en un fichero (por defecto, fichero “~/typescript”) todas las órdenes
y resultados de una sesión, hasta que se pulsa “^D”.
script [-opciones] [fichero]
Opciones:
-a Añadir al final del fichero.
Ejemplos:
Escribir las órdenes de una sesión:
script -> En el fichero “~/typescript”.
script ~/sesion.1 -> En el fichero “~/sesion.1”.