Breve lección de mandatos básicos

Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: http://www.alcancelibre.org/
Jabber ID: darkshram@jabber.org

Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2008 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra, o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.

Introducción.

Por favor siga los procedimientos al pie de la letra.

Procedimientos.

Ingrese al sistema como usuario (fulano).

Una vez que ha ingresado al sistema, realice lo siguiente:

pwd

Lo anterior le mostrará la ruta actual donde se localiza (~/).

Realice lo siguiente:

cd /usr/local
pwd

Lo anterior lo cambiará al directorio /usr/local y le mostrará la ruta actual.

Realice lo siguiente:

cd
pwd

Lo anterior lo regresará a ~/ mostrará que ahora se localiza en el directorio ~/ (directorio de inicio).

Realice lo siguiente:

ls /usr/local

Lo anterior mostrará el contenido del directorio /usr/local y además mostrará que no es necesario cambiarse a un directorio en particular para ver su contenido.

Realice lo siguiente:

ls
ls -a

Lo anterior primeramente mostrará que aparentemente no hay contenido en el directorio ~/; después se mostrará lo siguiente y que en realidad si hay contenido; los ficheros y directorios de convierten a ocultos al renombrarles y ponerles un punto al inicio.

  .bash_logout  .bash_profile  .bashrc

Realice lo siguiente:

ls -la

Lo anterior deberá de mostrar todo el contenido de ~/ y mostrará además los atributos y permisos:

drwxr-xr-x    2 fulano     fulano         4096 ago 13 00:16 .
drwxr-xr-x   26 root       root           8192 ago 29 11:09 ..
-rw-r--r--    1 fulano     fulano           24 dic 11  2003 .bash_logout
-rw-r--r--    1 fulano     fulano          191 dic 11  2003 .bash_profile
-rw-r--r--    1 fulano     fulano          124 dic 11  2003 .bashrc

Realice lo siguiente:

ls --help

Lo anterior le mostrará la ayuda rápida del ls. Pulse simultáneamente en su teclado los botones <SHIFT> y <Re Pág> y luego pulse simultáneamente en su teclado los botones <SHIFT> y <Av Pág>; ésto hará que se desplace la pantalla permitiendo leer toda la información.

Pulse el botón <ENTER> y realice lo siguiente:

man ls

Lo anterior le mostrará el manual en español. Pulse las teclas de <Av Pág> y <Reg Pág> para avanzar en el manual. Pulse la tecla / y a continuación ingrese inmediatamente la palabra «directorio» y luego pulse la tecla <ENTER>:

:/directorio

Lo anterior le mostrará que se ha realizado una búsqueda y resaltado de la palabra «directorio» en el manual de ls. Para salir del manual de ls, pulse la tecla q.

Realice lo siguiente para crear un nuevo directorio:

mkdir ejemplos1

Realice lo siguiente para intentar generar un subdirectorio denominado «uno» dentro del directorio «ejemplos2» (el cual no existe ú;n).

mkdir ejemplos2/uno/

Lo anterior deberá devolver un mensaje de error como el siguiente:

mkdir: no se puede crear el directorio «ejemplos2/uno»: No existe el fichero o el directorio

A fin de poder crear el subdirectorio «uno» dentro del directorio «ejemplos2», es necesario crear primero «ejemplos2». Sin embargo puede indicarle a mkdir que genere toda la ruta añadiendo la opción -p (path):

mkdir -p ejemplos2/uno
ls
ls ejemplos2

Lo anterior creo el directorio «ejemplos2» junto con el subdirectorio «uno» en su interior y mostró que fue creado «ejemplos2» y posteriormente el contenido de «ejemplos2» para verificar que también fue creado «uno».

Ahora copiaremos algunos ficheros para experimentar un poco dentro de esta carpeta utilizando el mandato cp:

cp /etc/fstab ~/ejemplos1/

Luego vuelva a utilizar el mandato cp de este modo:

cp /etc/passwd ~/ejemplos1/

Con los dos anteriores procedimientos habrá copiado dos distintos ficheros (/etc/fstab y /etc/passwd) dentro del directorio ejemplos1. Proceda entonces a jugar con estos. Utilice de nuevo el mandato mkdir y genere una carpeta denominada adicional dentro del directorio de ejemplos1.

mkdir ~/ejemplos1/adicional

Ahora acceda hacia el directorio de ejemplos1 para continuar. Realice lo siguiente:

cd ~/ejemplos1/

Y ahora proceda a ver el contenido de esta carpeta. Utilice el siguiente mandato:

ls

Observará en la pantalla algo como esto:

[fulano@localhost ejemplos1]$
adicional fstab  passwd
[fulano@localhost ejemplos1]$

Ahora está visualizando los ficheros fstab y passwd y el directorio adicional

Mueva uno de estos ficheros dentro del directorio adicional utilizando el mandato mv:

mv fstab adicional

Para ver el resultado, primero vea que ocurrió en el directorio ejemplos1 utilizando de nuevo el mandato ls:

ls

Verá una salida en pantalla similar a la siguiente:

[fulano@localhost ejemplos1]$
adicional  passwd
[fulano@localhost ejemplos1]$

Acceda hacia el directorio adicional con el mandato cd

cd adicional

Se observará una salida similar a la siguiente:

[fulano@localhost adicional]$
fstab
[fulano@localhost adicional]$

Regrese hacia el directorio ejemplos1 que se encuentra en el nivel superior utilizando el mandato cd:

cd ../

Ahora proceda a eliminar el fichero passwd que se encuentra en el directorio ejemplos1

rm passwd

Haga lo mismo con fstab, el cual se localiza dentro del directorio adicional:

rm adicional/fstab

Elimine el directorio adicional:

rmdir adicional

Visualizando contenido de ficheros.

Si utiliza el mandato cat sobre un fichero, la salida devolverá el contenido de este. utilice lo siguiente para ver el contenido del fichero /etc/crontab:

cat /etc/crontab

Lo anterior debe devolver una salida similar a la siguiente:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

Si solo se quisiera ver las lineas que contengan la cadena de caracteres root, se utiliza el mandato grep como subrutina del siguiente modo:

cat /etc/crontab | grep root

Lo anterior debe devolver una salida similar a la siguiente:

MAILTO=root
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

Si se quisiera hacer lo contrario, y solo visualizar las líneas que no contengan la cadena de caracteres root, se utiliza el mandato grep como subrutina del siguiente modo:

cat /etc/crontab | grep -v "root"

Lo anterior debe devolver una salida similar a la siguiente:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
HOME=/

# run-parts

Lo anterior incluye también las lineas vacías. Para mostrar el mismo resultado sin líneas vacías, se utiliza el mismo mandato agregando sed -e ‘/^$/d’ como subrutina del siguiente modo, donde sed es un editor para filtrado y transformación de texto, ejecutando (-e) /^$/d que se refiere a líneas vacías:

cat /etc/crontab | grep -v "root" | sed -e '/^$/d'

Lo anterior debe devolver una salida similar a la siguiente:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
HOME=/
# run-parts

Generación de texto por bucles.

Realice lo siguiente, donde se utiliza el mandato perl ejecutando (-e) el guión for($i=1;$i<10;$i++){print “$in”;}, en el cual se genera la variable i que es igual a 1 y menor a 10 y a la cual se va sumando y devuelve una salida con el valor de i con retorno de carro.

perl -e 'for($i=1;$i<10;$i++){print "$i\n";}'

Lo anterior debe devolver una salida similar a la siguiente:

1
2
3
4
5
6
7
8
9

Modifique el guión del mandato anterior y reemplace “$in” por “Número $in” del siguiente modo:

perl -e 'for($i=1;$i<10;$i++){print "Número $i\n";}'

Lo anterior debe devolver una salida similar a la siguiente:

Número 1
Número 2
Número 3
Número 4
Número 5
Número 6
Número 7
Número 8
Número 9

Para guardar ésto en un fichero, añada al mandato anterior >> ~/texto.txt del siguiente modo para cambiar la salida estándar de la pantalla hacia el fichero ~/texto.txt:

perl -e 'for($i=1;$i<10;$i++){print "Número $i\n";}' >> ~/texto.txt

Lo anterior solo regresa el símbolo de sistema. Utilice elmandato cat para visualizar el contenido del fichero ~/texto.txt del siguiente modo:

cat ~/texto.txt

Lo anterior debe devolver una salida similar a la siguiente y que corresponde al contenido del fichero ~/texto.txt:

Número 1
Número 2
Número 3
Número 4
Número 5
Número 6
Número 7
Número 8
Número 9

Bucles.

A continuación aprenderá a utilizar funciones más avanzadas. En el siguiente caso usted creará respaldos de un conjunto de ficheros de imágenes, asignando a cada uno un nombre distinto al que tenían en su directorio de origen. Primero creará un nuevo directorio:

mkdir ~/respaldos

Realice los siguientes mandatos:

cd /usr/share/pixmaps/
for f in *.png
do
cp $f ~/respaldos/copia-$f
done
cd

Lo anterior realizará la copia en serie de los ficheros dentro de /usr/share/pixmaps/ dentro de ~/respaldos/ anteponiendo en el nombre de las copias la palabra «copia». Mire el contenido del ~/respaldos/ del siguiente modo:

ls ~/respaldos/

En el siguiente caso usted definirá dos variables ($hombre y $mujer) cuyos datos serán obtenidos a partir de un fichero de texto simple (parejas.txt) y obtendrá una salida por cada juego de variables.

cd
echo "Juan Josefina" >> parejas.txt
echo "Pedro Julieta" >> parejas.txt
echo "Pablo Miriam" >> parejas.txt
echo "Jorge Antonia" >> parejas.txt
echo "Ernesto Carmen" >> parejas.txt
while read hombre mujer
do
echo "$hombre es pareja de $mujer"
echo "----------------------------------------"
done < parejas.txt

Aliases.

Realice lo siguiente:

touch algo-nuevo.txt
touch otro-nuevo.txt
cp algo-nuevo.txt otro-nuevo.txt

En lo anterior se crearon con el mandato touch los ficheros algo-nuevo.txt y otro-nuevo.txt y se realizó una copia de algo-nuevo.txt sobreescribiendo otro-nuevo.txt. Note que se sobreescribió a otro-nuevo.txt sin preguntar.

Ejecute ahora lo siguiente:

alias cp="cp -i"
cp algo-nuevo.txt otro-nuevo.txt

En lo anterior se creo un alias denominado cp que corresponde en realidad al mandato cp con la opción -i, la cual corresponde a preguntar si se sobreescriben ficheros regulares destino existentes. Cuando se ejecuta de nuevo el mandato cp, éste lo directamente hace con la opción -i.

Para deshacer el alias sobre el mandato cp, solo se necesita ejecutar:

unalias cp

Realice lo siguiente para crear un nuevo mandato como alias:

alias mi-mandato="ls -l |less"

Lo anterior crea un alias denominado mi-mandato, el cual corresponderá a ejecutar el mandato ls con la opción -l y además ejecutará como subrutina al mandato less. ejecute mi-mandato del siguiente modo y estudie la salida.

mi-mandato /etc

Lo anterior debe haber mostrado el contenido del directorio /etc utilizando less para poder desplazar cómodamente la pantalla. Para salir de less solo pulse la tecla q.

Los aliases creados perduran hasta que es cerrada la sesión del usuario. Para que cualquier alias sea permanente para un usuario en particular, hay que especificar estos al final del fichero ~/.bash_profile, o bien como root en algún fichero *.sh dentro del directorio /etc/profile.d/ para que sea utilizado por todos los usuarios del sistema. Ejecute el mandato alias para ver la lista de aliases predefinidos en el sistema.

alias

Apagado y reinicio de sistema.

Finalmente, y para concluir la breve lección de mandatos, es importante saber que aunque no se vea nada en pantalla, en Linux®ñempeñan varios procesos en el trasfondo. Estos servicios deben ser finalizados apropiadamente. No es como en MS-DOS, en donde se podía apagar el sistema en cualquier momento. Hay que cerrar el sistema apropiadamente. Para tal fin se utilizan poweroff y reboot.

Para cerrar y apagar el sistema, debe utilizar el siguiente mandato:

poweroff

Para cerrar y reiniciar el sistema, debe utilizarse el siguiente mandato:

reboot

Resumen de mandatos básicos.

Puede y debe obtener mas detalles acerca de estos y otros muchos más mandatos utilizando la opción –help con cualquier casi cualquier mandato. Pude consultar el manual detallado de casi cualquier mandato conocido tecleando man precediendo del mandato a consultar:

man [nombre del mandato]

Para salir de las páginas del manual de mandatos solo teclee q.

Tabla 1. Resumen de mandatos básicos.
Si se necesita acceder hacia una carpeta en especial, utilice: cd [ruta exacta o relativa]
Si se necesita crear una nueva carpeta, utilice: mkdir [nombre del directorio]
Si se desea copiar un fichero, utilice: cp [origen] [destino]
Si se desea mover una fichero, utilice: mv [ruta del fichero a mover] [directorio en donde se desea mover]
Si se desea eliminar un fichero, utilice: rm [nombre del fichero o ruta exacta hacia el fichero]
Si se desea eliminar una carpeta, utilice: rmdir [nombre del fichero o ruta exacta hacia el directorio]
Si se desea apagar o reiniciar el sistema, utilice: poweroff y reboot (pueden ser utilizados como usuario)

shutdown [-h -r] [now 1,2,3,4,5,6...] (solo como root

Deja una opinión

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s