LUG.ro
GNU/Linux
LUG.ro - GNU/Linux Users
Group Rosario
Rosario
en


Tema 4

  Empezando con GNU/Linux

Los usuarios que recién comienzan a utilizar un entorno operativo UNIX como es GNU/Linux se sienten intimidados por la complejidad que este SO posee.
Existen numerosos libros que ya han tratado el tema de GNU/Linux pero ninguno de ellos puede cubrir en total profundidad todo los temas que este SO tiene para dar.
Este parte del curso no tratara de ahondar en detalles y como todo el curso, solo dará las pautas necesarias para que el estudiante pueda investigar los temas que más les interesen.
Lo que trataremos de hacer es ganar conceptos fundamentales para el mejor funcionamiento de esta clase de SO por lo que empezaremos con UNIX. Para ello pasaremos a ver los interpretes de comando y algunos comandos simples pero solo a modo de que se tenga una pequeña noción para comenzar a trabajar. Luego se profundizará en cada uno de estos puntos con mayor detalle.
Expondremos el concepto de árbol de directorios y su distribución así como también una lista del comando mas utilizados.
 
 

4.1: Conceptos básicos de UNIX:
 

Como antes vimos, GNU/Linux posee un 95 % de compatibilidad con el SO UNIX, es por esto veremos que la mayoría de las posibilidades de este se aplican.

UNIX posee las características de cualquier sistema operativo multiusuario y multitarea. Esto significa que puede existir mas de una persona usando la computadora a la vez, cada uno de ellos ejecutando un programa diferente.
Esta sensación la da el SO junto con las características del procesador ya que nos asigna tiempos para cada usuario y cada programa haciéndonos pensar que contamos con un procesador solo para nosotros.
El sistema de archivos es un árbol multinivel que permite a los usuarios crear sus propios subdirectorios.
 Tanto los programas escritos por los usuarios como los del sistema normalmente se ejecutan por medio de un interprete de comandos, que en UNIX o en GNU/Linux es un proceso de usuario como cualquier otro, al cual se le denomina shell. Aunque el shell es un programa, lo podemos observar como tres entes distintos: como programa, como proceso y como ambiente de trabajo.
El shell que se tomaba anteriormente como estándar era el Bourne Shell llamado simplemente sh escrito por el desarrollador Steven Bourne.
Pero el paso del tiempo a dado lugar a un nuevo estándar, el bash, y se usara de aquí en adelante para referirse al shell dado su gran aceptación en todos los sistemas UNIX y derivados.
 
 

4.2 Entrando al sistema y creación de cuentas:

Para empezar a ver las características de que GNU/Linux posee debemos dar algunas pautas generales sobre los usuarios que se ampliaran mas adelante.
Pondremos algunas pautas. Nuestro sistema tendrá un nombre que lo identificara en la red y este será "LUSI". Y aparecerá ante cualquier comando que pongamos como indicativo del sistema con la forma [usuario@LUSI /"directorio actual"]{símbolo}, donde "directorio actual" será el directorio donde estamos parados actualmente. Tendremos que tener dos usuarios mínimos de ejemplo para poder interactuar, que ya bautizaremos sebas y nanci. Dos indicativos que nos dirán con que tipo de usuario estamos trabajando en el lugar de {símbolo},se usará él "#" para el usuario root y "$" para el usuario común. Por supuesto que esto puede configurarse de manera distinta. Esta es solo una muestra de posibilidades que se podrían tener configuradas.

Ej. [root@LUSI /home]#

Aquí a entrado en el sistema el usuario "root" y esta parado sobre el directorio /home.
Dato: Como se habrá notado la barra indicativa del directorio raíz es "/" y no la acostumbrada en DOS "\".

Cuando inicia el sistema lo más probable es que tenga que ingresar como root o lo que denomina súper usuario. Para esta sección basta decir que el root es quien tiene poder absoluto sobre el sistema. Es quien puede hacer cualquier cosa que le plazca y más. Por ello se dice muchas veces: "En un sistema eres root o no eres nadie" y con razón.
Por ello se deberá usar esta cuenta lo menos posible, solo en el caso de tener que utilizar algún comando privilegiado o para mantenimiento del sistema. Si, cuanto más tiempo estemos trabajando como root, tendremos mas posibilidades de cometer un error irreparable que si trabajamos como un simple usuario.

Otra vez:
USA AL USUARIO ROOT LO MENOS POSIBLE, CUANTO MÁS TIEMPO ESTEMOS TRABAJANDO COMO ROOT, TENDREMOS MAS POSIBILIDADES DE COMETER UN ERROR IRREPARABLE QUE SI TRABAJAMOS COMO UN SIMPLE USUARIO.
Tal vez así se entienda mejor

Se vera un indicativo en la pantalla que le pedirá su nombre de usuario a través de la palabra login:

LUSI login:

Poniendo nuestro nombre de usuario y luego presionando intro o Enter (como más les guste), se podrá pasa a ingresar nuestra contraseña o password que no será mostrada en la pantalla para evitar que sea vista por alguna persona que este en los alrededores de su sistema, por ello se deberá teclear cuidadosamente:

Password:
 

Hay que recordar que GNU/Linux es case sensitive por lo que los caracteres en minúscula y mayúscula son distintos.
Si el password es incorrecto se mostrara el siguiente mensaje:

Login incorrect

Login:

Y se deberá intentar de nuevo

Una ves introducido correctamente el nombre de usuario  y el password uno es libre de empezar a trabajar con el sistema.

Lo primero que se deberá hacer al entrar al sistema recién instalado, si no es que se hizo durante la instalación, es crearnos una cuenta de usuario común:
Para esto podemos utilizar dos script que vienen por defecto en la mayoría de las distribuciones.
adduser y useradd.
Ambos realizan el mismo trabajo pero se han nombrado diferente en distintas distribuciones. En muchos casos uno es un enlace del otro.
Para la creación de una cuenta, se deberá entrar al sistema como root:

LUSI login:root
Password: xxxxxxx
Las login: Sun Mar 26 19:23:32 on tty1

Luego introduciremos uno de estos comandos seguido por el nombre de usuario que se quiera agregar al sistema.

[root@LUSI /]# adduser sebas
[root@LUSI /]#

Este comando creara una entrada en el archivo /etc/password donde la clave estará en blanco, ya veremos por que, y un subdirectorio en el directorio /home o /usr/home según se haya instalado.
La entrada de la clave en blanco esta dada porque tendremos que asignarle una contraseña para que el usuario pueda entrar al sistema y si le vienen ganas pueda cambiarla luego.
Ya veremos en el tema de Administración Básica de Sistemas las diferentes posibilidades que se pueden llegar a tener para la gestión de usuarios.
Con el comando passwd seguido del nombre del usuario le asignáremos una contraseña:

[root@LUSI /]# passwd sebas

New UNIX password:xxxxxxxx
Re-Type UNIX password:xxxxxxxx

Algo a tener muy en cuenta en lo que se refiere a la creación de claves para los usuarios es que muchas veces estos no la cambian durante mucho tiempo.
Este es un gran problema de seguridad, por lo que tendremos que darle a esta primera clave un plazo de espiración corto, no más de 30 días, para que el usuario se vea obligado a cambiarla inmediatamente.
Con respecto a la calidad de la clave, se tendrá que tener en cuenta que cuanto más fácil de recordar sea una clave, más fácil será que la descubra otra persona y cuanto más difícil sea de recordar se anotara en algún lugar que será menos seguro que si guardase en la memoria.
 Usar palabras muy conocidas o fechas de cumpleaños u otra cosa relacionada con nosotros es perjudicial para la seguridad de nuestro sistema.
Volveremos mas adelante con esto.
 

 4.3: Consolas

 La consola del sistema es el monitor y teclado conectado directamente al sistema. Como  GNU/Linux es un sistema operativo multiusuario, puede tener otros terminales conectados a puertos serie del sistema, pero estos serán consolas físicas y no el tipo que trataremos ahora. GNU/Linux,  como otras versiones de UNIX, proporciona acceso a lo que se denominan consolas virtuales o VC's, las cuales permitirán tener mas de una sesión de trabajo abierta desde consola a la vez.
Para poder ver esto una vez que estemos dentro del sistema presionen las teclas |Alt - F2| y se tendrá un nuevo login: . Esta es una segunda consola virtual. Para poder volver a la primer consola, solo hace falta presionar las teclas |Alt - F1| y se estará otra vez en la primer sesión.

En un sistema que recién se instala se contara con 6 consolas virtuales activas desde |Alt - F1| a
|Alt - F6|. En algunas otras distribuciones se podrán contar con 8 o más activas al inicio, pero esto se puede aumentar hasta 12 VC's, una por cada tecla de función.

El uso de estas consolas es extremadamente potente ya que nos permite tener varias aplicaciones corriendo al mismo tiempo y hasta, lo que veremos en la sección de Xwindow, podremos tener corriendo el entorno grafico en una consola y otra aplicación en otra VC.
El uso de las VC's, por defecto esta limitado a ver una consola a la vez, pero existen aplicaciones que permiten ver varias consolas al mismo tiempo en un mismo monitor lo que las hace más provechosas.
 

 4.4: Conceptos básicos de entorno shell

 Al hablar de un SO UNIX nos ponemos a pensar en un entorno de texto. ¿Pero que hay entre lo que vemos y lo que es realmente? ¿Qué es este entorno de texto que se habla tanto?
Este entorno se maneja a través de lo que se denomina un interprete de comandos. De la misma forma que DOS posee su interprete de comandos, el COMMAND.COM, UNIX y GNU/Linux poses los suyos.
A través de estos podremos efectuar una comunicación entre nosotros y el sistema dándole órdenes a través de comando que el interprete de comandos descifrara para que el sistema haga lo que le pedimos.
Anteriormente ubicamos al interprete de comandos dentro de las capas con la que nos podremos encontrar en un sistema.
Él interprete de comandos bash es solo una interfase de las muchas que posee UNIX o GNU/Linux, además dentro de este tipo de interpretes de comando al que nos estamos refiriendo, existen muchas otras variantes.
Como dijimos en el primer capitulo, tan pronto se entra al sistema, se iniciara él interprete de comando que tengamos configurado, en la mayoría de los casos será el "bash" y es en el que nos ocuparemos nosotros.
En este momento, podremos teclear las ordenes que necesitemos o que tengamos ganas de teclear.
EJ.

LUSI login: sebas
Password: xxxxxxxxx
Bienvenido al sistema [LUSI], espero que no haga macanas. : ).
[sebas@LUSI /]$

Aquí se ve el prompt del interprete de comandos, [sebas@LUSI /]$, indicándonos que esta listo para recibir ordenes. Tratemos de decirle al sistema que realice algo interesante:

[sebas@LUSI /]$ make love

Bueno, si estamos muy enamorados de nuestro sistema puede resultar lógico que nos sintamos así, pero el sistema no pensara lo mismo de notros y nos devolverá un mensaje de error indicándonos que no puede ejecutar el comando que le hemos solicitado.

make: **No way to make `love`. Stop

Con razón dicen que GNU/Linux es poco amigable.
 Ahora con esto se nos presentan preguntas interesantes. ¿Qué son ordenes?
¿Que esta ocurriendo cuando tecleamos make love? El programa make realmente existe en el sistema pero no puede interpretar lo que le estamos pidiendo que realice.
La primera palabra de la orden, "make", es el nombre de la orden a ejecutar. El resto de la orden es tomado como argumento de la orden.

Ej.

[sebas@LUSI /]$cal 10 2000

    octubre 2000
do lu ma mi ju vi sá
 1  2  3  4  5  6  7
 8  9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
[sebas@LUSI /]$

El comando cal sirve para mostrar un simple calendario, si no se le dan argumentos nos mostrara el mes en curso en el año actual.
Aquí el nombre de la orden es "cal" y los argumentos que le hemos dado son "10" y "2000"

Cuando una orden se ingresa al sistema, él interprete de comando efectúa varias operaciones. Primero que todo, busca el nombre de la orden y comprueba si es una orden interna, propiedad del mismo interprete de comandos y que este sabe ejecutar por si mismo, existen numerosas de estas ordenes.
Él interprete de comandos también comprueba si la orden es un "alias" o nombre sustituto de otra orden. Si no cumple con ninguno de estos requisitos, él interprete de comandos busca el programa y lo ejecuta pasándole los argumentos especificados en la línea de comandos.

En el ejemplo del "make" que es un comando que sirve para poder compilar, él interprete de comandos ve que no es una orden interna ni un alias, así que busca el programa, que esta ubicado en /usr/sbin, y lo ejecuta pasándole el argumento "love" como un objeto a compilar. Como make no puede encontrar un objetivo de ese nombre, falla enviando un mensaje de error y devolviendo el control al interprete de comandos.
 

 Para que él interprete de comandos pueda encontrar los programas a ejecutar, se basa en lo que se denomina "path", este path o ruta es cargado como una variable de entorno, la carga el mismo interprete en memoria desde un archivo de configuración central llamado /etc/profile y agregándole además las propias configuraciones de path que cada usuario posea en su archivo, en el caso del interprete bash, .bash_profile. Volveremos en el próximo capitulo sobre esto.
 Ahora, que ocurre si tecleamos un comando que el sistema no pueda ni interpretar ni encontrar en la ruta definida:
 

[sebas@LUSI /]$ besame

bash: besame: command not found

[sebas@LUSI /]$

Si no se encuentra el programa con el nombre de la orden que indicamos (besame), se mostrara un mensaje de error que deberá explicar bien ese problema.
 

 4.5: Sistema de Ficheros:

 La mayoría de los sistema UNIX tienen una distribución  estándar de ficheros, de esta forma los recursos que el sistema posee y los archivos, serán fácilmente localizados. Esta distribución forma el árbol  de directorios, el cual comienza con "/", también conocido como "directorio raiz". Directamente por debajo de este hay algunos subdirectorios muy importantes para el sistema: Estos son /bin, /etc, /dev y /usr, entre otros. Estos a su ves contienen otros directorios con archivos de configuración del sistema, programas, etc.
 Cada usuario posee un directorio en el /home que como vimos anteriormente y usualmente tienen el nombre del usuario que es su dueño.
En algunas distribuciones puede ser encontrado en /usr/home.
Veremos los directorios que se muestran en esta pagina:
 
 

/bin: /bin es la abreviación de "binaries", o ejecutables.
Es donde residen la mayoría de los programas esenciales del sistema. Use la orden "ls -F /bin" para listar los ficheros. Podrá ver algunas órdenes que reconocerá, como cp, ls y mv. Estos son los programas para estas órdenes. Cuando usa la orden cp está ejecutando el programa /bin/cp.
Usando ls -F se verá que la mayoría (si no todos) los ficheros de /bin tienen un asterisco ("*") añadido al final de sus nombres. Esto indica que son ficheros ejecutables.
/dev: El siguiente es /dev. Veamos de nuevo con ls -F. Los "ficheros" en /dev son conocidos como controladores de dispositivo (device drivers) son usados para acceder a los dispositivos del sistema y recursos, como discos duros, modems, memoria, etc.  Por ejemplo, de la misma forma que puede leer datos de un fichero, puede leerla desde la entrada del ratón leyendo /dev/mouse.
Los ficheros que comienzan su nombre con fd son controladores de disqueteras.
fd0: es la primera disquetera, fd1 la segunda.  Ahora, alguien astuto se dará cuenta de que hay más controladores de dispositivo para disqueteras de los que hemos mencionado. Estos representan tipos específicos de discos. Por ejemplo, fd1H1440 accederá a discos de 3.5"de alta densidad en la disquetera 1.
 Aquí tenemos una lista de algunos de los controladores de dispositivo más usados. Nótese que incluso aunque puede que no tenga alguno de los dispositivos listados, tendrá entradas en dev de cualquier forma.
 

                   o  /dev/console hace referencia a la consola del sistema, es decir, al monitor
                      conectado directamente a su sistema.

                   o  Los dispositivos /dev/ttyS y /dev/cua son usados para acceder a los puertos
                      serie.  Por ejemplo, /dev/ttyS0 hace referencia a "COM1" bajo MS-DOS. Los
                      dispositivos /dev/cua son "callout", los cuales son usados en conjunción con
                      un modem.

                   o  Los nombres de dispositivo que comienzan por hd acceden a discos duros.

                      /dev/hda hace referencia a la totalidad del primer disco duro, mientras que
                      /dev/hda1 hace referencia a la primera partición en /dev/hda.

                   o  Los nombres de dispositivo que comienzan con sd son dispositivos SCSI. Si
                      tiene un disco duro SCSI, en lugar de acceder a él mediante /dev/hda, de-
                      berá acceder a /dev/sda. Las cintas SCSI son accedidas vía dispositivos st y
                      los CD-ROM SCSI vía sr.

                   o  Los nombres que comienzan por lp acceden a los puertos paralelo. /dev/lp0
                      hace referencia a "LPT1" en el mundo MS-DOS.

                   o  /dev/null es usado como "agujero negro", cualquier dato enviado a este dis-
                      positivo desaparece. ¿Para qué puede ser útil esto?. Bien, si desea suprimir la
                      salida por pantalla de una orden, podría enviar la salida a /dev/null.
                      Hablaremos más sobre esto después.

                   o  Los nombres que comienzan por /dev/tty hacen referencia_a_"consolas_vir-
                      tuales" de su sistema (accesibles mediante las teclas |_alt-F1_|, |_alt-F2_|, etc).
                      /dev/tty1 hace referencia a la primera VC, /dev/tty2 a la segunda, etc.

                   o  Los  nombres  de  dispositivo  que  comienzan  con  /dev/pty  son  "pseudo-
                      terminales".  Estos son usados para proporcionar un "terminal" a sesiones
                      remotas.  Por ejemplo, si su máquina está en una red, telnet de entrada
                      usará uno de los dispositivos /dev/pty.
 
 

/etc: /etc contiene una serie de ficheros de configuración del sistema. Estos incluyen  /etc/passwd (la base de datos de usuarios), /etc/rc (guiones de inicialización del sistema), etc.
 

/sbin: sbin se usa para almacenar programas esenciales del sistema, que usará el administrador del sistema.
 

/home:  /home contiene los directorios "home" de los usuarios. Por ejemplo, /home/sebas es el directorio del usuario "sebas". En un sistema recién instalado, no habrá ningún usuario en este directorio.
 

/lib:  /lib contiene las imágenes de las librerías compartidas.  Estos ficheros contienen código que compartirán muchos programas. En lugar de que cada programa contenga una copia propia de las rutinas compartidas, estas son guardadas en un lugar común, en /lib.  Esto hace que los programas ejecutables sean menores y reduce el espacio usado en disco.

/proc: /proc es un "sistema de ficheros virtual". Los ficheros que contiene realmente residen en memoria, no en un disco. Hacen referencia a varios procesos que corren en el sistema, y le permiten obtener información acerca de que programas y procesos están corriendo en un momento dado.

/tmp: Muchos programas tienen la necesidad de generar cierta información temporal y guardarla en un fichero temporal. El lugar habitual para esos ficheros es en /tmp.

/usr: /usr es un directorio muy importante.  Contienen una serie de subdirectorios que contienen a su vez algunos de los más importantes y útiles programas y ficheros de configuración usados en el sistema.

Los directorios descritos arriba son esenciales para que el sistema esté operativo, pero la mayoría de las cosas que se encuentran en /usr son opcionales para el sistema. De cualquier forma, son estas cosas opcionales las que hacen que el sistema sea útil e interesante.  Sin /usr, tendría un sistema aburrido, solo con programas como cp y ls. usr contiene la mayoría de los paquetes grandes de programas y sus ficheros de configuración.
 

/usr/X11R6:  /usr/X11R6 contiene el sistema X Window si se a instalado. El sistema X Window es un entorno gráfico grande y potente el cual proporciona un gran número de utilidades y programas gráficos, mostrados en "ventanas" en su pantalla. Si está familiarizado con los entornos Microsoft Windows o Macintosh, X Window le será muy familiar. El directorio /usr/X11R6 contiene todos los ejecutables de X Window, ficheros de configuración y de soporte. Esto será cubierto con más detalle en la Sección 9.

/usr/bin:  /usr/bin es el almacén real de programas del sistema UNIX. Contiene la mayoría de los programas que no se encuentran en otras partes como /bin.

/usr/etc: Como /etc contiene diferentes ficheros de configuración y programas del sistema,  /usr/etc contiene incluso más que el anterior.  En general, los ficheros que se encuentran en /usr/etc/ no son esenciales para el sistema, a diferencia de los que se encuentran en /etc, que si lo son.

/usr/include:  /usr/include contiene los ficheros de cabacera para el compilador de C. Estos ficheros (la mayoría de los cuales terminan en .h, de "header") declaran estructuras de datos, subrutinas y constantes usados en la escritura de programas en C. Los ficheros que se encuentran en /usr/include/sys son generalmente usados en la programación de en UNIX a nivel de sistema.
Si se está familiarizado con el lenguaje de programación C, aquí encontrarán los ficheros de cabecera como stdio.h, el cual declara funciones como printf().

/usr/lib:  /usr/lib contiene las librerías equivalentes "stub" y "static" a los ficheros encontrados en /lib. Al compilar un programa, este es "enlazado" con las librerías que se encuentran en /usr/lib, las cuales dirigen al programa a buscar en /lib cuando necesita el código de la librería.  Además, varios programas guardan ficheros de configuración en /usr/lib.

/usr/local: /usr/local es muy parecido a /usr contiene programas y ficheros no esenciales para el sistema, pero que hacen el sistema más divertido y excitante.  En general,  los programas que se encuentran en /usr/local son específicos de su sistema esto es, el directorio /usr/local difiere bastante entre sistemas UNIX.
 Aquí encontrará programas grandes como TEX (sistema de formateo de documentos) y Emacs (gran y potente editor), si se los instala.

/usr/man:  Este directorio contiene las páginas de manual.  Hay dos subdirectorios para cada página "sección" de las páginas (use la orden man man para más detalles). Por ejemplo, /usr/man/man1 contiene los fuentes (es decir, los originales por formatear) de las páginas de manual de la sección 1, y /usr/man/cat1 las páginas ya formateadas de la sección 1.

/usr/src:  /usr/src contiene el código fuente (programas por compilar) de varios programas de su sistema.  El más importante es /usr/src/linux, el cual contiene el código fuente del Núcleo de Linux.

/var: /var contiene directorios que a menudo cambian su tamaño o tienden a crecer.
Muchos de estos directorios solían residir en /usr, pero desde que estamos tratando de dejarlo relativamente inalterable, los directorios que cambian a menudo han sido llevados a /var. Algunos de estos directorios son:

/var/log:  /var/log contiene varios ficheros de interés para el administrador del sistema, específicamente históricos del sistema, los cuales recogen errores o problemas con el sistema. Otros ficheros guardan las sesiones de presentación en el sistema, así como los intentos fallidos.

/var/spool: /var/spool contiene ficheros van a ser pasados a otro programa.  Por ejemplo, si su máquina está conectada a una red, el correo de llegada será almacenado en  /var/spool/mail hasta que lo lea o lo borre. Artículos nuevos de las ñews" tanto salientes como entrantes pueden encontrarse en /var/spool/news, etc.

/var/mail: En algunas distribuciones como la Red Hat, es donde se guardaran los e-mails que nos lleguen y mandemos.
 

4.6: Detalle de Comandos

 Detallaremos los comandos básicos que son de mayor utilidad en GNU/Linux, tratando de detallar en cada uno de ellos las opciones mas utilizadas y las que necesitaremos más frecuentemente para un mejor funcionamiento de nuestro sistema.
Muchos de estos comando se encontraran complicados a esta parte del curso, pero más adelante se entenderá su utilización. Por el momento tendrán que ser tomados solo como referencia y luego, al darse el tema especifico que los utiliza, se podrá consultar esta descripción para poder utilizarlo.

Las opciones en su amplia mayoría se le dan al comando luego de un signo "-", por ejemplo "ls -F".
Además de las opciones con una sola letra, en muchas oportunidades nos encontraremos con opciones indicadas con palabras completas. Estas se expondrán seguidas de un doble signo "-", de la forma "cat --number" que es equivalente a "cat -n".
Los archivos que irán como argumento del comando se referenciaran de la forma <archivo[1]> <archivo[2]> <archivo[n]>.

Para mayor información respecto a cada uno de estos comandos, se cuenta con las paginas de manual que nos mostraran todas las posibilidades.

La sintaxis para leer las paginas de manual es la común.

[sebas@LUSI /]$ man <commando>
 

alias: Este comando nos mostrara la lista de alias que existe en nuestro sistema. Los alias son nombres creados por los usuarios para ejecutar un comando o una serie de comando de manera más rápida. Estos están definidos en /etc/bashrc y tienen permiso de escritura por el usuario root.
Un ejemplo de la salida del comando es el siguiente:

alias fd='mount /dev/fd0 /mnt/floppy; cd /mnt/floppy && ls'
alias l='ls -laF --color=tty'
alias ldir='mount /mnt/floppy && l /mnt/floppy && umount /mnt/floppy'
alias ls='ls --color=tty'
alias m='minicom -s -con -L'
alias minicom='minicom -s -con -L'
alias tm='tail -f /var/log/messages'
alias tmm='tail -f /var/log/maillog'
alias tms='tail -f /var/log/secure'
alias ufd='cd /mnt && umount floppy && ls'
alias which='type -path'

awk: Es un lenguaje de programación que nos sirve para realizar búsquedas de patrones en archivos de textos. Entraremos en mayor detalle en el capitulo 7.2.2.

cal: El comando "cal" sin argumentos, nos mostrara el calendario del mes actual en el corriente año.
Alguno de sus argumentos mas usados son los que le indican el mes y el año que se quiere visualizar. Para ello solo hace falta invocar al comando "cal"  seguido por el numero del mes y el año en cuatro dígitos.
Ej. :

[sebas@LUSI /]$ cal 4 2000

     abril 2000
do lu ma mi ju vi sá
                   1
 2  3  4  5  6  7  8
 9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
 

cat: Concatena e imprime archivos en la salida estándar. Con "cat" podremos tanto visualizar por pantalla como redireccionar hacia otro archivo, un archivo de texto común. También podríamos concatenar varios archivos para que sean visualizados todos juntos.

Ej:

[sebas@LUSI /]$cat archivo[1] archivo[2] archivo[3] ... archivo[n]
 
 

Opciones:

-b,--number-nonblank    Numera todas las líneas que contengan algún texto comenzando por 1.
-e                      Es equivalente a -vE.
-n,--number             Numera todas las líneas de salida comenzando por 1.
-s, --squeeze-blank     Remplaza múltiples líneas en blanco con una sola línea en blanco.
-t                      Es equivalente a -vT.
-u                      Solo utilizado para compatibilidad con UNIX; es ignorado.
-v, --show-nonprinting  Muestra los caracteres de control.
-A, --show-all          Equivalente a -vET.
-E, --show-ends         Muestra un sigo "$" inmediatamente después del final de línea.
-T, --show-tabs         Muestra los caracteres de tabulación (TAB), como '^I'
--help                  Muestra un mensaje de ayuda para el comando
--version               Muestra la información de la versión que se esta usando del comando.

cd: (chance Directory) Cambia a un Nuevo directorio. Si se invoca sin ningún argumento, nos llevara a nuestro directorio /home/$HOME, donde $HOME es el directorio del usuario. Esto lo hace ya que existe una variable de entorno cargada por el shell que indica cual es nuestro home. Esta variable se llama HOME y será estudiada mas adelante al ver Variables de Entorno shell.

chmod: Cambia los permisos de acceso a los ficheros. La forma de los símbolos que podrá utilizar como argumento cera `[ugoa...][[+-=][rwxXstugo...]...][,...]' , muchos de estos símbolos tendrán que ir separados por comas.
La combinación de letras [ugoa...] especificara si el cambio al archivo se le esta especificando a nivel del usuario (u), grupo (g) u otros (o) o en su defecto a todos (a).
El operador "+" casa que el permiso seleccionado sea añadido, en cambio el símbolo "-" significa lo opuesto.
Los símbolos rwx significan permisos de lectura (r), escritura (w) y ejecución (x).
Se especificaran los otros símbolos mas adelante.
Existe también una forma numérica de indicar los permisos de forma octal (0-7).

clear: Limpia la pantalla si es posible.

date:  Sin argumentos mostrara en pantalla el día, mes numero de día, hora y año.

jue abr  6 23:22:13 ART 2000

Si agregamos un símbolo "+" delante del comando y un modificador, podremos obtener distintas partes de una fecha. Estos modificadores tendrán que ir antepuestos por un símbolo "%".
 

Modificadores de Posición:

%  El literal %
n  Una nueva línea
t  Un tabulador horizontal

Modificadores de tiempo:

%H  Hora en formato 00..23
%I  Hora en formato 01..12
%k  Hora en formato 00..23
%l  Hora en formato 01..12
%M  Minutos en formato 00..59
%p  AM o PM
%r  Tiempo en formato de 12 horas (hh:mm:ss )
%s  Segundos a partir del 01-01-1970 a las 00:00:00.
%S  Segundos (00..59)
%T  Tiempo en formato de 24 horas.
%X  Tiempo en formato local (%H:%M:%S)
%Z  Zona de tiempo, o nada si no esta determinado.

Modificadores de Días:

%a  Abreviación de días de la semana (Dom..Sab)
%A  Muestra el nombre completo del día de la semana (Domingo..Sábado)
%b  Abreviación del mes en curso (Ene..Dic)
%B  Muestra el nombre completo del mes en curso.
%c  Muestra el día y la hora en el formato "jue 06 abr 2000 23:48:01 ART"
%d  Día del mes (01..31)
%D  Día en formato mm/dd/aa
%h  Igual que %b
%j  Día del año (001..366)
%m  Mes del año (01..12)
%U  Numero de semana del año donde el Domingo es el primer día (00..53)
%w  Numero del dia dentro de la semana (0..6) donde 0 corresponde al Domingo.
%W  Numero de semana del año donde el Lunes es el primer día (00..53)
%x  Día en formato dd/mm/aa
%y  Muestra los dos últimos dígitos del año.
%Y  Año en formato de 4 dígitos (1970 .. )

El reloj del sistema también puede actualizar el reloj del sistema a través del modificador -d de la siguiente forma:

date -d mm/dd/yy Cambia la fecha.
date -d hh:mm:ss Cambia la hora.

--help   Muestra un mensaje de ayuda
--version Muestra información de la versión.

find: Encuentra archivos recesivamente. Los archivos que coincidan con la una expresión lógica serán mostrados en pantalla.
Find no sigue a los link simbólicos, sino que los muestra como archivos.
Uso de Operadores:
En esta descripción el argumento n es usado para identificar a un numero decimal entero donde +n es mayor que n y -n es menor que n y n es exactamente n.

-fstype <tipo>  Verdadero si el tipo de archivo coincide con "tipo". Típicamente 4.2 o nfs.

-name <archivo> Verdadero si el archivo es igual a <archivo>. Puede usarce los modificadores del shell como comodín donde "?" representa una sola letra y "*" representa toda una cadena.

-size n       Verdadero si el archivo es de n bloques de largo (512 bytes por bloque)

-inum n       Verdadero si el archivo tiene el inodo igual a n. Veremos los inodos en el capitulo 8.5.3.

-atime n      Verdadero si el archivo fue accedido en n días.

-mtime n      Verdadero si el archivo fue modificado en n días.

-ctime n      Verdadero si el archivo fue cambiado en n días.

-exec command Verdadero si la ejecución del "command" retorna 0.

-ok command   Parecido a -exec solo que el "command" es escrito en la pantalla y se pregunta si es ejecutado a lo que se tendrá que responder "Y" o "N".

-print        Siempre es verdadero, muestra el path donde esta buscando.

-ls Siempre es verdadero, imprime además todos los datos de un "ls" normal y más: numero de inodo, tamaño en kilobytes (1024 bytes), modo de protección y numero de enlace duro, usuario, grupo, tamaño en bytes y tiempo de la ultima modificación. Si el archivo es un link simbólico, se mostrara hacia donde apunta con "->".

-cpio device  Siempre verdadero, escribe el archivo en un dispositivo de cinta.

-newer <archivo> Verdadero si los archivos fueron modificados mas recientemente que el tiempo de modificación que tiene <archivo>

-xdev                 Siempre verdadero, no desciende a directorios que posean otro tipo de filesystem's

FAST-FIND:
Se trata de una base de datos alojada en /usr/lib/find que es actualizada periódicamente y es donde se van guardando las búsquedas anteriores.
Se puede actualizar con el comando siendo root con el comando updatedb que se encuentra en el mismo directorio.
 

cp: cp copia el contenido del archivo1 en el archivo2 con la sintaxis siguiente.

[sebas@LUSI /]$ cp <archivo1> <archivo2>... <archivo[n]> <destino>

Donde archivo[1], archivo[2] hasta archivo[n ]serán copiados a "destino".

-a, --archive    Preserva la posible estructura y atributos del archivo a copiar

-b, --backup     Realiza un backup de los archivos copiados por si se renombran o son borrados.

-f, --force      Borra sin avisar el archivo de destino si este existe.

-i, --interactive Pregunta por pantalla la confirmación de sobrescribir un archivo destino.

Otra forma de utilizar el comando cp es haciendo una copia recursiva del directorio1 con subdirectorios y todo al directorio2. Si el directorio2 no existe, cp lo creara. Esto se logra con la opción -c.

echo: Simplemente envía a pantalla los argumentos pasados.

[sebas@LUSI /]$ echo "Hola mundo"

Hola Mundo

finger:  Por defecto, finger, muestra en pantalla todos los usuarios logeados incluyendo: nombre de login, nombre completo, nombre de la terminal donde esta logeado, hora en que entro al sistema, hostname además de otros datos personales como los números de teléfono si es que existen.

[sebas@LUSI /]$ finger
Login     Name      Tty  Idle  Login Time   Office    Office Phone
root      root      *1     22  Apr  8 18:42
sebas                p0        Apr  8 18:42 (192.168.1.1)

Idle: Es un entero que muestra la cantidad de tiempo que el usuario esta logeado en el sistema.

Opciones:
-s  Igual que ejecutar el finger común

-l  Representa la información en múltiples líneas

[sebas@LUSI /]$ finger -l
Login: sebas                            Name:
Directory: /home/sebas                  Shell: /bin/bash
On since Sat Apr  8 18:42 (ART) on ttyp0 from 192.168.1.1
No mail.
No Plan.
 

Si se quisiera saber los usuarios que están logeados en un sistema diferente al nuestro, y si el sistema el cual estamos explorando lo permite al tener habilitado el puerto 79 (finger), tendríamos que ejecutar el comando seguido de una "@" e inmediatamente después el nombre del host del que queremos saber quien esta logeado.

[sebas@LUSI /]$ finger @ciudad.com.ar

grep: Imprimirá las líneas que coincidan con la expresión que coloquemos inmediatamente luego del comando.
Por ejemplo, si tiráramos por pantalla el archivo /var/log/messages tal ves tendríamos demasiadas líneas para ver, pero si solo queremos ver aquellas líneas que contengan la expresión "tty1" solo tendríamos que hacer un "cat" al archivo y utilizando el símbolo de canalización "|" podríamos hacer que la salida del "cat" se procese con el comando "grep" para darnos la salida deseada.
 

[root@LUSI /]# cat /var/log/messages|grep tty1
Apr  8 16:53:04 LUSI login[433]: ROOT LOGIN ON tty1
Apr  8 18:41:40 LUSI login[433]: ROOT LOGIN ON tty1
Apr  8 18:42:10 LSUI login[457]: ROOT LOGIN ON tty1
[root@LUSI]#

Opciones:

-A num Muestra las num líneas siguiente a la ultima línea que haya coincidido con el patrón pedido.

-B num Muestra las num líneas anteriores a la primera línea que haya coincidido con el patrón pedido.

-c         Muestra por pantalla él numero de líneas que coinciden con el patrón.

-b         Muestra antes que las líneas que coinciden, la cantidad de bytes  que han pasado por el comando luego de salir cada línea.

Para mayores usos y dado que la opción anterior será la que más se utilice, se recomienda la lectura de las paginas de su manual.

kill: Por defecto envía una señal de terminación (terminate 15) al proceso que se indique por medio del numero de proceso (PID).
Las señales que se le pueden enviar a un proceso se listan con la opción "-l".

 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL
 5) SIGTRAP      6) SIGIOT       7) SIGBUS       8) SIGFPE
 9) SIGKILL     10) SIGUSR1     11) SIGSEGV     12) SIGUSR2
13) SIGPIPE     14) SIGALRM     15) SIGTERM     17) SIGCHLD
18) SIGCONT     19) SIGSTOP     20) SIGTSTP     21) SIGTTIN
22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO
30) SIGPWR

Para mas información sobre las señales consultar signal(7) en las paginas de manual.
De estas señales indicaremos las más utilizadas. Estas son 9, 1 y 15.
Para indicar el numero de señal que queremos enviar a un proceso, se le antepone el signo "-".

[root@LUSI]# kill -9 266

Esto provocara que el proceso muera repentinamente.

La diferencia entre la señal 9 y la 15 es que al enviar al proceso una señal 15 este será marcado como un proceso terminado. En cambió la señal 9 mata el proceso inmediatamente.
La señal 1 o SIGHUP reinicia el proceso al que se envía la señal, lo que también se podrá realizar con el modificador -HUP.

[root@LUSI]# kill -HUP 266
 

Se deberá tener en cuenta que el usuario solo podrá mandar señales a los procesos que le pertenecen. En cambio el usuario root podrá hacerlo a cualquier proceso que este corriendo en el sistema.

less: "less " es un programa similar al "more" que permite ir viendo una salida en pantalla que ocuparía mas de una. La diferencia sustancial con el more es que nos permite desplazarnos de abajo hacia arriba y de arriba hacia debajo de la salida por pantalla.
Permite a su ves que se utilicen una serie de comandos.

Sumario de comandos básicos del less.
h  H              Muestra la ayuda
q  :q  Q  :Q  ZZ  Salir
e  ^E  j  ^N  CR  Adelante una línea   (o N líneas).
y  ^Y  k  ^K  ^P  Atrás una línea   (o N líneas).
f  ^F  ^V  SPACE  Adelante  una  pantalla (o N líneas).
b  ^B  ESC-v      Atrás una pantalla (o N líneas).
ESC-SPACE         Adelante una pantalla
/ patrón          Busca hacia adelante n's líneas en donde coincida el patrón.

logout: Sale de la terminal.

lpq: Muestra en pantalla el contenido de la cola de impresión. Si se quiere un reporte por cada usuario, el comando deberá estar seguido del nombre del usuario.

lpr <archivo>: Genera un trabajo de impresión del archivo seleccionado. Si no se especifica archivo, lpr leerá los datos desde la entrada estándar.

Opciones:

-Pprinter   Envía la salida a la impresora printer.

-#copies     Procede a crear "copies" copias del trabajo enviado a la cola de impresión.

[sebas@LUSI]$ lpr -#3 index.c

También se podría realizar leyendo el archivo con el comando "cat" y enviarlo al comando "lpr" con la cantidad de copias que se requieren.

[sebas@LUSI]$ cat index.c |lpr -#3

Existen muchos comandos mas para aplicar formatos específicos a la salida impresa, los que se podrán consultar en las paginas de manual del programa "lpr"

lprm: Remueve los trabajos de la cola de impresión. Sin argumentos, "lprm", borrara todos los trabajos activos del usuario que invoco el programa. Puede ser removido un trabajo determinado utilizando el comando lpq para saber el numero de trabajo y el comando lprm para eliminarlo indicando en la impresora que se encuentra.

[sebas@LUSI /etc]$ lpq -Plp
LUSI: waiting for 192.168.1.1 to come up
Rank   Owner Job   Files                                Total Size
1st    sebas  0    passwd                                636 bytes
2nd    sebas  1    passwd                                636 bytes

[sebas@LUSI /etc]$ lprm -Plp 1

Donde "lp" es el nombre de la impresora.

ls: Lista todos los archivos del directorio que indiquemos.

-a, --all                Lista todos los archivos, incluidos los archivos de punto (.archive)

-d, --directory    Lista solo los directorios.

-c                              Lista los archivos ordenados desde la fecha mas próxima a la del momento en que se ejecuta el comando.

-f                             No ordena los archivos, los muestra según la ubicación en el disco.

--full-time           Muestra los archivos con todos los datos de tiempo.

-i, --inode           Imprime el índice de inodos de cada archivo.

--color=yes            Indica al comando ls que muestre los resultados en colores.

Para mayor información, mirar las paginas de manual del comando "ls".

man: Muestra las paginas de manual del comando o programa que se le pase como argumento.

mail: Es un programa sencillo para el envió de e-mails, tanto en una red como en Internet.
Siendo este un comando por demás de auto explicativo y que en su mayoría solo se utilizara para realizar rápidos mensajes de e-mail's, se recomienda la lectura de las paginas de manual para poder ver todos los alcances que tiene.
 

mkdir: Crea directorios nuevos. Se deberá indicar luego del comando el directorio o los directorios a crear.

[sebas@LUSI /sebas]$ mkdir cartas

Se creara el directorio "cartas" en el directorio "sebas"

more: Es un filtro que mostrara por pantalla el archivo que le enviemos o que sea redireccionado a el y parara por cada pantalla mostrada.

Opciones:

-c    Borra la pantalla antes de desplegar la información por pantalla.

-d     Mostrara los mensajes de error e indicara que hacer para solucionarlo.

mv: Mueve archivos y directorios. Existen tres formas para utilizar el mv y se muestran mas abajo.

La primera forma es cuando se quiere cambiar el nombre de un archivo. Supongamos que queremos cambiar el nombre del archivo1 a archivo2. Si archivo2 existe, este será borrado y en su lugar estarán los datos del archivo1.
La opcion 2 es que lo que se quiera mover sea un directorio. Solo se podrá hacer si el nuevo nombre del directorio no existe.

La tercera opción es cuando se quiere mover mas de un archivo a una ubicación particular.
Existen para realizar esto las siguientes opciones:

-f  Forzar. Fuerza la ejecución del comando mv aunque se trate de un proceso restringido como el borrado de un directorio.

-i  Habilita el proceso interactivo. Se podrá especificar el archivo o directorio que se quiere renombrar o mover.
 

paswd: Cambia o pone la clave de paso a un usuario. Solo el root podrá cambiar el password de otro usuario. El usuario podrá cambiar su propia clave con este comando.

ps:  Mostrara información por pantalla de los procesos que están corriendo en ese comento.

Opciones:

-a   Opción por defecto. Mostrara los procesos de los cuales el usuario es el dueño.

-x   Mostrara absolutamente todos los procesos que se estén ejecutando.

-f   Mostrara la jerarquía de los procesos mostrando los padres de cada uno y sus descendientes.

Cuando se vea mas adelante "Procesos y Tareas" se profundizara mas sobre la salida de este comando.

pwd: Mostrara la ruta del directorio donde estamos parados actualmente.

[sebas@LUSI /]$ cd /usr/local/bin
[sebas@LUSI /bin]$ pwd

/usr/local/bin

rm: Remueve archivos y directorios.

Opciones:

-f    Fuerza el borrado de una archivo sin mostrar los mensajes de error.

-i    Pregunta antes de borrar cada archivo.

-r    Borrado recursivo.

rmdir: Borra directorios. Las opciones anteriores también se aplican.
 
 





Sebastian D. criado - seba_AT_lugro.org.ar

www.lugro.org.ar