Aprende a usar la terminal de UNIX
¡Recibe una cordial bienvenida!
Texto-plano.xyz es una comunidad de computo publico en castellano. Sus miembros hacen uso a distancia de una computadora muy pequena, provista del sistema operativo OpenBSD, similar a UNIX.
Debes operar este entorno por medio de una Interfaz de Linea de Comandos (CLI). Esto significa que normalmente teclearas tus ordenes en lugar de manejar aplicaciones graficas.
Si nunca has usado una CLI, no hay problema. Estos ejercicios sencillos y explicados, te acompanaran en tu aprendizaje de los rudimentos basicos para hacer la mayoria de los trabajos que desees.
El interprete de comandos (o shell)
No bien accedas remotamente con tu terminal al entorno texto-plano.xyz, se te mostrara un mensaje de bienvenida con instrucciones simples, ¡y ya estaras listo para operar!.
Para ello usaras uno de los interpretes de comandos o en la jerga, una shell. Este interprete es un programa capaz reaccionar a las instrucciones que le proporcionas, llamadas "ordenes" o "comandos".
Prompt
El prompt es un indicador que el interprete hace aparecer en tu terminal. Demuestra que el sistema esta a tu disposicion y aguardando tus ordenes. Puede aparecer de la siguiente manera:
fulana@texto-plano.xyz:~$
(Esto significaria que eres "fulana", usuari@ del entorno "texto-plano.xyz".).
La apariencia del prompt puede variar. Si lo que ves no es como lo anterior, ¡a no asustarse! Algunos interpretes tienen prompts mas largos y elaborados, otros mas exiguos y simples, dependiendo de su configuracion.
Ejercicio 1: Comandos basicos
¿Quien soy? ¿Como me llamo?
Prueba introducir tu primer orden para practicar.
Nota: Los comandos que debes utilizar se indican recuadrados en gris. Puedes teclearlos o "copiar y pegarlos" en tu terminal.
Teclea en la terminal el comando:
whoami
O tambien podrias poner:
echo $USER
...y presiona la tecla Intro (o Enter) para enviar la orden. Se transmitira este comando al interprete de comandos remoto, este lo interpretara, cumplira si puede, y devolvera el resultado a tu terminal. Como consecuencia aparecera en tu pantalla una nueva linea con tu nombre de usuario.
¡Felicitaciones! Ahora sabes como te llamas. Seras conocid@ en nuestro entorno con este nombre de usuario.
En estos ejercicios usaremos el nombre de usuari@ "
fulana
" a titulo ilustrativo. :)
Texto-plano es un sistema de computo publico y multiusuari@. Puedes saber quien mas esta conectado al centro de computo en este preciso momento, introduciendo otra orden:
w
¡No olvides presionar la tecla Intro! El sistema podria indicar que otros usuari@s estan conectados, (columna USER) y que estan haciendo (columna WHAT).
6:01PM up 51 days, 17:56, 8 users, load averages: 0.02, 0.07, 0.07
USER TTY FROM LOGIN@ IDLE WHAT
mengano p0 32.43.69.74 Tue04AM 1day -bash
sultano pg 120.12.199.47 3:30PM 2:30 -bash
fulano 130.123.10.90 9:48AM 0 w
mengana po 124.24.55.11 5:01PM 0 wordgrinder
Atencion al detalle
De los errores, se aprende. Intenta cometer un error a proposito para
aprender de el; en lugar de utilizar el comando w
(con
minuscula), introduce el comando W
(con mayuscula):
W
El sistema podria indicarnos:
bash: comando no encontrado: W
Esto significa que los entornos similares a UNIX son
sensibles al uso incorrecto de las mayusculas o minusculas. No
es lo mismo w
(un comando existente y valido) que
W
(un comando inexistente en nuestro caso).
Procura ser cuidados@ con el uso de mayusculas y minusculas en los nombres de los comandos, asi tambien como los ficheros, y muy especialmente las contrasenas.
Directorios y archivos
Texto-plano.xyz se basa en un sistema de archivos formado por una estructura de directorios. Deberas conocer su funcionamiento basico para ser efectivo, y a ello dedicaremos los siguientes ejercicios.
La estructura de directorios tiene forma de arbol. En su base se encuentra un directorio maestro llamado "raiz". De su tronco, se desprenden varias "ramas" (directorios). A su vez estos directorios pueden contener multiples ramas mas pequenas (subdirectorios).
Cada directorio puede contener tanto otros directorios como tambien archivos.
¿Donde estoy?
Para conocer en que directorio te encuentras en cualquier momento, ingresa el comando:
pwd
Por ejemplo, ahora podrias encontrarte en tu directorio de usuario:
/home/fulana/
Directorio /home
El directorio /home
forma la rama del arbol que contiene
los directorios personales de todos usuarios de texto-plano.xyz,
incluyendo el tuyo propio (nomenclado, claro esta, segun tu propio
nombre de usuari@).
El directorio de usuario (por ejemplo /home/fulana/
)
consiste en el espacio de disco que los miembros disponen dentro de
texto-plano.xyz. Tu propio directorio de usuari@ puede abreviarse con el
caracter de tilde "~", lo cual es muy conveniente para
obrar de forma generica y no tener que especificar tu nombre en los
comandos (ahorrando tiempo). Pronto veras como hacerlo.
(Nota: El tilde puedes escribirlo presionando AltGr+4 en los teclados de distribucion espanola).
Ejercicio 2: Listar el contenido de directorios con ls
Comprueba el contenido de tu directorio donde estas localizado actualmente. Para ello ingresa:
ls
El sistema te mostrara un listado con el contenido del directorio
donde estes localizado. Si estas en tu directorio
/home/fulana
podria indicar un contenido que incluya
esto:
MailDir/ public_html/
Procede a listar ahora el contenido del directorio
/home
, el cual se utiliza para almacenar los directorios de
los usuarios de texto-plano.xyz. Podras hacerlo indicandolo
especificamente al comando ls, de esta manera:
ls /home
Nota: Ten en cuenta que si tipeas el comando ls home en lugar de ls /home, el interprete considerara que le estas ordenando listar un archivo llamado
home
, y no el contenido de un directoriohome
. Recuerda, la barra/
a la izquierda le indicara al interprete de comandos que el pedido es un directorio, y que se encuentra en el directorio raiz de la estructura de directorios.
Tambien podras listar el contenido del directorio raiz del sistema,
la cual es representado por la /
.
Introduce el comando:
ls /
...y el sistema informara ahora el contenido general del directorio raiz de texto-plano.xyz:
altroot/ bsd* bsd.sp home/ mnt/ sys@ var/
bin/ bsd.booted* dev/ lib/ root/ tmp/
boot bsd.rd etc/ lost+found/ sbin/ usr/
Estas "ramas" o directorios del sistema contienen distintos aspectos organizativos del mismo. El administrador de texto-plano.xyz suele moverse en estos directorios.
A continuacion, ingresa ls con alguna de sus varios sufijos opcionales, y observar las diferencias en la informacion que te devolvera el sistema UNIX.
ls -l
ls -hl
ls -a
ls -al
ls -ahl
Ejercicio 3: Crear Directorios con mkdir
Un directorio puede contener muchos archivos diferentes en su
interior, y te permitira organizar mejor tu trabajo. Solo puedes crear
directorios dentro de tu directorio /home
personal.
Podras crear un directorio usando el comando mkdir, seguido por el nombre del directorio que quieres crear.
En este ejercicio, crearas un unico directorio de trabajo llamado
temporal
, el cual estara localizado dentro de tu directorio
/home
de usuari@ ("~
"). Crealo introduciendo
el comando:
mkdir ~/temporal
Los comandos UNIX te permiten ahorrar tiempo usando multiples directorios o archivos.
Para poner esto en practica, por ahora crearemos tres
subdirectorios (llamados asi pues estan contenidos dentro de
otro directorio, en este caso el directorio ~/temporal
).
Para este cometido especificaremos las "ramas" de la ruta mediante una
barra /
. Observa bien el comando necesario:
mkdir ~/temporal/cartas/ ~/temporal/cuentos/
~/temporal/poemas/ ~/temporal/planillas/
¿Porque creamos ~/temporal/planillas/
? ¡No queriamos
hacerlo! Fue a proposito. :) Como es un directorio vacio, aprenderas a
borrarlo tranquilamente con rmdir.
rmdir ~/temporal/planillas/
Ejercicio 4: Cambiar de Directorio: cd
Muchas veces necesitaras trabajar en un directorio especifico. Para hacerlo, deberas cambiar la posicion en la que estas situad@ en la estructura de directorios. Recuerda, solo puedes estar posicionad@ en un directorio a la vez.
Para cambiar de directorio usa el comando cd seguido del nombre del directorio al que te deseas desplazar.
Podras retornar de forma directa a tu directorio particular de
usuari@ /home/fulana
utilizando la abreviatura
~ que lo denota, o directamente introduciendo
cd
sin ninguna otra opcion. Esto es muy conveniente, sobre
todo si te encuentras en una rama alejada de tu arbol de directorios.
¡Siempre podras volver a tu directorio /home
particular
Si quisieras volver al directorio en el que estabas anteriormente
usarias: cd $OLDPWD
sin tener que escribir la
ruta completa al directorio
Ejercicio 5: Desplazarnos en la estructura.
Podras ahora elegir que te conviene mas: si listar directorios o moverte a ellos, o moverte a los directorios para luego listarlos. Ambas formas son validas.
Veamos como hacerlo: lista el contenido de tu directorio de usuari@.
Para ello puedes usar la abreviatura ~
.
ls ~
...y el sistema te podria presentar ahora:
MailDir/ public_html/ temporal/
sabiendo que el directorio que llamamos temporal
esta
localizado dentro de tu /home/fulana
, siempre podras ver
cual es el contenido de un directorio sin importar cual sea tu
directorio actual, por medio de:
ls ~/temporal
...o bien podrias usar dos ordenes para cambiar tu posicionamiento
actual a ~/temporal
y a continuacion solicitar el listado
del directorio actual:
cd ~/temporal
ls
Veamoslo rapido. Usa cd para cambiar ahora tu
localizacion al subdirectorio llamado
temporal/poemas
...
cd ~/temporal/poemas/
...y usa ls pero ordenando un listado especifico del
directorio ~/temporal/
, ¡deberian aparecer los tres
subdirectorios contenidos dentro del directorio ~/temporal
,
por mas que te encuentres muy dentro de
temporal/poemas/
!
cartas/ cuentos/ poemas/
Visualiza mentalmente las ramas el arbol de directorios: ¡No te marees! ¿En que rama del arbol de directorios te encuentras? ¡Ah si! pwd te lo dira siempre.
/-->+---- usr/ +-- mengana/ +-- MailDir/
+ --> home/ --+-> fulana/ --+-- public_html/ +-- cartas/
+-- sultano/ +-> temporal/ --+-- cuentos/
+-> poemas/
¡Muy bien! Estas en /home/fulana/temporal/poemas/
. Como
habias solicitado un listado especifico de
/home/fulana/temporal/
; era logico que el interprete te
mostrase los tres subdirectorios cartas
.
cuentos
y poemas
.
Vienes bien.
El comando cd pondra a tu disposicion tambien de unos sufijos opcionales extremadamente convenientes. Estos te permitiran "descender" de los niveles de las ramas del arbol de directorios, o bien o "retornar" a lugares anteriormente visitados en dicho arbol.
Para descender un nivel en el arbol de directorios utiliza el comando
cd .. Por ejemplo, si estabas en
/home/fulana/temporal/poemas
, ingresa cd ..
...y
descenderas a la rama del nivel inmediato inferior:
/home/fulana/temporal
.
Ingresa ahora a un directorio alejado, que ni siquiera este en la
rama /home
. Por ejemplo:
cd /usr/games/
Si deseas retornar a cualquier directorio en el que estuviste posicionado anteriormente (con independencia del lugar actual que ocupas en la estructura de directorios), ingresa:
cd -
El signo -
hara que el interprete recuerde cual fue tu
posicion anterior en el arbol de directorios, te la indique en pantalla,
¡y te retorne nuevamente alli!
Ya has aprendido los rudimentos de los directorios, como ingresar a ellos y como moverte en el arbol de directorios.
Ejercicio 6: Crear archivos con touch
Cada archivo en el sistema tiene un nombre, y opcionalmente puede tener una extension descriptiva.
Debes tener en cuenta una regla fundamental: no pueden existir dos archivos con el mismo nombre dentro el mismo directorio.
Dentro de tu directorio /temporal
, crea cinco archivos
de prueba llamados prueba1.txt
, prueba2.txt
,
prueba3.txt
, prueba4.txt
y
prueba5.txt
.
Una forma posible pero ineficiente seria ordenar:
touch ~/temporal/prueba1.txt
...y repetir el proceso hasta el archivo
prueba5.txt
.
Pero escribir eso es tedioso. Simplemente usa cd
para cambiar tu directorio temporal
:
cd ~/temporal/
...y luego crea los cuatro archivos que faltan de una sola vez, con el comando:
touch prueba2.txt prueba3.txt prueba4.txt
prueba5.txt
Como ves, si estas localizado dentro de un directorio, no es necesario escribir toda la ruta.
Ten en cuenta que si ahora introduces el comando ls,
recibiras un listado del directorio ~/temporal/
donde te
encuentras, informando su contenido:
cartas/ poemas/ prueba2.txt prueba4.txt
cuentos/ prueba1.txt prueba3.txt prueba5.txt
Ejercicio 7: Copiar con cp
En ocasiones puede ser util copiar un archivo o directorio (tanto aislado como completo) en otro lugar.
Podremos realizar copias de un archivo con el comando cp.
Supongamos que queremos copiar el archivo llamado
prueba5.txt
en otro archivo llamado
prueba5.txt.copia
, usamos:
cp prueba5.txt prueba5.txt.copia
Copia ahora el fichero prueba4.txt
dentro del
subdirectorio poemas/
. Puedes usar el comando:
cp prueba4.txt poemas/
Y podras copiar directorios con sus contenidos, usando la opcion -r:
cp -r cartas/ cartas_copiadas/
Ejercicio 8: Mover o renombrar con mv
En un entorno ideal, los archivos o directorios estarian donde los queremos y necesitamos. Pero esto no siempre es asi.
Los sistemas UNIX utilizan el comando mv para mover o renombrar un archivo. Se usa la sintaxis:
mv origen destino
Por ejemplo renombra el archivo prueba1.txt
para que se
llame carta_abuelo.txt
mediante el comando:
mv prueba1.txt carta_abuelo.txt
Puedes usar el comando para cambiar de directorio el fichero. Por ejemplo:
mv carta_abuelo.txt cartas/
Ten en cuenta que la / es importante en UNIX. Indica que debes mover
el archivo carta_abuelo.txt
al interior de un directorio
llamado cartas/
.
Pero si olvidas la /
en el directorio
cartas/
y solo indicas
mv carta_abuelo.txt cartas
...pues el interprete buscara un archivo llamado
carta_abuelo.txt
y le cambiara el nombre a
cartas
. ¡Recuerda!, la /
al final de un nombre
es importante pues indica la diferencia entre un directorio y un
archivo.
Renombra ahora el archivo prueba3.txt
a
cenicienta.txt
y muevelo al directorio
cuentos/
usando un unico comando:
mv prueba3.txt
cuentos/cenicienta.txt
Como ves, si lo ordenas especificamente, podras renombrar un fichero situado en un directorio distinto al que te encuentras. Por ejemplo:
mv ~/temporal/poemas/prueba4.txt ~/temporal/poemas/corazon.txt
Ejercicio 9: Borrar con rm
Si no necesitas un archivo o directorio, puedes borrarlo. Esto ahorrara recursos de computo en el sistema, que podremos disfrutar entre todos.
Puedes borrar archivos dentro de un directorio mediante el comando rm ("remover").
En este tutorial, finalizaremos eliminando los archivos y directorios
ya creados. Desplazate al directorio ~/temporal
y borra el
archivo prueba5.txt.copia
con:
cd ~/temporal
rm prueba5.txt.copia
Podrias repetir esto para borrar el resto de los archivos, pero
podrias tambien usar el comodin ? para indicar "todo
tipo de archivo que inicie con prueba
, contenga un caracter
cualquiera, y termine con .txt
". Esto se hace de la
siguiente manera:
rm prueba?.txt
rm solo puede borrar archivos. En caso de querer borrar un directorio, debes utilizar el modificador -r. Por ejemplo:
rm -r cuentos/
cheat.sh
Una pagina de excelencia para los menos versados, pero que esten por el camino de la experticia, es, sin duda alguna, y gracias al aporte de @igor_chubin, cheat.sh. Es una forma interactiva de recordar ciertos comandos cuando menos relevantes le parece a nuestro cerebro, pero que en la practica, son en su contrariedad, necesarios.
Conclusion
Si lo deseas, puedes borrar ahora el directorio
temporal/
y todo su contenido. Usa para ello el comando
rm:
rm -r ~/temporal
Vuelve a tu directorio /home
con el comando:
cd ~
...¡y continua disfrutando de texto-plano.xyz, el entorno minimalista!
¡Felicitaciones! Ya conoces los rudimentos basicos de un sistema similar a UNIX. Ahora puedes continuar con el Tutorial de la Consola II