Mostrando entradas con la etiqueta shell. Mostrar todas las entradas
Mostrando entradas con la etiqueta shell. Mostrar todas las entradas

jueves, 11 de abril de 2013

Introduciéndonos en la shell de Ubuntu

Resto de entradas con intenciones didácticas en la etiqueta Aprendizaje.

Es la hora de la verdad, ya hemos instalado nuestro primer Linux. Lo tenemos todo reluciente ahí, luciendo en nuestro monitor. ¿A que no es tan distinto de Windows?

Lo primero antes de empezar a funcionar en Ubuntu, o en la distribución que uno escoja, es familiarizarse con el entorno. Hay cosas que cambian de nombre, otras que resultarán completamente nuevas y algunas, las habrá, que se echarán de menos. Podemos empezar afirmando que en GNU/Linux TODO tiene nombre, hasta la tontería más boba recibe algún tipo de denominación. Por ejemplo, lo que en Windows es simplemente el explorador de archivos en Ubuntu, openSUSE o Fedora es Nautilus, Dolphin o Konqueror, dependiendo de si estamos entornos GNOME o KDE; la ventana de comandos o shell tiene variantes como bash, dash, sh o ksh; los programas de instalación y configuración en sistemas derivados de Debian se llaman apt, aptitude y dpkg; en openSUSE el software responsable de la configuración y mantenimiento del sistema atiende por YaST; los derivados de Red Hat como Fedora utiliza la herramienta yum... En fin, es algo que iremos viendo poco a poco.

Pero lo que pretendo es que vayamos cogiendo soltura con el terminal. Los menús y el entorno gráfico son tan intuitivos como en Windows así que lo que merece atención es la línea de comandos a través del terminal.

Al terminal se le denomina también ventana de shell. Una shell es un software que permite interactuar con el sistema por medio de órdenes o comandos, y visualmente es una ventana con un prompt (línea que representa el nombre del usuario que uno haya escogido y el localhost o nombre que se haya dado al PC separados por una arroba, seguido de dos puntos, una tilde y el símbolo del dólar). Esto puede cambiar según la distribución, pero ya he dicho que vamos a centrarnos en Ubuntu. Así es como se verá nuestro prompt:



nombre_de_usuario@localhost:~$

La ventana de comandos, terminal o shell se parecen al antiguo MS-DOS pero conviene recordar que UNIX en anterior a que Bill Gates pensara en inventar MS-DOS.

Hay varios tipos de shell, que responden de forma distinta en función de los parámatros bajo los que hayan sido creadas. La más popular es bash, pero existen otras como sh (versión anterior de bash), tschcshksh y zsh. Yo he probado alguno otra y... mejor que quedo con bash. Si quisiéramos cambiar a otra utilizaríamos el comando chsh (change shell):



:~$ chsh
nombre_de_shell
:~$

Asumamos que tras terminar de teclear una línea pulsamos la tecla enter.Las shells instaladas se encuentran en el directorio /binPodemos ver un listado de ellas instaladas listando el archivo /etc/shells con ayuda del comando cat:



:~$ cat /etc/shells
# /etc/shells: valid login shells
/bin/csh
/bin/sh
/usr/bin/es
/usr/bin/ksh
/bin/ksh
/usr/bin/rc
/usr/bin/tcsh
/bin/tcsh
/usr/bin/esh
/bin/dash
/bin/bash
/bin/rbash
:~$ 

También podemos cambiarla de una sola vez, ejecutando el comando con la opción -s y, a continuación, escribiendo la ruta de la shell que deseamos, por ejemplo, sh.


:~$ chsh -s /bin/sh
:~$

Si quisiéramos volver a bash no tenemos más que cerrar la terminal. Cuando la volvamos a abrir volveremos a estar con la shell bash. O podemos volver a ejecutar cualquiera de los comandos anteriores. Este:


:~$ chsh
nombre_de_shell
:~$


Y este otro:


:~$ chsh -s /bin/bash
:~$

Son conceptos durillos de asimilar para un recién llegado, pero si queremos exprimir nuestro Linux hay que empezar a pegarse con ellos.
Y hablando de pegar, Ian Dury pedía al frente de los Blockheads que le golpearan con un palo rítmico a finales de lo 70 en este mítico tema.


viernes, 8 de marzo de 2013

Ejemplo de la utilidad de introducir comandos por terminal

Se que dominar el terminal shell es uno de los aspectos de los sistemas Linux que más echan para atrás a los nuevos usuarios, así que en esta breve entrada voy a explicar un ejemplo práctico de cómo un comando por teclado puede solucionar lo que el entorno gráfico no es capaz de resolver.

Supongamos que hemos descargado el archivo manualdecocina.zip, el cual está en un formato de compresión muy usual. Imaginemos que dentro de ese archivo comprimido hay, entre otros, un archivo llamado "Manual de cocina española.pdf". Para descomprimirlo nos vamos al Nautilus, el explorador de archivos de Ubuntu, hacemos doble clic en el archivo manualdecocina.zip y nos abre Fille Roller, el gestor de archivadores por defecto para GNOME, el cual nos muestra el contenido. Pinchamos en la opción "Extraer" y, ah, nos aparece una pantalla con el siguiente error:

Ha ocurrido un error mientras se extraían los archivos.

caution: filename not matched: Manual de cocina espa\?\?ola.pdf

¿Cuál es el problema? Pues que File Roller no reconoce en carácter ñ. Así que no puede extraer "Manual de cocina española.pdf" del .zip porque el archivo contiene la letra ñ en su nombre. La, nunca mejor dicho, puñetera letra ñ.

¿Como solucionamos el problema? Abrimos una Terminal en el menú Accesorios > Terminal y, una vez allí, nos posicionamos en el directorio donde hayamos descargado manualdecocina.zip que, perfectamente, puede ser Descargas.

cd Descargas

Luego ejecutamos el comando unzip:

unzip manualdecocina.zip

Y el archivo "Manual de cocina española.pdf" se descomprime sin problemas.

Puede ocurrir que no tengamos instalada la utilidad unzip. En tal caso la tendríamos que instalar de la siguiente forma:

sudo apt-get install unzip

Y, a continuación, repetir el paso anterior.

Hemos visto maneras y términos que nos sonarán a chino pero no era el propósito de esta entrada profundizar en ellos. Esto ha sido únicamente una forma de demostrar cómo la línea de comandos puede a veces solucionar de manera rápida y sencilla un problema planteado desde el entorno gráfico, más amigable y vistoso pero, en ocasiones, ineficaz. Es solo un ejemplo de los muchos que podríamos poner, pero nos queda mucho camino por recorrer para eso en este blog.

Hemos hablado de compresión de archivos. No es de compresión, sino de presión de lo que hablaban Queen en este clásico que aquí interpretan sin David Bowie, pero con Freddy Mercury en plena forma.



miércoles, 6 de marzo de 2013

Terminología básica que ayuda a no sentirse un tonto en un foro de Linux

Resto de entradas con intenciones didácticas en la etiqueta Aprendizaje.

Ya hemos visto que, dado que el ordenador es nuestra herramienta principal, conocer al menos de oídas algunas expresiones nos puede ayudar a entender explicaciones futuras, o incluso a resolver problemas. Antes de entrar a decidir qué distribución Linux elegir también estimo necesario tener claros algunos términos que le son más propios. Nos ayudará a comprender de que hablan esos listillos que pululan por la red, impartiendo lecciones a diestro y siniestro, creyendo que se les entiende todo pero que, en mucho casos, solo contribuyen a que la confusión inicial se incremente e incluso ahuyente cualquier atisbo de curiosidad que uno pudiera sentir sobre Linux. Y lo digo por propia experiencia, lo foros de ayuda están atiborrados de gente así. Conociendo lo que viene a continuación usted podrá transitar por esos foros con algo más de seguridad.

LiveCD
Es una distribución (esto ya sabemos lo que es, ¿verdad?) almacenada en un CD o un DVD, ejecutable desde ese medio sin necesidad de instalar ni modificar nada en su equipo. Así, se puede trastear y navegar y probar cuanto haga falta (a una menor velocidad; recordemos que el acceso a las unidades de CD/DVD es más lento que a un disco duro) para, en caso de gustar y no encontrar conflicto alguno de hardware, optar por instalarla directamente. O si no, volver a probarla en otro momento. Para esto último basta con salir y apagar o reiniciar el equipo y extraer el disco del lector. Las cosas en su ordenador volverán a estar igual que antes, sin riesgo alguno para la integridad de sus archivos. Hay que destacar que se puede trasladar un LiveCD a un pendrive; determinándolo como unidad de arranque en el menú del BIOS del PC (al cual accedemos pulsando F11 en cuanto empieza el proceso de arranque) el ordenador inicializará el SO que encuentre en dicho pendrive para que, eso mismo, podamos trastear y explorar cuanto nos venga en gana. En resumen, una gran opción si queremos ojear de primera mano de qué va esto de los sistemas Linux sin compromiso ni riesgo alguno.

X-Window System
Es un software que proporciona una interfaz gráfica a los sistemas UNIX, como es el caso de Linux.

GDM (GNOME Display Manager)
Es un gestor de acceso al X-Window System basado en GNOME, materializado en una pantalla que le pedirá al usuario su nombre y contraseña (introducidos durante el proceso de instalación si así lo ha dispuesto) cada vez que quiera iniciar una sesión.

GNOME
Entorno de escritorio para sistemas tipo UNIX, usado para Ubuntu entre otras distribuciones. Me van a perdonar si hago mucho hincapié en Ubuntu y derivados pero es la distribución que manejo desde el principio y la que mas conozco.

Entorno de escritorio
Conjunto de características gráficas que definen el aspecto de un sistema operativo tipo Windows o Mac: colores, forma, disposición y apariencia de las ventanas y menús, tipografías y efectos varios (fundidos, desplazamientos, apariencia 3D, cortinillas...) y, en fin, esas cositas que hacen chulo y atractivo un SO. Es posible instalar diferentes entornos de escritorio para una sola distribución y después elegir la que más nos guste.

Unity
Entorno de escritorio implementado para Ubuntu en sustitución de GNOME y que no ha parado de cosechar críticas desde su aparición por los elevados recursos que consume. Por suerte, la opción de seguir usando GNOME sigue estando ahí.

Cinnamon
Entorno de escritorio propio de la distribución Linux Mint y que también se puede instalar en otras distros. En mi Ubuntu sustituí Unity por Cinnamon y todo fueron mejoras.

KDM
Es un gestor de escritorio para sistemas tipo UNIX, basado en KDE.

KDE
Entorno de escritorio para sistemas tipo UNIX, el más implantado en Linux junto con GNOME, usado en la distribución Kubuntu entre otras.

Xfce
Entorno de escritorio para sistemas tipo UNIX más ligero y pensado para máquinas menos potentes y usado en, por ejemplo, la distribución Xubuntu.

LXDE (Lightweight X11 Display Environment, Entorno de escritorio X11 ligero)
Entorno de escritorio para sistemas tipo UNIX aún más ligero, pensado para máquinas poco potentes, antiguas y netbooks, conocido por estar presente en la distribución Lubuntu.

Grub
Software que habilita un menú que le permite un arranque dual, esto es, elegir sistema operativo con que arrancar el ordenador en caso de que haya instalado una distro Linux teniendo ya Windows preinstalado. Muy útil para quien quiera empezar a valorar alternativas a SO de Microsoft.

Shell
Es el intérprete de comandos (órdenes, instrucciones), un interfaz (medio gráfico a través del cual el usuario se comunica con su ordenador) que nos permite introducirlos para generar una respuesta por parte del ordenador. Quienes se acuerden de MS-DOS sabrán que se entraba directamente a la shell al carecer este sistema de entorno gráfico. Es, en suma, cualquier intérprete que un usuario emplee para escribir comandos. En Linux hay diferentes tipos de shell en función de la sintaxis de redacción de los comandos, como bash, ash, csh o tsch.

Bash
Es un tipo de shell, la más común en sistemas Linux. Un software que interpreta los comandos desde la ventana shell. ¿Una equivalencia a modo de ejemplo? Shell es a los coches lo que Bash es a Seat, ash a Renault o csh a Peugeot.

Terminal o consola
Herramienta presente en el entorno gráfico de todas las distribuciones mediante la cual se nos da acceso a la ventana de shell.

Init
En sistemas UNIX, es el primer proceso en ejecución tras la carga del kernel, y que a su vez genera todos los demás procesos.

Kernel
Es el software principal que conforma un sistema operativo. Es el núcleo del sistema, el principal responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora o, en forma básica, el encargado de gestionar recursos a través de servicios de llamada al sistema (confieso que aún no se muy bien qué significa esto último).

Compiz
Gestor de ventanas para el X-Window System que proporciona una serie de efectos de visualización dentro del entorno de escritorio.

Repositorio
Los repositorios son contenedores de software del que se nutren las distribuciones GNU/Linux y están alojados en un servidor. De ahí uno se baja cualquier programa que en ellos se encuentre almacenado, y hay repositorios oficiales, la mayoría, y otros que no lo son. Desde el escritorio de Ubuntu, por ejemplo, se accede a ellos a través de una utilidad llamada Synaptic.

Superusuario o usuario root
Los sistemas basados en UNIX están concebidos para ser multiusuario y multitarea, por lo que existen restricciones de acceso a según qué usuarios, a según qué partes del sistema y para según que procesos. Para tener pleno acceso y control a cualquier punto del sistema hay que entrar en modo superusuario o modo root, eso sí, siendo consciente de que una gamba metida como root puede echar abajo todo el cotarro. De ahí que en Ubuntu venga deshabilitado por defecto y que para hacerlo efectivo haya que introducir el comando sudo delante de cada comando que uno quiera emplear, lo que puede resultar bastante coñazo.

Máquina virtual
Programa que le permite instalar otro sistema operativo dentro del que ya tiene instalado (el más común es VirtualBox) y que funciona como una aplicación más. Por ejemplo, puede instalar Windows virtualizado dentro de su distribución GNU/Linux favorita en esos molestos casos en que un periférico concreto (impresora, escáner, webcam...) sea indetectable por carecer de drivers para Linux, pero sí los tenga para Windows. Por supuesto, desde ese Windows virtualizado puede usted instalar Office, Photoshop o lo que le venga en gana. También funciona a la inversa, Windows como sistema anfitrión y un Linux virtualizado.

Por supuesto, Wikipedia y otras páginas están a su entera disposición para ampliar lo que yo les vengo contando.

Y con esto creo que ya pueden ir haciéndose una idea de lo que vendrá mas adelante. Bueno, en realidad no, el aprendizaje será lento, tanto como las imágenes en slow motion del siguiente vídeo:


lunes, 4 de marzo de 2013

Ventajas e inconvenientes de cambiar a Linux

Resto de entradas con intenciones didácticas en la etiqueta Aprendizaje.

Cuando uno se plantea dar el salto a GNU/Linux (en adelante, únicamente Linux) y abandonar la dictadura del software privativo enseguida surgen las dudas. Es lógico, el hábito hace mucho y prescindir de un sistema al que ya estamos acostumbrados por otro que cuando menos es una incógnita no es un paso que cualquiera esté dispuesto a dar. Hay que admitir que Windows es un sistema intuitivo y que no se tarda en aprender, aparte de que es relativamente sencillo conseguir copias piratas de casi cualquier aplicación. Un usuario medio lo tendrá difícil para decidirse, y lo menos que puedo hacer es explicar lo que uno gana y lo que pierde con el cambio.

En primer lugar vayamos con las ventajas, y la primera es obvia: el precio. No cuesta nada bajarse, instalar una distribución Linux y funcionar con ella en tu casa, en tu PYME o en tu universidad. Lo mismo digo de la multitud de aplicaciones existentes para toda clase de tareas, así como sus correspondientes actualizaciones y nuevas versiones. Todo a coste cero y sin apenas restricciones. No me digan que en la época de crisis que vivimos no sería todo un alivio para las pequeñas y medianas empresas soltar el lastre que supone el pago de licencias por el uso de software.

Vamos con más. Es un lugar común que los sistemas Linux no sufren ataques de virus porque, simplemente, no existen virus para Linux. Hay que decir que esto no es cierto (de hecho, por algo hay antivirus para Android). Claro que los hay, unos 300 según mis datos, pero al ser este un sistema aún poco implantado en los PC's a nivel mundial, si lo comparamos con Windows, la incidencia de estos virus es tirando a irrelevante. El carácter abierto del software libre también hace que los problemas que pueda generar un virus se solucionen mucho más rápidamente. A fin de cuentas, lo que un creador de virus informáticos quiere es relevancia, y eso se lo da Windows. En conclusión, las probabilidades de que un sistema Linux se infecte con un virus son tan escasas que apenas se tienen en cuenta.

Podemos mencionar también la sobreabundancia de aplicaciones de todo tipo, mantenidas por una numerosísima comunidad de usuarios a la que recurrir en caso de sufrir algún problema. Una mediana empresa podría funcionar perfectamente con el software de ofimática, de diseño o de contabilidad que se puede adquirir gratuitamente por ser usuario de Linux (aquí tienen un listado de alternativas libres al software más común de Windows). A eso le añadiremos que la estabilidad heredada de UNIX los convierte en sistemas bastante fiables, sin olvidar que la mayoría de distribuciones disponen de un entorno gráfico similar al de Windows para hacerlos igual de accesibles.

Y ahora, los inconvenientes.

Si usted es un usuario avanzado de, digamos, AutoCAD, no podrá encontrar un programa similar en Linux. Hay programas de CAD pero ninguno que llegue tan lejos como AutoCAD, MicroStation o Catia. Lo mismo podemos decir del conocido Photoshop o de software de diseño 3D avanzado como 3D Studio MAX o Solid Works. Repito, hablo de usuarios muy experimentados. Un usuario medio se puede contentar sin problemas con lo que puede encontrar tanto en los repositorios (sitios centralizados donde se almacena todo el software que uno se puede descargar) como en el resto de la red.

[Inciso] No quiero extenderme ahora sobre esto, pero existen modos y maneras para sobrellevar estas carencias. Una sería virtualizar Windows dentro de una distro Linux (ejecutarlo desde, por ejemplo, Ubuntu, como si fuese una aplicación más) usando VirtualBox y la otra utilizar Wine, un emulador de programas Windows, si bien no en todos los casos da resultados satisfactorios [Fin del inciso].

¿Más pegas? Sí. Aún son pocos los fabricantes de hardware que incluyen controladores para Linux en sus productos. Esto es algo que he sufrido en mis carnes ya que me fue imposible configurar mi anterior impresora para Ubuntu, y he tenido que sufrir para configurar el escáner o la tarjeta de TV. No es algo que vaya a ocurrir siempre, aviso. De hecho, quién no ha pasado por tragos similares en Windows, incluso con los drivers oficiales (ah, esos conflictos entre drivers y hardware...). Aunque es cierto que con el paso del tiempo estos problemas se van reduciendo llegando a resultar pasmosa la rapidez con que una máquina con Linux instalado reconoce todo o casi todo lo que tiene enchufado.

La última molestia que destacaría es que, a pesar de que las distribuciones Linux disponen, como ya he dicho, de entorno gráfico de ventanas, el máximo rendimiento se le saca mediante la introducción de órdenes por teclado. ¿Se acuerdan de la pantalla de MS-DOS? Pues a eso me refiero. Pero claro, uno se acostumbra a las ventanitas, los menús, los botones, los colorines... y quién quiere volver a aquel tostón antediluviano. Lo entiendo perfectamente, no se crean. Y más si les digo que hay decenas y decenas y decenas de órdenes y opciones para operar desde la Shell, que es como se llama la ventana de comandos. Es como reaprender informática desde cero. ¿Es imprescindible? Supongo que no, dependiendo de a que se vaya uno a dedicar. ¿Conveniente? Sin duda. A veces para solventar un problema solo se podrá disponer de la Shell, y hay que saber manejarse con ella.

Para terminar, solo añadiría que la apuesta por el software libre tiene mucho de compromiso moral. Si no le va a importar sufrir un poco porque considera que los principios en los que se basa el software libre merecen contar con su apoyo, entonces adelante. Si, por el contrario, lo que quiere es ahorrarse problemas, siga con Windows. Linux no es perfecto, pero es gratis, sin virus, con muchísimas aplicaciones y permanentemente actualizable. Si no quiere pagar por Windows y por cada uno de los programas que pueda necesitar, tendrá que recurrir a la piratería, con todo lo que conlleva el uso de software pirateado. Y ahí lo dejo.

¿Piensas que Linux no es para tí? "Not for you", tema del tercer disco de Pearl Jam.