En este segundo articulo sobre el interprete de comandos bash, vamos a ver tres cosas importantes cuando trabajamos con bash:
Estas tres cosas nos van a ayudar a trabajar y a escribir scripts y ficheros de configuracion en bash, a conseguir informacion sobre el interprete de comandos y a hacernos nuestro dias como administradores mucho mas faciles y llevaderos (siempre que usemos Bash como nuestro interprete de comandos).
Aqui tenemos los comandos y palabras reservadas mas importantes que se pueden utilizar con bash, tanto desde scripts como desde la linea de comandos. Mas adelante en esta serie de articulos explicaremos y daremos ejemplos de como usarlos.
Comando Explicacion ----------------------------------------------------------------------------- ! Palabra reservada. Valor logico NOT del codigo de retorno de un comando : No hace nada (expande cualquier argumento) . Lee un fichero y ejecuta su contenido en el interprete de comando actual alias Configura un 'alias' para un comando o linea de comandos bg Pone un trabajo en 'background' bind Asigna una secuencia de teclas a una funcion 'readline' o macro break Sale de un bucle for, select, while o until builtin Ejecuta el interprete de comandos especificado case Palabra reservada. Construccion condicional cd Cambia el directorio de trabajo actual. command Ejecuta un comando sin pasar por la funcion de busqueda del interprete de comandos. continue Salta a la siguiente interacion en un bucle for, select, while o until declare Define variables y les da atributos dirs Muestra la lista actual de directorios recordados disown Remueve un trabajo/proceso de la tabla de trabajod/procesos do Palabra reservada. Parte de un bucle for, select, while o until done Palabra reservada. Parte de un bucle for, select, while o until echo Expande e imprime cualquier argumento elif Palabra reservada. Parte de una construccion if else Palabra reservada. Parte de una construccion if enable Enable and disable built-in shell commands esac Palabra reservada. Parte de una construccion case. eval Ejecuta los argumentos dados a traves de la linea de comandos exec Reemplaza el interprete de comandos con el programa definido exit Sale de el interprete de comandos export Crea variables de entorno fc Edita el fichero con la historia de comandos usados fg Pone un trabajo/proceso en background a foreground fi Palabra reservada. Parte de un construccion if. for Palabra reservada. Bucle de tipo for. function Define una funcion. getopts Procesa opciones de la linea de comandos. hash Rutas de acceso completas son determinadas y recordadas help Muestra informacion sobre comandos embedidos. history Muestra la historia de comandos usados if Palabra reservada. Construccion condicional de tipo if in Palabra reservada. Parte de una construccion condicional de tipo case jobs Muestra una lista con trabajos/procesos ejecutandose en background kill Manda una signal a un proceso let Asigna una variable aritmetica local crea una variable local logout Sale de un interprete de comando de tipo login popd Remueve un directorio del 'stack' de directorios pushd Añade un directorio al 'stack' de directorios pwd Muestra el directorio de trabajo actual. read Lee una linea en el 'standard input' readonly Hace las variable del tipo solo lectura return Retorna de una funcion o script select Palabra reservada. Construccion del tipo generacion de menus. set Define opciones shift Cambia argumentos de la linea de comandos. suspend Suspende la ejecucion de un interprete de comandos. test Evalua una expresion condicional. then Palabra reservada. Parte de una construccion if. time Palabra reservada. Ejecuta un comando y muestra los tiempos de ejecucion. El formato de salida puede ser controlado con TIMEFORMAT times Muestra los tiempos de usuario y sistema acumulados para procesos ejecutados desde el interprete de comandos trap Define una rutina para atrapar una 'signal' type Identifica la fuente de un comando typeset Define variables y les da atributos. Igual que 'declare' ulimit Define/muestra los limites de recursos para los procesos umask Define/muestra la mascara de los permisos de ficheros unalias Remueve definiciones de alias unset Remueve definiciones de variables o funciones until Palabra reservada. Bucle de tipo until wait Espera a que trabajos/procesos en background terminen de ejecutarse while Palabra reservada. Bucle de tipo while
A continuacion tenemos la lista de variables reservadas por el interprete de comandos mas comunes. Todas ellas tienen un significado especial para el mismo, algunas de ellas solo se pueden leer, a otras se le asignan ciertos valores automaticamente y algunas pierden su significado si le cambiamos los valores que tienen por defecto.
Variable Explicacion
---------------------------------------------------------------------------
CDPATH Una lista de directorios separados por el signo ':' usada como
ruta de acceso por el comando cd
HOME El directorio principal de usuario
IFS Una lista de caracteres para separar campos; usado cuando el
interprete de comandos separa palabras como parte de una expansion.
MAIL Si este parametro tiene un fichero definido y la variable
MAILPATH no esta definida, bash informa al usuario de la
llegada de correo al fichero especificado.
MAILPATH Una lista de ficheros separada por comas, en los cuales el
interprete de comandos comprueba periodicamente de la llegada
de correo.
OPTARG El valor del ultimo argumento procesado por getopts.
OPTIND El indice del ultimo argumento procesado por getopts
PATH Una lista de directorios, separados por comas, en los cuales
el interprete de comandos busca por comandos
PS1 Prompt principal. El valor por defecto es “'\s-\v\$ '
PS2 El prompt secundario. El valor por defecto es '> '
auto_resume Esta variable controla como el interprete de comandos
interaciona con el control de usuario y trabajos/procesos
BASH La ruta de acceso completa usada para ejecutar la instancia
actual de bash
BASH_ENV Si esta variable esta definida cuando bash es llamado para
ejecutar un script, su valor es expandido y usado como el
nombre del fichero leido antes de ejecutar el script.
BASH_VERSION El numero de version de bash usada
BASH_VERSINFO Una matriz de solo lectura con informacion sobre la version de
bash usada.
COLUMNS Usada por 'select' para determinar el ancho de la terminal
cuando imprime listas de menus.
COMP_CWORD Un indice en ${COMP_WORDS} de la palabra conteniendo la
posicion del puntero actual
COMP_LINE La linea de comando actual
COMP_POINT El indice de la posicion relativa del puntero actual con
respecto al comienzo del comando actual
COMP_WORDS Una matriz con las palabras individuales en la linea de
comando actual
COMPREPLY Una matriz de donde bash lee las palabras posibles generadas
por una funcion del interprete de comandos usada por la
utilidad de generacion de terminos posibles.
DIRSTACK Una matriz que contiene los contenidos actuales del stack de directorios
EUID El identificador numerico de usuario del usuario actual
FCEDIT El editor usado por defecto por la opcion -e del comando 'fc'
FIGNORE Una lista separada por comas de sufijos a ignorar cuando se
efectua la generacion de posibles nombres de ficheros.
FUNCNAME El nombre de la funcion que se esta ejecutando actual
GLOBIGNORE Una lista separada por comas de los patrones que definen el
conjunto de nombres de ficheros a ignorar cuando se efectua la
generacion de posibles nombres
GROUPS Una matriz que contiene la lista de los grupos a que pertenece
el usuario actual
HISTCMD El indice del comando actual en la historia de comandos
HISTCONTROL Define si un comando es ańadido a la historia de comandos
HISTFILE El nombre del fichero en el cual se graba la historia de comandos
de comandos. El valor por defecto es ~/.bash_history
HISTFILESIZE El numero maximo de lineas contenidas en la historia de comandos,
por defecto 500
HISTIGNORE Una lista separada por comas de los patrones usados para
definir que comandos deben de grabarse en la historia de comandos
HISTSIZE El maximo numero de comandos a recordar en la historia de
comandos, por defecto 500
HOSTFILE Contiene el nombre de un fichero en el mismo formato que
/etc/hosts que deberia de usarse cuando el interprete de
comandos necesita completar un nombre de maquina (hostname)
HOSTNAME El nombre de maquina actual
HOSTTYPE Cadena describiendo la maquina que esta ejecutando Bash
IGNOREEOF Controla la accion a tomar cuando el interprete de comandos
recibe un caracter EOF
INPUTRC Nombre del fichero de inicializacion de 'Readline',
sobreescribiendo el valor por defecto /etc/inputrc.
LINES Usada para determinar la anchura de la columna usada para
imprimir listas
MACHTYPE Cadena describiendo el tipo de sistema que esta ejecutando Bash
MAILCHECK Frecuencia de comprobacion (en segundos) del correo
electronico en el fichero definido en las variables MAILPATH o MAIL
OLDPWD Directorio previo definido por el comando 'cd'
OSTYPE Cadena describiendo el sistema operativo que esta ejecutando Bash
PPID El numero de proceso del proceso padre del interprete de comandos
PS3 El valor de esta variable se usa como 'prompt'
PWD Directorio actual definido por el comando 'cd'
RANDOM Cuando se llama esta variable un numero entero entre 0 32767
es generado
SECONDS Numero de segundos desde que Bash fue arrancado
SHELLOPTS Lista con opciones de Bash activadas
UID El valor numerico real del usuario actual
Cuando usamos bash existen una serie de combinaciones de teclas que se pueden utilizar para editar y realizar operaciones usuales.
Existen dos modos de edicion, mode emacs y modo vi. El modo por defecto es emacs, pero para los que estan acostumbrados a utilizar el editor 'vi', no es dificil cambiar entre los modos.
Para cambiar de modos podeis ejecutar estos comandos:
$ set -o emacs $ set -o vi
Nosotros nos vamos a centrar en el modo de edicion emacs, al ser el modo por defecto y el mas usado. A continuacion teneis las combinaciones mas usuales (aunque no son las unicas):
Para moverse por la linea de comandos:
Ctrl + A Ir al principio de linea Ctrl + E Ir al final de linea ESC + B Ir una palabra hacia atras ESC + F Ir una palabra hacia adelante Ctrl + B Ir una letra hacia atras Ctrl + F Ir una letra hacia adelante
Para moverse por el historial de comandos ejecutados:
Ctrl + N Proxima linea en el historial Ctrl + P Previa linea en el historial Ctrl + R Busqueda atras en el historial Ctrl + S Busqueda adelante en el historial
Para borrar parte de la linea de comandos:
Ctrl + U Borra de la posicion actual al principio de la linea Ctrl + K Borra de la posicion actual al final de la linea Ctrl + W Borra de la posicion actual al principio de la palabra ESC + D Borra de la posicion actual al final de la palabra Ctrl + D Borra el caracter actual hacia adelante Ctrl + Y Deshace el ultimo borrado
Transformaciones:
Ctrl + T Intercambiar dos letras
ESC + C Cambiar a mayuscula la primera letra de la primera palabra
despues de la posicion actual
ESC + L Cambiar a minusculas la primera palabra despues de la posicion
actual
ESC + T Intercambiar dos palabras
ESC + U Cambiar a mayusculas la primera palabra despues de la posicion
actual
TAB + TAB Autocompleta palabras (comandos, ficheros, directorios, variables etc)
con posibles valores
En nuestra proxima entrega empezaremos a ver como usar la informacion de este articulo para trabajar con bash y empezar a escribir nuestros primeros scripts.
Articulos anteriores relacionados:
Comentarios
VALORES ASIGNADOS A VARIABLES DE ENTORNO
Lun, 25/05/2009 - 04:26 — AnónimoQ COMANDOS PUEDO UTILIZAR PARA VER LOS VALORES ASIGNADOS ACTUALMENTE A LAS VARIABLES D ENTORNO??
Re: ...
Lun, 25/05/2009 - 12:54 — AnimAlfEsto no varia de un sistema a otro set, en GNU/Linux env tambien.
Eh!!! Netiqueta PLEASE!!!
muy bueno
Vie, 12/06/2009 - 23:44 — Anónimomuy bueno
separacion por comas
Jue, 09/07/2009 - 14:50 — Anónimoen referencia a la variable de entorno PATH, yo siempre he usado como separador el signo ':' y no ','
Re: separacion por comas
Vie, 10/07/2009 - 23:42 — AnimAlfpués sí, yo también, ¿funciona con comas? :)))
Enviar nuevo comentario