domingo, 31 de diciembre de 2017

Introducción

Quiero contarte una historia.

No, no es la historia de cómo, en 1991, Linus Torvalds escribió la primera versión del kernel de Linux. Puedes leer esa historia en montones de libros sobre Linux. Tampoco voy a contarte la historia de cómo, algunos años antes, Richard Stallman comenzó el Proyecto GNU para crear un sistema operativo libre parecido a Linux. Esa también es una historia importante, pero la mayoría de los libros de Linux también la incluyen.

No, quiero contarte la historia de como tú puedes recuperar el control de tu ordenador.
Cuando, estudiando en el instituto, comencé a trabajar con ordenadores había una revolución en marcha. La invención del microprocesador había hecho posible para la gente normal, como tú y yo, tener un ordenador. Es difícil para mucha gente hoy imaginar cómo era el mundo cuando sólo las grandes empresas y grandes gobiernos manejaban ordenadores. Digamos que no se podía hacer mucho más.

Hoy, el mundo es muy diferente. Los ordenadores están en todas partes, desde pequeños relojes de pulsera a gigantescos centros de datos. Además de ordenadores repartidos por todas partes también tenemos redes conectándolos. Ésto ha creado una maravillosa nueva era de empoderamiento personal y libertad creativa, pero en las dos últimas décadas algo más ha sucedido. Algunas grandes corporaciones han impuesto su control sobre la mayoría de ordenadores del mundo y han decidido lo que puedes o no puedes hacer con ellos. Afortunadamente, gente de todo el mundo está haciendo algo al respecto. Están luchando por mantener el control de sus ordenadores escribiendo su propio software. Están construyendo Linux.

Mucha gente habla de "libertad" con respecto a Linux, pero no creo que la mayoría de la gente sepa que significa esta libertad en realidad. Libertad es el poder de decidir lo que tu ordenador hace, y la única forma de tener esta libertad es saber que está haciendo tu ordenador. La libertad es un ordenador que no tiene secretos, en el que todo puede saberse si te interesa averiguarlo.


¿Por qué usar la línea de comandos?

¿Te has dado cuenta alguna vez que, en las películas, cuando el "súper hacker" - ya sabes, el tío que puede entrar en la computadora militar ultra-segura en menos de treinta segundos - se sienta en el ordenador, nunca toca un ratón? Es por que los que hacen las películas saben que nosotros, como seres humanos, instintivamente sabemos que la única forma de hacer algo en un ordenador ¡es escribiendo en el teclado!

La mayoría de los usuarios de ordenadores de hoy sólo están familiarizados con la interfaz gráfica de usuario o GUI (del inglés graphical user interface) y los vendedores y los expertos les han enseñado que la interfaz de línea de comandos o CLI (del inglés command line interface) es una cosa espantosa del pasado. Es una pena, porque una buena interfaz de línea de comandos es una maravillosa y expresiva forma de comunicarse con el ordenador, muy parecida a lo que el lenguaje escrito es para los seres humanos. Se ha dicho que "las interfaces gráficas de usuario hacen fáciles las tareas fáciles, mientras que las interfaces de línea de comandos hacen posibles las tareas difíciles" y eso es muy cierto aún hoy.

Desde que Linux fue desarrollado desde la familia de sistemas operativos Unix, comparte la misma rica herencia de herramientas de línea de comandos que Unix. Unix saltó a la fama en los primeros años ochenta (aunque fue desarrollado una década antes), antes de que se extendiera la adopción de las interfaces gráficas de usuario, y por eso, se desarrolló una amplia interfaz de línea de comandos en su lugar.


¿De qué trata este libro?

Este libro es una visión amplia sobre "vivir" en la línea de comandos de Linux. Al contrario que algunos libros que se concentran en un sólo programa, como el programa shell o interfaz, bash, este libro tratará de explicar como utilizar la interfaz de línea de comandos en un sentido amplio. ¿cómo funciona? ¿qué puede hacer? ¿cuál es la mejor forma de usarla?

Éste no es un libro sobre la administración de sistemas Linux. Mientras que cualquier debate serio sobre la línea de comandos lleva inevitablemente a asuntos de administración de sistemas, este libro sólo tratará algunas cuestiones de administración. Sin embargo, preparará al lector para un estudio posterior proporcionando unos cimientos sólidos en el uso de la línea de comandos, una herramienta esencial para cualquier tarea seria de administración de sistemas.

Este libro está muy centrado en Linux. Muchos otros libros tratan de ser más atractivos incluyendo otras plataformas como Unix genérico y OS X. Al hacerlo, se convierten en una presentación de tópicos generales. Este libro, por otra parte, sólo cubre distribuciones Linux actuales. El noventa y cinco por ciento del contenido es útil para usuarios de otros sistemas parecidos a Linux, pero este libro está muy enfocado a las interfaces de línea de comandos de Linux modernas.

¿Quién debería leer este libro?


Este libro es para nuevos usuarios de Linux que hayan migrado desde otras plataformas. Lo más probable es que seas un "usuario avanzado" de alguna versión de Microsoft Windows. Quizás tu jefe te ha dicho que administres un servidor Linux, o quizás eres sólo un usuario de escritorio que está cansado de todos los problemas de seguridad y quieres darle una oportunidad a Linux. Eso está bien. Todos sois bienvenidos.

Dicho esto, no hay atajos para dominar Linux. Aprender la línea de comandos es un reto y requiere un esfuerzo real. No es que sea muy duro, más bien es muy extenso. El sistema Linux medio tiene literalmente miles de programas que puedes usar en la linea de comandos. Considérate avisado; aprender la linea de comandos no es un esfuerzo puntual.

Por otro lado, aprender la línea de comandos de Linux es extremadamente provechoso. Si crees que eres un "usuario avanzado" ahora, espera. No sabes cual es su poder real - todavía. Y al contrario que otras habilidades informáticas, el conocimiento de la linea de comandos es para mucho tiempo. Las habilidades aprendidas hoy serán útiles todavía dentro de diez años. La línea de comandos ha sobrevivido al paso del tiempo.

Se asume también que no tienes experiencia programando, pero no te preocupes, te iniciaremos en ese camino también.

¿Qué hay en este libro?


Este material está presentado en un orden cuidadosamente escogido, como si tuvieras un tutor sentado junto a ti para guiarte. Muchos autores tratan esta materia de una forma “sistemática”, lo que tiene sentido desde la perspectiva del autor, pero puede ser confuso para los nuevos usuarios.

Otro objetivo es familiarizarte con la forma de pensar de Unix, que es distinta de la forma de pensar de Windows. A lo largo de nuestro camino, tomaremos algunos desvíos para ayudarte a comprender por qué algunas cosas funcionan de un modo concreto y por qué lo hacen así. Linux no es sólo una pieza de software, es también una pequeña parte de la gran cultura Unix, que tiene su propio lenguaje e historia. Podría hacer alguna reflexión también.

Este libro está dividido en cuatro partes, cada una cubre un aspecto de la experiencia con la línea de comandos:
  • Parte 1 – Aprendiendo el Shell comienza nuestra exploración del lenguaje básico de la línea de comandos incluyendo cosas como la estructura de los comandos, el sistema de navegación de ficheros, edición en línea de comandos, y encontrar ayuda y documentación sobre los comandos.
  • Parte 2 – Configuración y Entorno cubre la edición de ficheros de configuración que controlan el funcionamiento del ordenador desde la línea de comandos.
  • Parte 3 – Tareas comunes y herramientas esenciales explora muchas de las tareas ordinarias que se realizan normalmente desde la línea de comandos. Los sistemas operativos como-Unix (similares a Unix), uno de ellos es Linux, contienen muchos programas de línea de comandos “clásicos” que se usan para realizar grandes operaciones con datos.
  • Parte 4 – Escribiendo Scripts de Shell presenta la programación en Shell, una técnica, rudimentaria pero fácil de aprender, para automatizar muchas tareas comunes de computación. Aprendiendo programación en Shell, te familiarizarás con conceptos que pueden ser aplicados a muchos otros lenguajes de programación.

¿Cómo leer este libro?

Empieza por el principio del libro y síguelo hasta el final. No está escrito como un trabajo de referencia, es más como una historia que tiene un inicio, una cumbre y un desenlace.

Prerrequisitos

Para usar este libro, todo lo que necesitas es una instalación de Linux funcionando. Puedes conseguirlo de cualquiera de estas dos formas:

  1. Instala Linux en tu computadora (no tiene que ser muy potente). No importa la distribución que elijas, aunque la mayoría de las personas hoy en día empiezan con Ubuntu, Fedora o OpenSuse. Si estás en duda, prueba primero Ubuntu. Instalando una distribución de Linux moderna puede ser ridículamente fácil o ridículamente difícil dependiendo de tu hardware. Recomiendo un ordenador de hace un par de años y que tenga al menos 256 megabytes de RAM y 6 gigabytes libres de disco duro. Evita portátiles y redes inalámbricas si es posible, ya que suelen ser más difíciles de hacerlas funcionar. (Nota del traductor: estos requisitos se refieren a la fecha de edición del libro, en la actualidad se necesita una hardware algo más potente.)
  2. Utiliza un “Live CD”. Una de las cosas interesantes que puedes hacer con muchas distribuciones Linux es ejecutarlas directamente desde un CDROM (o una unidad USB) sin instalar nada. Sólo entra en la configuración de tu BIOS y configura tu ordenador para que “Arranque desde el CDROM”, introduce el Live CD, y reinicia. Usar un Live CD es una gran forma de probar la compatibilidad de un ordenador antes de instalarlo. La desventaja de usar un Live CD es que podrá ser mucho más lento que un Linux instalado en el disco duro. Ubuntu y Fedora (además de otros) tienen versiones en Live CD.
Independientemente de como instales Linux, tendrás que tener ocasionalmente privilegios de súper-usuario (p.ej. administrativos) para llevar a cabo las lecciones de este libro.

Cuando tengas una instalación funcionando, empieza leyendo y siguiendo el libro con tu propio ordenador. La mayoría del material de este libro es “manos a la obra”, así que ¡siéntate y empieza a teclear!


¿Por qué no lo llamo “GNU/Linux”?

En algunos ámbitos, es políticamente correcto llamar al sistema operativo Linux “Sistema Operativo GNU/Linux”. El problema con “Linux” es que no hay una manera correcta del todo de nombrarlo, porque ha sido escrito por mucha gente distinta en un esfuerzo de desarrollo enorme y distribuido. Técnicamente hablando, Linux es el nombre del kernel (núcleo) del sistema operativo, nada más. Por supuesto, el kernel es muy importante, ya que hace que el sistema operativo funcione, pero no es suficiente para formar un sistema operativo completo.

Richard Stallman, es el genio-filósofo que fundó el Free Software Movement (Movimiento por el Software Libre), comenzó la Free Software Foundation (Fundación por el Software Libre), formó el Proyecto GNU, escribió la primera versión del Compilador GNU C (GCC: GNU C Compiler), creó la Licencia Pública General GNU (GPL: General Public License), etc., etc., etc. Él insiste en que se le llama “GNU/Linux” para reflejar apropiadamente las contribuciones del Proyecto GNU. Mientras que el Proyecto GNU es anterior al kernel de Linux, y las contribuciones hechas por el proyecto son muy dignas de reconocimiento, colocarlo en el nombre es injusto para todos aquellos otros que hayan hecho contribuciones significantes. Además, pienso que “Linux/GNU” sería más preciso técnicamente ya que el kernel arranca primero y todo lo demás funciona sobre él.

Popularmente, “Linux” se refiere al kernel y todo el software libre y de código abierto que viene en cualquier distribución de Linux; o sea, todo el ecosistema Linux, no solo los componentes GNU. El mercado de sistemas operativos parece que prefieren nombres de una sola palabra como DOS, Windows, Solaris, Irix, AIX. Yo he elegido usar el formato popular. Si, de todas formas, prefieres utilizar “GNU/Linux”, por favor haz un “buscar y reemplazar” mentalmente mientras lees este libro. No me importará.

Agradecimientos


Quiero dar las gracias a las siguientes personas, quienes me ayudaron a hacer posible este libro:

Jenny Watson, Acquisitions Editor en Wiley Publishing quien en primer lugar me sugirió que escribiera un libro sobre scripts de shell.

John C. Dvorak, conocido y respetado columnista. En un episodio de su vídeo podcast, “Cranky Geeks,” Mr. Dvorak describió el proceso de escribir: “Cielos. Escribe 200 palabras al día y en un año tendrás una novela.” Este consejo me llevó a escribir una página al día hasta que tuve un libro.

Dmitri Popov escribió un artículo en Free Software Magazine titulado, “Creating a book template with Writer,” que me inspiró a usar OpenOffice.org Writer para maquetar el texto. Al final resultó que funcionó maravillosamente.

Mark Polesky realizó una extraordinaria revisión del texto.

Jesse Becker, Tomasz Chrzczonowicz, Michael Levin, Spence Miner también leyeron y revisaron partes del texto.

Karen M. Shotts contribuyó con muchas horas, puliendo mi supuesto Inglés, editando el texto.

Y finalmente, los lectores de LinuxCommand.org, que me han enviado muchos amables correos.

Sus ánimos me dieron la idea de que ¡Realmente merecía la pena!


¿Qué hay nuevo en The Second Internet Edition?

Esta versión de The Linux Command Line ha sufrido algún pulido adicional y modernización. En particular, se asume que la versión 4.x del bash es la versión estándar y el texto ha sido actualizado para reflejarlo. El número de capítulos en The Second Internet Edition ahora se corresponden con los de la edición No Starch Press. También he arreglado algunos bugs ;-)

Agradecimiento especial para las siguientes personas que me hicieron valiosos comentarios en la primera edición: Adrian Arpidez, Hu Bo, Heriberto Cantú, Joshua Escamilla, Bruce Fowler, Ma Jun, Seth King, Mike O'Donnell, Parviz Rasoulipour, Gabriel Stutzman, and Christian Wuethrich.

Para saber más

Algunos artículos de Wikipedia sobre la gente famosa que aparecen en este capítulo:
La Free Software Foundation y el GNU Project:
Richard Stallman ha escrito mucho sobre el asunto del nombre“GNU/Linux”:


Colofón


Este libro fue originalmente escrito utilizando OpenOffice.org Writer con las fuentes Liberation Serif y Sans en un Dell Inspiron 530N, configurado de fábrica con Ubuntu 8.04. La versión PDF de este texto fue generada directamente con OpenOffice.org Writer. The Second Internet Edition fue producida en el mismo ordenador utilizando LibreOffice Writer en Ubuntu 12.04.