RSS
Facebook
G+

Buscador de IntercambioSOS:


Retroceder   Foro de Ayuda IntercambiosvirtualeS > Soporte Sobre: Software > Sistemas Operativos > Linux

Respuesta
 
Herramientas Desplegado
Antiguo 14-dic-2012     #1
Corazón Tema 105: Intérpretes de comandos, Scripts y Gestión de Datos - 105.1 Personalizar y usar el intérpr


Para este viernes, os traigo una nueva entrega para la Certificación LPI-1, donde vereis como personalizar y usar el intérprete de comandos, así como modificar y personalizar los perfiles generales y especificos de los usarios, y todo desde nuestra ventana de terminal.

105.1 Personalizar y usar el intérprete de comandos
(Peso 4)

Los aspirantes a obtener el Certificado LPI-1 deben ser capaces de configurar el entorno de shell para satisfacer las necesidades de los usuarios. También deben saber modificar los perfiles generales y específicos de los usuarios.

Conocimientos clave:
  • Creación de variables de entorno, como PATH, en el login o cuando se ejecuta un nuevo shell.
  • Escribir funciones BASH para secuencias de comandos utilizadas frecuentemente.
  • Mantener un esquema de directorios para nuevas cuentas de usuarios.
  • Definir el camino de búsqueda (PATH) de comandos con los directorios apropiados.

Lista parcial de archivos, términos y herramientas tratadas:

  • /etc/profile
  • env
  • export
  • set
  • unset
  • ~/.bash_profile
  • ~/.bash_login
  • ~./profile
  • ~/.bashrc
  • ~/.bash_logout
  • function
  • alias
  • lists
Variables

Las variables de entorno tienen la funcionalidad de configurar ciertos aspectos del entorno del intérprete de comandos y otros programas, que pueden cambiar con el tiempo. Estas variables se establecen cuando se abre una sesión, y la mayoría son configuradas por los scripts de inicio del intérprete de comandos.

Los nombres de las variables pueden contener minúsculas, mayúsculas, cifras, caracteres de subrayado, pero el primer carácter no puede ser una cifra, por costumbre se utilizan nombres en mayúsculas para las variables del sistema, y es una buena idea declarar las variables del usuario en minúsculas, para diferenciarlas de las variables del sistema.

Se declara una variable en cuanto se le asigna un valor. Se efectúa la asignación con el signo =, sin espacio antes ni después del signo.
$ variable=valor (variable que puede ser de un usuario - minúsculas)
El comando export permite exportar una variable de manera que su contenido sea visible por los scripts y otros subshells. Se pueden modificar las variables exportadas en el script, pero estas modificaciones sólo se aplican al script o al subshell.
$ export VARIABLE=valor (variable exportada que puede ser global por estar en mayúsculas)
Para ver el contenido de una variable, se puede usar el comando echo colocando el signo $ delante del nombre de la variable. Cuando el shell encuentra el $, intenta interpretar la palabra siguiente como si fuera una variable. Si existe, entonces se sustituye el $nombre_variable por su contenido, o por un texto vacío en el caso contrario.:
echo $VARIABLE
Para eliminar una variable, se utiliza el comando interno del intérprete bash, llamado unset pasándole como parámetro el nombre de la variable.
unset $VARIABLE (Eliminamos la variable Global)
Se Puede proteger una variable en modo escritura y contra su supresión con el comando readonly. Una variable en modo de sólo lectura, incluso vacía, es exclusiva. No existe ningún medio de sustituirla en escritura y de suprimirla, salvo saliendo del shell. (Podriamos decir que esta variable readonly se comporta como las constantes declaradas en otros lenguajes de POO).

Es importante notar que una vez que se sale de una sesión, las variables establecidas se pierden. Es por eso que si se necesita disponer de variables específicas cada vez que se abra una sesión en GNU/Linux, es imprescindible agregar dichas configuraciones a los archivos de inicio del intérprete de comandos.

Otro uso común de estas variables es en los scripts, programas hechos en el lenguaje del intérprete (bash,...); las variables de entorno son de gran ayuda para establecer configuraciones fácilmente cambiables en dichos programas.
Vemos a continuación algunos comandos relacionados con las variables de entorno:
$ env (Muestra las variables globales de entorno y sus valores)
$ set (Muestra tanto las variables de entorno como las locales y funciones)
$ declare -f (Muestra todas las funciones disponibles)
El comando env en realidad es un programa que se encuentra en /usr/bin/env, mientras que set y unset son propios de la shell.

A continuacion vemos una lista de variables reservadas por el intérprete de comandos más comunes:
  • HOME El directorio principal de usuario
  • PATH Una lista de directorios, separados por 2 puntos, en los cuales el shell busca por comandos
  • PS1 Prompt principal. El valor por defecto es “'s-v$'
  • PS2 El prompt secundario. El valor por defecto es '> '
  • BASH La ruta de acceso completausada para ejecutar la instancia actual de bash
  • EUID El identificador numérico de usuario del usuario actual
  • GROUPS Contiene la lista de los grupos a que pertenece el usuario actual
  • 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 decomandos. El valor por defecto es ~/.bash_history
  • HISTFILESIZE El número máximo de líneas contenidas en la historia de comandos, por defecto 500
  • HISTSIZE El máximo número de comandos a recordar en la historia de comandos, por defecto 500
  • HOSTNAME El nombre de máquina actual
  • PPID El número de proceso del proceso padre del interprete de comandos.
  • UID El valor numerico real del usuario actual
A parte de las variables de entorno de las que se dispone por defecto, se pueden crear nuevas variables con las que trabajar. Por norma general son especialmente interesantes para programar la automatización de ciertas tareas (lo que se conoce como Shell-Script), aunque es posible cambiar las variables de entorno de la misma forma que se pueden crear otras nuevas.

De este modo, el trabajo con variables escompletamente accesible al usuario, sea para modificar su entorno tanto como para crear hábitos nuevos de trabajo.

Para crear una variable es suficiente con asignarle directamente un valor. No hace falta que se defina una variable antes de asignarle un valor, sencillamente las variables cogen un valor independientemente del tipo del mismo, y se diferencian únicamente por las operaciones que se pueden aplicar al valor asignado. Una variable será de tipo real o entero si pueden realizarse operaciones algebraicas sobre su valor. Del mismo modo, una variable será de tipo string (cadena de texto) si pueden realizarse comprobaciones de longitud de la cadena u otros tipos de operaciones sobre el valor asignado. Por norma general una variable de tipo numérico también admite operaciones de variables de tipo string, puesto que un número no deja de ser una cadena de texto formada por caracteres numéricos.

Combinaciones especiales de teclas

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, modo emacs y modo vi o vim. El modo por defecto es emacs, pero para los que estan acostumbrados a utilizar el editor ‘vi’, no es dificil cambiar entre los modos (yo personalmente les recomiendo usar vim ya que cuando uno se acostumbra es tremendamente rapido).

Para cambiar de modos podeis ejecutar estos comandos:
$ set -o emacs
$ set -o vi
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
  • [Tab][Tab](mi preferida): Autocompleta palabras(comandos, ficheros, directorios, variables, etc...) con posibles valores
El Historial de comandos

Durante una sesión de terminal, todos los comandos que vamos ejecutando se van guardando en un buffer temporal, cuando cerramos la sesión estos comandos se guardan al final del archivo definido en la variable $HISTFILE, que suele ser .bash_history

A continuación vemos una serie de ordenes para ejecutar comandos del historial:
$ history | less (Muestra el historial de comandos)
$ !20 (Muestra la linea 20 del historial y luego la ejecuta)
$ !-3 (Ejecuta la antepenúltima línea del historial)
$ sudo !! (Ejecuta la última línea con sudo por delante)
$ !sudo (Ejecuta la última línea que empieza por sudo)
$ history -c (Borra el historial)
$ echo $$ (Muestra el pid del proceso que se esta ejecutando actualmente)
Si tenemos definida la variable $HISTCONTROL como ignoreboth significa que esta definida como ignoredups (evita duplicados contiguos en el historial) y ignorespace (no guarda en el historial todas aquellas líneas que empiezan con un espacio en blanco).

Un comando multilinea se puede escribir de dos formas diferentes:
  • Una, abriendo comillas (”) en una linea y no cerrarla hasta la siguiente:
$ echo " esto es un ejemplo
> de comando multilinea usando comillas dobles"
  • La otra es utilizando la anti-barra () al final de cada linea, por ejemplo:
$ ./configure
--with-config1
--with-config2
--with-etc-etc
Para moverse por el historial de comandosejecutados:
  • [Ctrl] N: Proxima linea en el historial
  • [Ctrl] P: Previa linea en el historial
  • [Ctrl] R: Busqueda hacia atras en el historial
  • [Ctrl] S:Busqueda hacia adelante en el historial
Archivos de configuración

Al iniciar sesión en una terminal se ejecutan unos archivos de configuración dependiendo si la sesión la iniciamos con login (ejemplo Crtl+Alt+F1 para abrir una nueva terminal) o no, que suele ser lo más habitual si hemos iniciado desde un entorno de escritorio.

Los archivos que se procesan al ejecutar una terminal con login son:
  • /etc/profile (caracteristicas generales para todos los usuarios)
  • ~/.bash_profile (caracteristicas particulares del usuario)

Información contenida el archivo /etc/profile.

Los archivos que se procesan al ejecutar una terminal sin login son:
  • /etc/bash.bashrc (caracteristicas generales para todos los usuarios)
  • ~/.bashrc (caracteristicas particulares del usuario)
Al cerrar sesión se ejecuta el archivo:
  • ~/.bash_logout


Otros archivos a tener en cuenta son:
  • /etc/issue[.net] Muestra los mensajes de bienvenida cuando inicias sesión. [.net] es opcinal y no todo los sistemas GNU/Linux tienen esa extensión. Por ejemplo en Debian 6 solo tenemos que poner vim /etc/issue para editar el mensaje de bienvenida la sistema.
  • /etc/motd (Message Of The Day). Mensaje “últimas notícias”. Lo muestra después del login.
Se puede iniciar el shell en modo no interactivo. Suele ser el caso cuando se ejecuta un script. En este caso, no hay ningún script ejecutado por defecto en el momento del inicio salvo si se especifica una variable llamada BASH_ENV que contiene la ruta de un script. En este caso, bash carga y ejecuta este fichero antes de comenzar con la ejecución del script o del comando.

Las Funciones

Para simplificar tareas repetitivas, es posible escribir funciones que agrupan comandos. Pueden escribirse directamente por la línea de comandos o definirse en scripts o en los archivos de configuración del bash, basta con incluir la función en el archivo ~./bashrc.

Sintaxis de una función:
function nombre_de_funcion () { comando1; comando2; etc...}
Aqui os dejo un ejemplo con dos funciones una si parametros y la otra con parametros.

#!/bin/bash function quit { exit } function ec { echo $1 } e Hola e " Compañeros de IV, les saluda McGregor!!!" quit echo foo Si ejecutais este archivo shell en el terminal vereis que os imprime el mensaje Hola Compañeros de IV, les saluda McGregor!!! y luego apaga el terminal donde os encontrais.

Los Alias

A menudo cansado de escribir largas ristras de comandos, nos ayudamos con alias para hacer más llevadero el trabajo. Un alias es un atajo a un comando y a sus posibles parámetros. Para definirlos usamos el comando alias, yo personalmente para limpiar el terminal tengo definido $ alias cls='clear' por ser mas corto y por herencia de cuando comence con MS-DOS. alias usado sin argumentos, nos muestra una lista de los alias definidos y disponibles en nuestro sistema GNU/Linux.
$ alias
alias cd..='cd ..'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -l'
Podemos crear nuestros propios alias y grabarlos el el archivo .bashrc para tenerlos disponibles en cada inicio de sesión.

Bueno hasta aquí todo lo que comprende los comandos GNU/Linux que se contemplan en el apartado Tema 105.1 Personalizar y usar el intérprete de comandos con el terminal, seguiré añadiendo cosas vinculadas al post Administración de Linux - Certificación LPI


Saludos y espero que lo disfruten, hasta la proxima entrega.


Responder Citando
Los siguientes 2 usuarios agradecen a McGregor por este mensaje:
Orpheus96 (14-dic-2012), Tururojo (15-dic-2012)
Antiguo 14-dic-2012     #2
Predeterminado

Gracias McGregor, muy completo, esta tambien es mi preferida [Tab][Tab]

Responder Citando
Antiguo 15-dic-2012     #3
Predeterminado




Mi Sabiduria, abarca lo que una gota de Agua, en el Oceano del Conocimiento
Responder Citando
Antiguo 15-dic-2012     #4
Predeterminado

Excelente tuto compañero, muchas gracias !!!!!
Responder Citando
Respuesta

Etiquetas
administración sistemas linux, certificación profesional linux, examen oficial lpi, lpi1


(0 miembros y 1 visitantes)
 
Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los Códigos BB están Activado
Las Caritas están Activado
[IMG] está Activado
El Código HTML está Desactivado

Ir al Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
[App] JLOJCH: Listado Oficial de Juegos Compatibles con HDL,OPL,USB,ESR by Tapia nokiajavi Software 17 25-jun-2015 15:59
Cómo configurar e instalar vBulletin paso a paso Daniel Muñoz vBulletin 12 15-jun-2014 08:54
Tema 103: Comandos GNU y UNIX - 103.1 Trabajar en línea de comandos McGregor Linux 4 11-dic-2012 05:20
Manual fspassengers en español Corbet AudioLibros, Manuales, Libros & Revistas 4 30-mar-2011 23:57


Desarrollado por: vBulletin® Versión 3.8.1
Derechos de Autor ©2000 - 2024, Jelsoft Enterprises Ltd.
Ad Management by RedTyger