summaryrefslogtreecommitdiffstats
path: root/_posts/2021-07-25-unix-terminal.md
blob: 9b9e38cd4e92d80d593cf57dd09ddd75c6c9998d (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
---
title: Aprender a usar la terminal
layout: post
excerpt: |
    Algunas razones sobre por qué es útil aprender a utilizar la terminal
    y enlaces a recursos para empezar.
---

> Este artículo es una réplica del topic que abrí en el foro de Cybercirujas:
> [https://cybercirujas.rebelion.digital/foro/viewtopic.php?f=7&t=29](https://cybercirujas.rebelion.digital/foro/viewtopic.php?f=7&t=29)

A la hora de recuperar equipos que el mercado y las big tech han decidido
dejado obsoletos, el mundo del Software Libre aparece como un oasis de libertad
y de sobrevida para ese hardware que, de regirse por las reglas de la
obsolesencia programa, hubiese terminado enterrado por miles de años, empujando
a sus previos usuarios a desembolsar una suma de dinero considerable en un
reluciente aparato nuevo.

Esto no es nuevo para les cybercirujas. Todes conocemos las bondades del
Software Libre, y no solo en equipos viejos, sino que se nos presenta como la
primera -y para algunes, única- opción para instalar incluso en un hardware
nuevo. Sin embargo, muchas personas que están comenzando con la recuperación de
equipos, o bien las mismas personas que reciben equipos recuperados, se
enfrentan por primera vez a un Sistema Operativo de PC distinto a los
comerciales más utilizados. En general, les cybercirujas optamos por instalar
alguna distribución de GNU/Linux.

Con ninguna certeza, pero cero dudas, diría que cualquier usuarie que
interactuó alguna vez con un interfaz gráfica de escritorio puede adaptarse muy
fácilmente a la mayoría de los Entornos de Escritorio que ofrecen las distros
de GNU/Linux, sea XFCE, GNOME, KDE, LXDE, LXQT, etc. Sin embargo en algún
momento se verán en la necesidad de interactuar con su computadora mediante una
interfaz de texto que se conoce como **Terminal**, **shell** o **línea
de comandos**.

La reacción de las personas que tienen una larga historia con las interfaces
gráficas puede ir desde la curiosidad hasta un terror absoluto al verse en la
necesidad de introducir caracteres en una línea de comandos. Para muches, el
mundo de la terminal puede parecerles una lugar exclusivo para los mejores
hackers, programadores y especialistas informáticxs.

La realidad es muy distinta. Antes de que apareciesen las interfaces gráficas
en las PC de consumo hogareño (allá por finales de los 80, principios de los
90), la mayoría de las personas interactuaban con sus computadoras mediante la
línea de comandos. Y con "las personas" me refiero a informáticxs
y científicxs, pero también a empresarixs, docentes, estudiantes, empleadxs
administrativxs, etc. Interactuar con la computadora mediante la terminal era
una habilidad que toda persona que quisiera utilizar una computadora necesitaba
adquirir. La aparición de las interfaces gráficas hizo que muchas personas
dejen de necesitar recurrir a la terminal para las tareas que realizaban
a diario. Sin embargo, para muchas tareas la terminal se presenta como una
interfaz muy eficiente para realizarlas, incluso hasta hoy en día.

Por ejemplo, en distribuciones como Debian, Ubuntu y derivadas (como Huayra),
podemos actualizar todas las aplicaciones de nuestro sistema escribiendo solo
tres palabras en una sola línea:

```
sudo apt upgrade
```

¿Esta es la única forma que tengo en GNU/Linux de actualizar mis aplicaciones?
Claro que no! Muchas distribuciones ofrecen interfaces gráficas para hacerlo,
y en general apretando un solo botón. Entonces, si ya tengo un botón para
hacerlo, ¿vale la pena seguir usando la terminal? Claro! Por ejemplo, si cada
vez que instalo un GNU/Linux en una computadora quiero instalarle siempre las
mismas aplicaciones, podría utilizar la interfaz gráfica y buscar cada una de
esas aplicaciones (algo que probablemente requiera muchos clicks y scrolleos).
Ahora bien, si la primera vez que lo hago anoto el nombre de los paquetes de
esas aplicaciones, por ejemplo:

```
mpv firefox blender thunderbird libreoffice
```

En la próxima máquina puedo copiar esos nombres e instalar todos esos programas
en una sola línea:

```
sudo apt install mpv firefox blender thunderbird libreoffice
```

Si tenés que hacer esto en muchas máquinas, te ahorrás mucho tiempo!

Las distribuciones de GNU/Linux siguen ofreciendo y promoviendo el uso de la
terminal, no por una cuestión elitista, sino por su eficiencia para realizar
muchas tareas. Y dado que GNU es un sistema operativo que nació inspirado en
Unix, los comandos que utilizamos en él soy muy similares a los que utilizamos
en una terminal de Unix. Muches aprendimos a utilizar la terminal medio a los
golpes, copiando y pegando lineas, buscando información en Internet, leyendo
las ayudas o **manpages** de los programas. A pesar de ser una forma muy
divertida de aprender, quizás está bueno tener una base para entender qué
estamos haciendo con esas líneas.

Existe una comunidad de personas dedicadas a generar material y enseñar
a programar y proveer conocimientos sobre el manejo de datos a científiques de
todo el mundo: [The Carpentries](https://carpentries.org/). La idea
fundamental es que ellos ofrecen cursos a partir de materiales didácticos que
se construyen de manera comunitaria bajo licencias Creative Commons. La mayoría
de sus cursos están en inglés, pero hay uno en particular sobre aprender
a utilizar la [Terminal de
Unix](https://swcarpentry.github.io/shell-novice-es/) que se encuentra
traducido al español.

Si bien la audiencia de The Carpentries está orientada al ambiente académico,
creo que el material de ese curso es muy útil para cualquier persona que quiera
aprender a utilizar la terminal sin contar con ningún conocimiento previo.
Además de la terminal, el material recorre contenidos como el sistema de
archivos de Unix y GNU/Linux, cómo leer la documentación de los programas, cómo
_encadenar_ programas para realizar diversas tareas y hasta como podemos
escribir **scripts** que nos permitan automatizar tareas.

Espero que el material le pueda servir a algune cyberciruja que se está
iniciando con la terminal, o bien a les más expertes que quieren aprender algún
que otro truquito que no conocían.
Un proyecto texto-plano.xyz