Navaja Suiza de Shell (Bash)

Traducido al español por Gonzalo Nemmi 11/05/2010

Traducciones: Português, Español, English

1. Operadores

Operadores Aritméticos
+ Adición
- Substracción
* Multiplicación
/ Divición
% Resto
** Exponenciación
Operadores de Asignación
= Asigna un valor a una variable
+= Incrementa variable por una constante
-= Disminuye variable por una constante
*= Multiplica variable por una constante
/= Divide variable por una constante
%= Resto de la divición por una constante
++ Incrementa en 1 el valor de la variable
-- Disminuye en 1 el valor de la variable
Operadores Relacionales
== Igual a
!= Distinto a
> Mayor que
>= Mayor o Igual que
< Menor que
<= Menor o Igual que
Operadores Lógicos
&& Y lógico (AND)
|| O lógico (OR)
Operadores de BIT
<< Desplaza a la izquierda
>> Desplaza a la derecha
& Y de bit (AND)
| O de bit (OR)
^ O exclusivo de bit (XOR)
~ Negación de bit
! NO de bit (NOT)
Operadores de BIT (atribución)
<<= Desplaza a la izquierda
>>= Desplaza a la derecha
&= Y de bit
|= O de bit
^= O exclusivo de bit

2. Redireccionamento

Operador Acción
< Redirecciona hacia la entrada estándar (STDIN)
> Redirecciona hacia la salida estándar (STDOUT)
2> Redirecciona hacia la salida de errores (STDERR)
>> Redirecciona hacia la entrada estándar, anexando
2>> Redirecciona hacia la salida de errores, anexando
| Conecta salida estándar a la entrada estándar de otro comando
2>&1 Conecta salida de errores a la salida estándar
>&2 Conecta salida estándar a la salida de errores
>&- Cierra la salida estándar
2>&- Cierra la salida de errores
3<>arch Conecta descriptor de archivos 3 al archivo 'arch'
<<FIN Alimenta entrada estándar (Here Document)
<<-FIN Alimenta entrada estándar, cortando TABs
<(cmd) Salida de comando 'cmd' es un archivo: diff <(cmd1) <(cmd2)
>(cmd) Entrada de comando 'cmd' es un archivo: tar cf >(bzip2 -c >file.tbz) $dir

3. Variables especiales

Variable Parámetros Posicionales
$0 Parámetro número 0 (nombre del comando o función)
$1 Parámetro número 1 (de la línea de comandos o función)
... Parámetro número N ...
$9 Parámetro número 9 (de la línea de comandos o función)
${10} Parámetro número 10 (de la línea de comandos o función)
... Parámetro número NN ...
$# Número total de parámetros en línea de comando o función
$* Todos los parámetros, como una string única
$@ Todos los parámetros, como varias strings protegidas
Variable Misceláneos
$$ PID del proceso actual (del propio script)
$! PID del último job en segundo plano
$_ Último argumento del último comando ejecutado
$? Código de retorno del último comando ejecutado

4. Expanción de variables

Sintaxis Expanción Condicional
${var:-texto} Si var no está definida, devuelve 'texto'
${var:=texto} Si var no está definida, definir como 'texto'
${var:?texto} Si var no está definida, devuelve el error 'texto'
${var:+texto} Si var está definida, devuelve 'texto', sino devuelve vacío
Sintaxis Expanción de Strings
${var} Igual que $var, pero no ambiguo
${#var} Devuelve tamaño de la string
${!var} Ejecuta el contenido de $var (igual a 'eval \$$var')
${!texto*} Devuelve nombres de variables que comienzan con 'texto'
${var:N} Devuelve texto a partir de la posición 'N'
${var:N:tam} Devuelve 'tam' caracteres a partir de la posición 'N'
${var#texto} Corta 'texto' del inicio de la string
${var##texto} Corta 'texto' del inicio de la string (* goloso)
${var%texto} Corta 'texto' del final de la string
${var%%texto} Corta 'texto' del final de la string (* goloso)
${var/texto/nuevo} Substituye 'texto' por 'nuevo', una vez
${var//texto/nuevo} Substituye 'texto' por 'nuevo', siempre
${var/#texto/nuevo} Si string empieza con 'texto', substituye 'texto' por 'nuevo'
${var/%texto/nuevo} Si string termina con 'texto', substituye 'texto' por 'nuevo'

5. Bloques y agrupamientos

Sintaxis Descripción Ejemplo
"..." Protege una string, pero reconoce a $, \ y ` como especiales "abc"
'...' Protege una string por completo (ningún carácter es especial) 'abc'
$'...' Protege una string completamente, pero interpreta \n, \t, \a, etc $'abc\n'
`...` Ejecuta comandos en un subshell `ls`
{...} Agrupa comandos en un bloque { ls ; }
(...) Ejecuta comandos en un subshell ( ls )
$(...) Ejecuta comandos en un subshell, devolviendo el resultado $( ls )
((...)) Testea una operación aritmética, devolviendo 0 ó 1 ((5 > 3))
$((...)) Devuelve el resultado de una operación aritmética $((5+3))
[...] Testea una expreción, devolviendo 0 ó 1 (alias del comando 'test')| [ 5 -gt 3 ]
[[...]] Testea una expreción, devolviendo 0 ó 1 (puede usar && y ||) [[ 5 > 3 ]]

6. if, for, select, while, until, case

if for / select
if COMANDO
then
   ...
elif COMANDO
then
   ...
else
   ...
fi
for VAR in LISTA
do
    ...
done

o:

for ((exp1;exp2;exp3))
while / until case
while COMANDO
do
    ...
done
case $VAR in
    txt1) ... ;;
    txt2) ... ;;
    txtN) ... ;;
    *)    ... ;;
esac

7. Opciones del comando test ó [

Comparando Números
-lt Menor que (LessThan)
-gt Mayor que (GreaterThan)
-le Menor o igual a (LessEqual)
-ge Mayor o igual a (GreaterEqual)
-eq Igual a (EQual)
-ne No igual a (NotEqual)
Comparando Strings
= Es igual
!= No es igual
-n No es nula
-z Es nula
Operadores Lógicos
! NO lógico (NOT)
-a Y lógico (AND)
-o O lógico (OR)
Tests sobre archivos
-b es un dispositivo de bloque
-c es un dispositivo de carácter
-d es un directorio
-e es un archivo existente
-f es un archivo normal
-g el bit SGID está activado
-G el grupo del archivo es el del usuario
-k el sticky-bit está activado
-L el archivo es un link simbólico
-O el archivo pertenece al usuario actual
-p el archivo es un named pipe
-r el archivo tiene permisos de lectura
-s el tamaño del archivo es mayor que cero
-S el archivo es un socket
-t el descriptor de archivos N es un tty
-u el bit SUID está activado
-w el archivo tiene permisos de escritura
-x el archivo tiene permisos de ejecución
-nt el archivo es más nuevo (NewerThan)
-ot el archivo es más antiguo (OlderThan)
-ef el archivo es el mismo (EqualFile)

8. Escapes especiales para usar en el prompt (PS1)

Escape Recordatorio Se expande como...
\a Alerta Alerta (bip)
\d Date Fecha en formato "Día Mes Fecha" (Sat Jan 15)
\e Escape Carácter Esc
\h Hostname Nombre de la máquina sin el dominio (dhcp11)
\H Hostname Nombre completo de la máquina (dhcp11.empresa)
\j Jobs Número de jobs activos
\l Tty Nombre del terminal corriente (ttyp1)
\n Newline Nueva línea
\r Return Retorno de carro
\s Shell Nombre del shell (basename $0)
\t Time Horario en formato 24 horas HH:MM:SS
\T Time Horario en formato 12 horas HH:MM:SS
\@ At Horario en formato 12 horas HH:MM am/pm
\A At Horario en formato 24 horas HH:MM
\u Usuario Nombre de login del usuario corriente
\v Versión Versión de Bash (2.00)
\V Versión Versión+subversión de Bash (2.00.0)
\w Working Dir Directorio corriente, ruta completa ($PWD)
\W Working Dir Directorio corriente, solo el último (basename $PWD)
\! Histórico Número del comando corriente en el histórico
\# Número Número del comando corriente
\$ ID Muestra "#" para root, "$" para usuarios normales
\nnn Octal Carácter cuyo octal es nnn
\\ Backslash Barra invertida \ literal
\[ Escape Inicia una secuencia de escape (ej: código de colores)
\] Escape Termina una secuencia de escape

9. Escapes reconocidos por el comando echo

Escape Recordatorio Descripción
\a Alerta Alerta (bip)
\b Backspace Carácter Backspace
\c EOS Termina una string
\e Escape Carácter Esc
\f Form feed Alimentación
\n Newline Nueva línea
\r Return Retorno de carro
\t Tab Tabulación horizontal
\v Vtab Tabulación vertical
\\ Backslash Barra invertida \ literal
\nnn Octal Carácter cuyo octal es nnn
\xnn Hexa Carácter cuyo hexadecimal es nn

10. Formateadores del comando date

Formato Descripción
%a Nombre día de la semana abreviado (Dom..Sáb)
%A Nombre día de la semana (Domingo..Sábado)
%b Nombre del mes abreviado (Ene..Dic)
%B Nombre del mes (Enero..Diciembre)
%c Fecha completa (Sat Nov 04 12:02:33 EST 1989)
%y Año (00..99)
%Y Año (1970...)
%m Mes (01..12)
%d Día (01..31)
%j Día del año (001..366)
%H Horas (00..23)
%M Minutos (00..59)
%S Segundos (00..60)
%s Segundos desde 1º de Enero de 1970
%% Un % literal
%t Un TAB
%n Una nueva línea

11. Formateadores del comando printf

Formato Descripción
%d Número decimal
%o Número octal
%x Número hexadecimal (a-f)
%X Número hexadecimal (A-F)
%f Número con coma
%e Número en notación científica (e+1)
%E Número en notación científica (E+1)
%s String

12. Identificadores de archivos del comando ls -l

Letra Recordatorio Tipos de Archivo (primer carácter)
- - Archivo normal
d Directory Directorio
l Link Link simbólico
b Block Dispositivo de bloque (HD)
c Char Dispositivo de caracteres (modem serial)
s Socket Socket mapeado a archivo (comunicación de procesos)
p Pipe FIFO o Named Pipe (comunicación de procesos)
Letra Recordatorio Permisos de Archivo (los nueve caracteres siguientes)
- - Permiso desactivado
r Read Acceso de lectura
w Write Acceso de escritura
x eXecute Acceso de ejecución (o acceso al directorio)
X eXecute Acceso al directorio solamente
s Set ID Ejecución para usuario/grupo (SUID, SGID) - permiso 'x' activado
S Set ID Ejecución para usuario/grupo (SUID, SGID) - permiso 'x' desactivado
t sTicky Usuarios solo borran sus propios archivos - permiso 'x' activado
T sTicky Usuarios solo borran sus propios archivos - permiso 'x' desactivado

13. Comodines para nombres de archivos (glob)

Comodín Se expande como... Ejemplo
* Cualquier cosa *.txt
? Un carácter cualquiera archivo-??.zip
[...] Cualquier carácter entre... [Aa]rchivo.txt
[^...] Cualquier carácter excepto... [^A-Z]*.txt
{...} Cualquiera de los texto separados por coma archivo.{txt,html}

14. Comodines para los ítems del comando case

Comodín Se expande como... Ejemplo
* Cualquier cosa *.txt) echo ;;
? Un carácter cualquiera archivo-??.zip) echo ;;
[...] Cualquier carácter entre... [0-9]) echo ;;
[^...] Cualquier carácter excepto... [^0-9]) echo ;;
...|... Cualquier texto separado por | txt|html) echo ;;

15. Señales para usar con trap/kill/killall

# Linux Cygwin SystemV AIX HP-UX Solaris BSD/Mac
1 HUP HUP HUP HUP HUP HUP HUP
2 INT INT INT INT INT INT INT
3 QUIT QUIT QUIT QUIT QUIT QUIT QUIT
4 ILL ILL ILL ILL ILL ILL ILL
5 TRAP TRAP TRAP TRAP TRAP TRAP TRAP
6 ABRT ABRT IOT LOST ABRT ABRT ABRT
7 BUS EMT EMT EMT EMT EMT EMT
8 FPE FPE FPE FPE FPE FPE FPE
9 KILL KILL KILL KILL KILL KILL KILL
10 USR1 BUS BUS BUS BUS BUS BUS
11 SEGV SEGV SEGV SEGV SEGV SEGV SEGV
12 USR2 SYS SYS SYS SYS SYS SYS
# Linux Cygwin SystemV AIX HP-UX Solaris BSD/Mac
13 PIPE PIPE PIPE PIPE PIPE PIPE PIPE
14 ALRM ALRM ALRM ALRM ALRM ALRM ALRM
15 TERM TERM TERM TERM TERM TERM TERM
16 - URG USR1 URG USR1 USR1 URG
17 CHLD STOP USR2 STOP USR2 USR2 STOP
18 CONT TSTP CHLD TSTP CHLD CHLD TSTP
19 STOP CONT PWR CONT PWR PWR CONT
20 TSTP CHLD WINCH CHLD VTALRM WINCH CHLD
21 TTIN TTIN URG TTIN PROF URG TTIN
22 TTOU TTOU IO TTOU IO IO TTOU
23 URG IO STOP IO WINCH STOP IO
24 XCPU XCPU TSTP XCPU STOP TSTP XCPU
# Linux Cygwin SystemV AIX HP-UX Solaris BSD/Mac
25 XFSZ XFSZ CONT XFSZ TSTP CONT XFSZ
26 VTALRM VTALRM TTIN - CONT TTIN VTALRM
27 PROF PROF TTOU MSG TTIN TTOU PROF
28 WINCH WINCH VTALRM WINCH TTOU VTALRM WINCH
29 IO LOST PROF PWR URG PROF INFO
30 PWR USR1 XCPU USR1 LOST XCPU USR1
31 SYS USR2 XFSZ USR2 - XFSZ USR2
32 - - - PROF - WAITING -
33 - - - DANGER - LWP -
34 - - - VTALRM - FREEZE -
35 - - - MIGRATE - THAW -
36 - - - PRE - CANCEL -
37 - - - - - LOST -

Como obtener el listado: trap -l, kill -l ó killall -l
Ver también: man 7 signal

16. Códigos de retorno de comandos

Código Significado Ejemplo
0 No hubo errores, ejecución finalizó OK echo
1 La mayoría de los errores comunes echo $((1/0))
2 Error de uso en algún 'builtin' de Shell -
126 Comando no ejecutable (sin permisos) touch a ; ./a
127 Comando no encontrado ("command not found") echooo
128 El parámetro para 'exit' no es un decimal exit 1.0
128+n 128 + código de la señal que mató al proceso kill -9 $PPID #exit 137
130 Programa interrumpido con Ctrl+C (128 + 2) -
255 El parámetro para 'exit' no está entre 0 y 255 exit -1

17. Códigos de colores (ANSI)

Color Letra Fondo
Negro 30 40
Rojo 31 41
Verde 32 42
Amarillo 33 43
Azul 34 44
Rosa 35 45
Cian 36 46
Blanco 37 47
Atributo Valor
Reset 0
Negrita 1
Subrayado 4
Parpadeando 5
Inverso 7
Ejemplos: ESC [ <N>;<N> m
Texto normal (apaga colores) ESC[m
Negrita ESC[1m
Amarillo ESC[33;1m
Fondo azul, letra gris ESC[44;37m
Rojo parpadeando ESC[31;5m
En la línea de comando
echo -e '\e[33;1m amarillo \e[m'
echo -e '\033[33;1m amarillo \033[m'

18. Metacaracteres de las expresiones regulares

Meta Nombre Descripción
. Punto Comodín para un carácter
[] Lista Cualquiera de los caracteres listados
[^] Lista negativa Cualquier carácter, excepto los listados
? Opcional El objeto previo puede aparecer o no (opcional)
* Asterisco El objeto previo puede aparecer en cualquier cantidad
+ Más El objeto previo debe aparecer como mínimo una vez
{,} Llaves El objeto previo debe aparecer en la cantidad indicada
^ Circunflejo Comienzo de la línea
$ Pesos Fin de la línea
\b Borde Limita una palabra (letras, números y subrayado)
\ Escape Carácter de escape para un meta, lo deja sin efecto
| O Indica alternativas (usar con el grupo)
() Grupo Agrupa partes de la expresión (cuantificable y multinivel)
\1 Retrovisor Recupera el contenido del grupo 1
\2 Retrovisor Recupera el contenido del grupo 2 (sigue hasta el \9)
.* Comodín Expande como cualquier cosa, es todo o nada
?? Opcional NG Igual a opcional común, pero expande el mínimo posible
*? Asterisco NG Igual a asterisco común, pero expande el mínimo posible
+? Más NG Igual a más común, pero expande el mínimo posible
{}? Llaves NG Igual a llaves comunes, pero expande el mínimo posible

19. Metacaracteres que son diferentes en las aplicaciones

Programa Opc Más Llaves Borde O Grupo
awk ? + - - | ()
ed \? \+ \{,\} \b \| \(\)
egrep ? + {,} \b | ()
emacs ? + - \b \| \(\)
expect ? + - - | ()
find ? + - \b \| \(\)
gawk ? + {,} \<\> | ()
grep \? \+ \{,\} \b \| \(\)
mawk ? + - - | ()
perl ? + {,} \b | ()
php ? + {,} \b | ()
python ? + {,} \b | ()
sed \? \+ \{,\} \<\> \| \(\)
vim \= \+ \{,} \<\> \| \(\)

20. Caracteres ASCII imprimibles (ISO-8859-1) - texto

$ zzascii
32        64  @     96  `    162  ¢    194  Â    226  â
33  !     65  A     97  a    163  £    195  Ã    227  ã
34  "     66  B     98  b    164  ¤    196  Ä    228  ä
35  #     67  C     99  c    165  ¥    197  Å    229  å
36  $     68  D    100  d    166  ¦    198  Æ    230  æ
37  %     69  E    101  e    167  §    199  Ç    231  ç
38  &     70  F    102  f    168  ¨    200  È    232  è
39  '     71  G    103  g    169  ©    201  É    233  é
40  (     72  H    104  h    170  ª    202  Ê    234  ê
41  )     73  I    105  i    171  «    203  Ë    235  ë
42  *     74  J    106  j    172  ¬    204  Ì    236  ì
43  +     75  K    107  k    173       205  Í    237  í
44  ,     76  L    108  l    174  ®    206  Î    238  î
45  -     77  M    109  m    175  ¯    207  Ï    239  ï
46  .     78  N    110  n    176  °    208  Ð    240  ð
47  /     79  O    111  o    177  ±    209  Ñ    241  ñ
48  0     80  P    112  p    178  ²    210  Ò    242  ò
49  1     81  Q    113  q    179  ³    211  Ó    243  ó
50  2     82  R    114  r    180  ´    212  Ô    244  ô
51  3     83  S    115  s    181  µ    213  Õ    245  õ
52  4     84  T    116  t    182  ¶    214  Ö    246  ö
53  5     85  U    117  u    183  ·    215  ×    247  ÷
54  6     86  V    118  v    184  ¸    216  Ø    248  ø
55  7     87  W    119  w    185  ¹    217  Ù    249  ù
56  8     88  X    120  x    186  º    218  Ú    250  ú
57  9     89  Y    121  y    187  »    219  Û    251  û
58  :     90  Z    122  z    188  ¼    220  Ü    252  ü
59  ;     91  [    123  {    189  ½    221  Ý    253  ý
60  <     92  \    124  |    190  ¾    222  Þ    254  þ
61  =     93  ]    125  }    191  ¿    223  ß    255  ÿ
62  >     94  ^    126  ~    192  À    224  à
63  ?     95  _    161  ¡    193  Á    225  á

21. Caracteres ASCII imprimibles (ISO-8859-1) - imagen

22. Códigos listos para copiar y pegar

Condicionales con IF
if [ -f "$archivo" ]; then echo 'Archivo encontrado'; fi
if [ ! -d "$dir" ]; then echo 'Directorio no encontrado'; fi
if [ $i -gt 5 ]; then echo 'Mayor que 5'; else echo 'Menor que 5'; fi
if [ $i -ge 5 -a $i -le 10 ]; then echo 'Entre 5 y 10 inclusive'; fi
if [ $i -eq 5 ]; then echo '=5'; elif [ $i -gt 5 ]; then echo '>5'; else echo '<5'; fi
if [ "$USER" = 'root' ]; then echo 'Hola root!'; fi
if grep -qs 'root' /etc/passwd; then echo 'Usuario encontrado'; fi
Condicionales con Y (&&) y O (||)
[ -f "$archivo" ] && echo 'Archivo encontrado'
[ -d "$dir" ] || echo 'Directorio no encontrado'
grep -qs 'root' /etc/passwd && echo 'Usuario encontrado'
cd "$dir" && rm "$archivo" && touch "$archivo" && echo 'listo!'
[ "$1" ] && param=$1 || param='valor por defecto'
[ "$1" ] && param=${1:-valorpordefecto}
[ "$1" ] || { echo "Uso: $0 parámetro" ; exit 1 ; }
Adicionar 1 a una variable $i
i=$(expr $i + 1)
i=$((i+1))
let i=i+1
let i+=1
let i++
Loop de 1 a 10
for i in 1 2 3 4 5 6 7 8 9 10; do echo $i; done
for i in $(seq 10); do echo $i; done
for ((i=1;i<=10;i++)); do echo $i; done
i=1 ; while [ $i -le 10 ]; do echo $i ; i=$((i+1)) ; done
i=1 ; until [ $i -gt 10 ]; do echo $i ; i=$((i+1)) ; done
Loop sobre las líneas de un archivo o sobre la salida de un comando
cat /etc/passwd | while read LINEA; do echo "$LINEA"; done
grep 'root' /etc/passwd | while read LINEA; do echo "$LINEA"; done
while read LINEA; do echo "$LINEA"; done < /etc/passwd
while read LINEA; do echo "$LINEA"; done < <(grep 'root' /etc/passwd)
Comodines en los ítems del comando case
case "$dir" in /home/*) echo 'dir dentro de /home';; esac
case "$user" in root|juan|maria) echo "Hola $user !";; *) echo "No te conozco";; esac
case "$var" in ?) echo '1 letra';; ??) echo '2 letras';; ??*) echo 'más de 2';; esac
case "$i" in [0-9]) echo '1 dígito';; [0-9][0-9]) echo '2 dígitos';; esac
Cuadros con Dialog
dialog --calendar 'abc' 0 0 31 12 1999
dialog --checklist 'abc' 0 0 0 item1 'desc1' on item2 'desc2' off
dialog --fselect /tmp 0 0
(echo 50; sleep 2; echo 100) | dialog --gauge 'abc' 8 40 0
dialog --infobox 'abc' 0 0
dialog --inputbox 'abc' 0 0
dialog --passwordbox 'abc' 0 0
dialog --menu 'abc' 0 0 0 item1 'desc1' item2 'desc2'
dialog --msgbox 'abc' 8 40
dialog --radiolist 'abc' 0 0 0 item1 'desc1' on item2 'desc2' off
dialog --tailbox /tmp/archivo.txt 0 0
dialog --textbox /tmp/archivo.txt 0 0
dialog --timebox 'abc' 0 0 23 59 00
dialog --yesno 'abc' 0 0
Tip1: dialog ... && echo 'Presionó OK/Yes' || echo 'Presionó Cancel/No'
Tip2: respuesta=$(dialog --stdout --TIPODECAIXA 'abc' ...)

23. Atajos de la línea de comando (set -o emacs)

Atajo Descripción Tecla Similar
Ctrl+A Mueve cursor al inicio de la línea Home
Ctrl+B Mueve cursor un lugar a la izquierda
Ctrl+C Envia señal EOF() al sistema
Ctrl+D Borra un carácter a la derecha Delete
Ctrl+E Mueve cursor al fin de la línea End
Ctrl+F Mueve cursor un lugar a la derecha
Ctrl+H Borra un carácter a la izquierda Backspace
Ctrl+I Completa archivos y comandos Tab
Ctrl+J Línea nueva Enter
Ctrl+K Corta del cursor al fin de la línea
Ctrl+L Limpa la pantalla (igual que 'clear')
Ctrl+N Próximo comando
Ctrl+P Comando anterior
Ctrl+Q Destraba el shell (ver Ctrl+S)
Ctrl+R Busca en el histórico de comandos
Ctrl+S Traba el shell (ver Ctrl+Q)
Ctrl+T Intercambia dos caracteres de lugar
Ctrl+U Corta la línea entera
Ctrl+V inserta un carácter literal
Ctrl+W Corta la palabra a la izquierda
Ctrl+X Mueve cursor al inicio/fin de línea (x2) Home/End
Ctrl+Y Pega el texto cortado

24. La caja de herramientas del shellero

Comando Función Opciones útiles
cat Muestra archivo -n, -s
cut Extrae campo -d -f, -c
date Muestra fecha -d, +'...'
diff Compara archivos -u, -Nr, -i, -w
echo Muestra texto -e, -n
find Encuentra archivos -name, -iname, -type f, -exec, -or
fmt Formatea párrafos -w, -u
grep Encuentra cadena -i, -v, -r, -qs, -n, -l, -w -x, -A -B -C
head Muestra inicio -n, -c
od Muestra caracteres -a, -c, -o, -x
paste Une archivos -d, -s
printf Muestra texto ninguna
rev Invierte texto ninguna
sed Edita texto -n, -f, s/esto/aquello/, p, d, q, N
seq Cuenta números -s, -f
sort Ordena texto -n, -f, -r, -k -t, -o
tac Invierte archivo ninguna
tail Muestra final -n, -c, -f
tee Archiva flujo -a
tr Transforma texto -d, -s, A-Z a-z
uniq Remueve duplicados -i, -d, -u
wc Cuenta letras -c, -w, -l, -L
xargs Gerencia argumentos -n, -i
— EOF —

Aprenda mais sobre Shell Script