aboutsummaryrefslogtreecommitdiffstats
path: root/_posts/2021-03-24-aprende-a-usar-la-terminal.md
blob: acd9a017c1f3d0f370bd317d84dd33a5811df093 (plain) (blame)
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
---
layout: post
title: Aprende a usar la terminal
date: 2021-03-24 21:52 -0300
category: ayuda
tags: shell interprete terminal consola comandos 
---

## Ejercicios

¡Recibe una cordial bienvenida!

Texto-plano.xyz es una comunidad de cómputo público en castellano. Sus miembros hacen uso a distancia de una computadora muy pequeña, provista del sistema operativo OpenBSD, similar a UNIX.

Debes operar este entorno por medio de una _Interfaz de Línea de Comandos (CLI)_. Esto significa que normalmente teclearás tus órdenes en lugar de manejar aplicaciones gráficas.

Si nunca has usado una _CLI_, no hay problema. Estos ejercicios sencillos y explicados, te acompañarán en tu aprendizaje de los rudimentos básicos para hacer la mayoría de los trabajos que desees.

### La Shell o "Intérprete de Comandos"

No bien accedas remotamente con tu terminal al entorno texto-plano.xyz, se te mostrará un mensaje de bienvenida con instrucciones simples, ¡y ya estarás listo para operar!.

Para ello usarás el "intérprete de órdenes", o en la jerga, una _shell_.

Esta shell es un programa capaz reaccionar a las instrucciones que le proporcionas, llamadas "órdenes" o "comandos". La shell también muestra en tu pantalla una señal llamada _prompt_, que demuestra que el sistema está a tu disposición.

El prompt puede aparecer de la siguiente manera:

<pre>fulano@texto-plano.xyz:~$</pre>

(Esto significa que eres el usuario "fulano", en el entorno "texto-plano.xyz". El signo $ indica el final del prompt).

### Ejercicio 1: Comandos básicos

#### ¿Quién soy? ¿Cómo me llamo?

Prueba introducir tu primer órden para practicar.

Nota: Los comandos que debes utilizar se indican en **negrita**. Puedes teclearlos o "copiar y pegarlos" en tu terminal.

Teclea en la terminal el comando:

**whoami**

...y presiona la **tecla Intro** para enviar la órden. Se transmitirá este comando al intérprete de órdenes remoto, este lo interpretará, cumplirá y devolverá el resultado en tu terminal. Como consecuencia aparecerá en tu pantalla una nueva línea con tu _nombre de usuario_.

¡Felicitaciones! Ahora sabes cómo te llamas. Serás conocido en nuestro entorno con este nombre de usuario, aunque en estos ejercicios usaremos el nombre de usuario "fulano" a título ilustrativo

. :)

Texto-plano es un sistema de cómputo multiusuario y público. Puedes saber quién más está conectado al centro de cómputo en este preciso momento, introduciendo otra orden:

**w**

¡No olvides presionar la **tecla Intro**! El sistema podría indicar qué usuarios están conectados, (columna _USER_) y qué están haciendo (columna _WHAT_).

<pre> 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
</pre>

De los errores, se aprende. Intenta cometer un error a propósito para aprender; en lugar de utilizar el comando w (con minúscula), introdúce el comando **W** (con mayuúscula):

**W**

El sistema podría indicarnos:

<pre>

> bash: comando no encontrado: W

</pre>

Esto significa que **los entornos similares a UNIX son sensibles al uso incorrecto de las mayúsculas o minúsculas**. No es lo mismo _w_ (un comando existente y válido) que _W_ (un comando inexistente). Procura ser cuidadoso con el uso de mayúsculas y minúsculas en los nombres de los comandos, así también como los ficheros, y muy especialmnente las contraseñas.

## Directorios y archivos

Texto-plano.xyz se basa en un _sistema de archivado_ formado por una estructura de directorios. Deberás conocer su funcionamiento básico para ser efectivo, y a ello dedicaremos los siguientes ejercicios.

La estructura de directorios tiene forma de árbol. En su base se encuentra un directorio maestro llamado "raíz". De su tronco, se desprenden varias "ramas" (directorios). A su vez estos directorios pueden contener múltiples ramas más pequeñas (subdirectorios).

Cada directorio puede contener tanto otros directorios como también archivos.

Para conocer en qué directorio te encuentras en cualquier momento, ingresa el comando:

**pwd**

Por ejemplo, ahora podrías encontrarte en tu directorio de usuario:

<pre>/home/fulano</pre>

#### Directorio /home

El directorio _/home_ contiene los directorios de todos usuarios de texto-plano.xyz, incluyendo el tuyo propio, nomenclado según tu propio nombre de usuario.

El directorio de usuario (por ejemplo _/home/fulano_ ) es el espacio de disco que los miembros disponen dentro de texto-plano.xyz. Tu directorio de usuario puede abreviarse con el caracter de tilde "**~**".

> (Nota: El tilde puedes escribirlo presionando **AltGr+4** en los teclados de distribución española).

### Ejercicio 2: Listar el contenido de directorios con ls

Comprueba el contenido de tu directorio donde estás localizado en este momento. Para ello ingresa:

**ls**

El sistema te mostrará un listado con el contenido del directorio donde estés localizado. Si estás en tu directorio _/home/fulano_ podría indicar un contenido que incluya esto:

<pre>

> MailDir/  public_html/

</pre>

Procede a listar ahora el contenido del directorio _/home_, el cual se utiliza para almacenar los directorios de los usuarios de texto-plano.xyz. Podrás hacerlo específicandolo como un sufijo 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 intérprete considerará que le estás ordenando listar _un archivo_ llamado home, y no el contenido del _directorio_ /home. Recuerda, la / especifica al intérprete de comandos que el pedido es un directorio, y que se encuentra en el directorio raiz de la estructura de directorios.

También podrás listar el contenido del directorio raíz del sistema, la cual es representado por la _/_.

Introduce el comando:

**ls /**

...y el sistema informará ahora el contenido general del directorio raíz.

<pre>altroot/                                      harfbuzz-2.7.2_writes_to_HOME/
at-spi2-core-2.36.1_writes_to_HOME/           home/
atk-2.36.0_writes_to_HOME/                    lost+found/
bin/                                          mnt/
boot                                          pango-1.46.2_writes_to_HOME/
bsd*                                          pub/
bsd.booted*                                   root/
bsd.rd                                        sbin/
bsd.sp                                        strfile*
dev/                                          sys@
etc/                                          tmp/
gdk-pixbuf-2.40.0_writes_to_HOME/             usr/
gobject-introspection-1.64.1_writes_to_HOME/  var/</pre>

> Nota: Ten presente que estas "ramas" o directorios del sistema contienen distintos aspectos organizativos del mismo. El administrador de texto-plano.xyz suele moverse en estos directorios.

### Ejercicio 3: Cambiar de Directorio: cd

Cambiarás tu posición en la estructura de directorios a fin de trabajar en un directorio específico. Sólo puedes estar posicionado en un directorio a la vez.

Para cambiar de directorio usa el comando **cd** seguido del nombre del directorio al que te deseas desplazar.

Cambia tu localización al directorio _/usr_:

**cd /usr**

Este directorio de sistema llamado _/usr_ contiene una serie de aplicaciones de usuario que utiliza el administrador del sistema. Puedes listar su contenido ahora con **ls**.

Puedes volver a tu directorio individual _/home/fulano_ mediante la abreviatura **~**. Esto es muy conveniente:

**cd ~**

¡Genial! Has aprendido que la ruta _/home/usuario_ es tu propio directorio de usuario, y que puedes volver a ella rápidamente mediante el comando **cd ~**. El símbolo del tilde **~** es importante pues te avita tener que escribir la ruta _/home/usuario_.

### Ejercicio 4: Crear Directorios con mkdir

Un directorio puede contener muchos archivos diferentes en su interior, y te permitirá organizar mejor tu entorno. Sólo puedes crear directorios dentro de tu directorio _/home_ personal.

Puedes crear un directorio usando el comando **mkdir**, seguido por el nombre del directorio que quieres crear.

En este ejercicio, crearás un único directorio de trabajo llamado _temporal_, el cual estará localizado dentro de tu directorio /home de usuario ("~"). Puedes hacerlo introduciendo el comando:

**mkdir ~/temporal**

Los comandos UNIX te permiten ahorrar tiempo usando múltiples directorios o archivos.

Por ejemplo, crea tres subdirectorios de práctica a la vez localizados dentro del directorio ~/temporal. A tal fin se separan las "ramas" de la ruta mediante la barra /. Utiliza entonces el comando:

**mkdir ~/temporal/cartas ~/temporal/cuentos ~/temporal/poemas**

#### Tutoral: Desplazarnos en la estructura.

En este caso, cambia tu posición al directorio llamado "temporal" que creamos dentro de nuestro directorio de usuario.

**cd ~/temporal/**

Podrás comprobar que te encuentras dentro del directorio temporal ingresando nuevamente el comando **pwd**.

<pre>/home/fulano/temporal</pre>

Muchas shells también indican el directorio actual en el mismo prompt, lo que permite saber en todo momento en que rama del árbol de directorio estamos localizaados, y suelen hacer innecesario utilizar el comando pwd. Por ejemplo, podría indicarnos:

<pre>**/home/usuario/temporal**</pre>

...o bien:

<pre>~/temporal/</pre>

Al pedir un listado del contenido del directorio con **ls**, le sistema presentará el contenido del directorio donde estás asentado. Si estás en el directorio _~/temporal/_, podría indicarte:

<pre>cartas/  cuentos/  poemas/</pre>

Posicionado en el directorio ~/temporal, ilsta ahora el contenido de tu directorio de usuario _/home/fulano_. Para ello puedes usar la abreviatura ~.

**ls ~**

...y el sistema te podría presentar ahora:

<pre>MailDir/  public_html/  temporal/</pre>

Para retroceder un nivel en el árbol de directorios, se usa el comando **cd .. **

Por lo tanto, si estabas en /home/fulano/temporal e ingresas **cd .. **, serás transportado a /home/fulano.

¡Podrás ahora elegir qué te conviene mas: si listar directorios o moverte a ellos, o moverte a los directorios para luego listarlos. Ambas formas de trabajar son válidas.

Por ejemplo, asbiendo que el directorio temporal está dentro de tu /home, sin importar cual sea tu directorio actual, siempre puedes listarlo con:

**ls ~/temporal**

O bien podrías cambiar tu posicionamiento actual a ~/temporal y luego listarlo:

**cd ~/temporal**

**ls**

Ya has aprendido los rudimentos de los directorios, cómo ingresar a ellos y cómo moverte en el árbol de directorios.

### Ejercicio 5: Crear archivos con touch

Cada archivo en el sistema tiene un nombre, y opcionalmente puede tener una extensión 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 sería ordenar:

**touch /home/usuario/temporal/prueba1.txt**

...y repetir el proceso hasta el archivo _prueba5.txt_.

Pero escribir eso es tedioso. Simplemente usa **cd** para cambiar al directorio temporal:

**cd ~/temporal/**

...y a continuación 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 estás localizado dentro de un directorio, no es necesario escribir toda la ruta.

Ten en cuenta que si ahora introduces el comando **ls**, recibirás un listado del directorio donde te encuentras (~/termporal), informando el contenido:

<pre>cartas/   poemas/      prueba2.txt  prueba4.txt
cuentos/  prueba1.txt  prueba3.txt  prueba5.txt</pre>

### Ejercicio 6: Copiar con cp

En ocasiones puede ser útil 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 directorio _poemas/_. Puedes usar el comando:

**cp prueba4.txt poemas/corazon.txt**

También puedes copiar directorios:

**cp poemas/ poemas_copiados/**

Y podrás copiar directorios con sus contenidos, usando la opción **-r**:

**cp -r cartas/ cartas_copiadas/**

### Ejercicio 7: Mover o renombrar con mv

En un entorno ideal, los archivos o directorios estarían donde los queremos y necesitamos. Pero esto no siempre es así.

Los sistemas UNIX utilizan el comando **mv** para mover o renombrar un archivo. Se usa la sintáxis:

**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**

También 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 sólo indicas

**mv carta_abuelo.txt cartas**

...pues el intérprete buscará un archivo llamado "carta_abuelo.txt" y le cambiará el nombre a "cartas". ¡Recuerda!, la / al final de un nombre indica la diferencia entre un directorio y un archivo.

Renombra ahora el archivo prueba3.txt a cenicienta.txt y muévelo al directorio cuentos/ usando un único comando:

**mv prueba3.txt cuentos/cenicienta.txt**

### Ejercicio 8: Borrar con rm

Si no necesitas un archivo o directorio, puedes borrarlo. Esto ahorrará recursos de cómputo 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. Desplázate al directorio _~/temporal_ y borra el archivo _prueba5.txt.copia_ con:

**cd ~/temporal**

**rm prueba5.txt.copia**

Podrías repetir esto para borrar el resto de los archivos, pero podrías también usar el comodín **?** para indicar "todo tipo de archivo que incie con prueba, contenga un caracter cualquiera, y termine con .txt". Esto se hace de la siguiente manera:

**rm prueba?.txt**

_rm_ sólo puede borrar archivos. En caso de querer borrar un directorio, debes utilizar el modificador **-r**. Por ejemplo:

**rm -r cuentos/**

## Conclusión

¡Felicitaciones! Ya conoces los rudimentos básicos de un sistema similar a UNIX.

Si lo deseas, puedes borrar ahora el directorio _temporal/_:

**rm -r ~/temporal**

¡Vuelve a tu directorio _/home_ con el comando **cd ~** y continúa disfrutando de texto-plano.xyz, el entorno minimalista!
Un proyecto texto-plano.xyz