Thursday, April 17, 2014

Comandos Básicos parte 1



Guía de Comandos GNU/LINUX

Comandos: órdenes que el usuario ejecuta en una consola de texto desde el prompt. Este indica que el intérprete está listo para trabajar. Al tipear una orden, el intérprete de comandos (en nuestro caso bash), lo transforma en una pregunta entendible para el kernel y transforma la respuesta que el núcleo da en "algo-entendible" para nosotros.

Bash, actúa como un intérprete entre el kernel y el usuario.

Los comandos tienen modificadores que brindan más información al usuario de lo que arroja cada comandopor sí sólo.

El usuario necesita de información específica u ordenada de una determinada manera así que por lo general, da mucho uso a cada una de las opciones disponibles.


Comando pwd (Print Working Directory)
Lo primero que tenemos que conocer es donde estamos posicionados en el sistema. El prompt muestra toda la ruta sino el último directorio. Es conveniente saber en qué directorio estamos a partir de "/",
la raíz del sistema operativo.

Tenemos que recordar que inmediatamente después del login nos posicionamos en directorio home.
En el ejemplo que mostraremos a continuación el directorio en el que estamos es /root ya que nos hemos logueado como superusuario (root).

Ejemplo de Comando pwd: Imprimir directorio de trabajo.

equipo1:~# pwd
/root

Ahora que ya sabemos dónde estamos, es posible que deseemos movernos a otro Directorio, entonces debemos usar el comando cd (cambiar de directorio).


Comando cd (Change Directory)
El comando cd nos permite dirigirnos hacia el directorio que nosotros queramos.

En el ejemplo vamos a ir a /tmp:

equipo1:~# cd /tmp
equipo1:/tmp#

Si tipeamos cd volvemos siempre a nuestro home, no importa cuán lejos estemos de él.
Ejemplo:

equipo1:/tmp# cd <enter>
equipo1:~#

Modificadores del comando cd

equipo1:~# cd -

Este modificador hace que el usuario siempre se mueva entre los últimos dos directorios visitados.


Comando ls (list)
Este comando permitirá ver el contenido que presenta un directorio.
Para eso nos muestra la información con colores a fin de que podamos identificar lo que contiene.

equipo1:/var/log/apache2# cd /
equipo1:/# ls

equipo1:/# ls
bin boot cdrom dev etc home initrd.img lib lost+found media
opt proc root sbin selinux srv sys tmp usr var vmlinuz

Aquí nos muestra el contenido del directorio / en color azul porque son directorios.
COLORES
Blanco    Archivos de textos o binarios no ejecutables
Verde     Archivos de textos ejecutables (scripts) o binarios ejecutables
Celeste   Links Simbólicos
Rojo       con letras blancas parpadeantes Links simbólicos rotos
Amarillo  Dispositivos
Violeta    Archivos de imagenes o archivos temporales


Práctica
Realizar un ls de los siguientes directorios, identificando los colores que los objetos poseen.
/var/log/apache2
/etc/init.d
/etc/rc1.d
/dev
/usr/share/apache2/icons

El comando ls presenta muchos modificadores. A continuación veremos algunos de ellos con ejemplos.
En este sistema operativo podemos ver que tanto los archivos como los directorios pueden tener varios puntos pero cuando el punto está adelante los transforma en ocultos. Ejemplo .hola no se verá con un ls
normal, al utilizar el modificador "a" podemos ver todos los archivos ocultos que se encuentran en ese
directorio.

¿Por qué queremos tener archivos ocultos?
Generalmente los archivos ocultos son los que contienen información acerca de configuraciones.
Al no ser visibles fácilmente podemos garantizar que no serán borrados en forma accidental.
Veamos un ejemplo:

Ejecutemos un ls simple y después ejecutemos un ls -a para ver la diferencia.

equipo1:~# ls
apt.txt dbootstrap_settings instalar install-report.template

equipo1:~# ls -a
. .gconf .profile instalar .gconfd .ssh install-report.template .aptitude
.gnome .viminfo .bash_history .gnome2 apt.txt .bashrc .gnome2_private
dbootstrap_settings

Aquí podemos ver la diferencia: la mayoría de los archivos precedidos por un ̈ . ̈ (punto) son archivos de
configuración. Si aparecieran de esta forma podrían ser borrados sin querer. De este modo quedan
resguardados.
Otra opción interesante es el parámetro -l
Al listar con el modificador -l obtenemos la mucha información de los archivos y directorios.


Comando du (disk usage)
El comando du nos dice qué espacio ocupa cada archivo en el disco y también cuál es el total del directorio.
Podemos usar el parámetro h para que nos muestre la unidad de medida que está usando.
Ejemplo:

equipo1:~# du -h /etc/samba
16K /etc/samba/

En este ejemplo obtenemos la información de cuánto ocupa el directorio /etc/samba en el disco.
Veamos otra opción interesante

equipo1:~# du -h /etc/samba/*
4.0K /etc/samba/gdbcommands
8.0K /etc/samba/smb.conf

Al usar el * nos muestra cuál es el peso de cada uno de los archivos que se encuentran en el directorio
pasado como argumento


Comando df (disk free)
Este comando nos permite ver el espacio libre que nos queda por file system (particiones) y cuánto
es el usado. Si a esto le agregamos el parámetro h lo podremos observar con unidades.
Ejemplo:

equipo1:/$ df -h
Filesystem        Size       Used    Avail     Use%      Mounted on
/dev/hda1        5.6G      3.5G    1.9G      66%       /
tmpfs               126M       0       126M      0%       /lib/init/rw


Comando history
Este comando nos permite observar cuáles comandos que hemos usado. Para darnos esta
información el comando history lee lo que dice el archivo oculto .bash_history que se encuentra en los
homes de los usuarios. (Permanece oculto para que los usuarios no lo borren accidentalmente, si eres root este no se borra tan facilmente)

equipo1:~# history
1 vi /boot/grub/grub.conf
2 init 6
mount –t ext2 /dev/hdb2 /temp/aux
4 cd /boot/grub
5 vi grub.conf
6 man grub
7 man grub.conf
8 vi grub.conf
9 init 6
10 cd /tmp
11 ls


digamos que tenemos un comando muy largo que no queremos volver a tipear o que sea algo fastidioso para nosotros (comando de la linea 3), todo lo que tenemos que hacer para volver a ejecutarlo es lo siguiente:
pasando el sigbolo ! y el numero de la linea del comando que ya tipeamos

equipo1:~# !3


Comando mkdir (make directory)
Con este comando creamos nuevos directorios vacios. En este ejemplo veremos cómo hacerlo.

equipo1:~# mkdir nuevodir

Con la opción mkdir -p podemos crear un árbol completo de directorios:
equipo1:~# mkdir -p dir1/dir2/dir3
La línea de comandos anterior nos permite crear el siguiente árbol:
/
|------/dir1
               |-----/dir2
                              |------/dir3


Comando rmdir (Remove directory)
El comando rmdir permite borrar directorios, si los mismos cumplen con la condición de encontrarse vacios.

equipo1:~# rmdir nuevodir

También podemos usar la opción rmdir -p para borrar un árbol de directorios cumpliendo con la condición
también de vacios. Si los directorios contienen archivos, tendremos que utilizar el comando rm que veremos despues.

equipo1:~# rmdir -p dir1/dir2/dir3


Comando cp (copy)
El comando cp se usa para copiar archivos. Veamos su aplicación:
Digamos que creamos un directorio para almacenar nuestros archivos de configuración (guardar respaldos) y vamos a copiar alli el archivo donfiguracion de samba.

equipo1:~/FolderRespaldos# cp /etc/samba/smb.conf .
#pasamos el comando cp (copy) la direccion del archivo que vamos a copiar (/etc/samba/smb.conf) y por ultimo un punto (.) el punto indica que queremos copiar el archivo al directorio donde estamos ubicados asi que "no olvides poner el punto"

si en dado caso queremos cambiarle el nombre a nuestra copia del archivo smb.conf hacemos:

equipo1:~/FolderRespaldos# cp /etc/samba/smb.conf ./smb.conf.bak


Comando mv (move)(cambiar nombres de archivos/directorios)
Este comando se utiliza para renombrar archivos ya que hace una réplica del original pero le cambia el
nombre.

equipo1:~# mv smb.conf.bak httpd.conf


Comando rm (remove)
Cuando queremos borrar archivos tenemos que usar este comando. Debemos tener en cuenta que desde la línea de comandos no tenemos papelera de reciclaje, y tampoco hay un undelete, así que
cuando borramos, nunca más podemos recuperar el archivo original.

equipo1:~/prueba# rm smb.conf
<Nos preguntará:>
rm remove: `smb.conf.bak'? y   

tipeamos Y ó N, si tipeamos Y nunca mas volveremos a ver el archivo.

para borrar directorios completos tenemos que pasar un parámetro de recursividad -r o -f, la diferencia es que -r pregunta si Realmente queremos borrar, mientras que -f es mas agresivo.

equipo1:~/ mkdir /home/miUsuario/MisArchivosBackUp
equipo1:~/ rm -f /home/miUsuario/MisArchivosBackUp

ultima advertencia: si usas este comando como root.... cuidado con lo que haces


por ultimo:

Comando touch
El comando touch se utiliza para la creación de archivos vacíos. Si ya existan bajo el
mismo nombre, los actualiza cambiándoles la fecha de creación en el sistema.
Ejemplos del comando:

equipo1:~# touch uno
equipo1:~# touch dos
equipo1:~# touch tres
equipo1:~# touch cuatro

Terminal, II.

¿Te has fijado en el texto baboso ese que sale al inicio de tu Terminal? Bueno, ese texto es el que indica quién está loggueado coen la Sesión de Terminal (cada vez que abrís un programa, iniciás una "sesión" en él) y tu ubicación en Directorio de Linux (como si estuvieras navegando a través de "Mi PC" en Windows XP, por ejemplo, y la barrita de direcciones al tope, te indica dónde estás al momento). 



La -$ es tu indicador o prompt, y siempre aparece cuando la Terminal está disponible para vos.

Como ves, escribí un comando (este es mi Input o Entrada) que no existe (sí, estaba inventando mierda y pensé que ese comando existía, pero aprendí que no, jeje) y le di Enter. Después de dar Enter, Terminal responde (esto es el Output o Salida) en la segunda línea:
"No hay comando llamado 'Terminal', ¿quisiste decir Comando 'Terminal' del paquete 'terminal.app' (universo)?y me vuelve a dar la Línea de Comando, para que siga escribiendo. 
Vamos, que me sacó el dedo la muy desubicada. Luego trato un tal comando "about" (otra vez estaba inventando), y mi Output es el siguiente:

"Comando no encontrado"
[porque no existe] y me da la línea de comando, para seguir intentando.
 ~$ uname -a [y apreto enter] 
[y como este comando sí existe, me da el Output esperado para ese comando: la info de mi Usuario, y la Imagen de mi Sistema Operativo -que de hecho es Luna, pero luna es un derivativo de Ubuntu, la hora y fecha: ]
Linux belial-desktop 3.2.0-51-generic #77-Ubuntu SMP Wed Jul 24 20:18:19 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
[y luego de haber completado mi orden y haber dado el Output, me da la línea de Comando para seguir escribiendo: ]
belial@belial-desktop:~$
Recordá: un comando es una instrucción que le das a tu Terminal, hecha en palabras/frases específicas que ella entiende. Si no le das una instrucción reconocible por ella, te va a sacar el dedo (en forma figurada), como lo hizo en los primeros dos ejemplos y te va a dar la línea de comando o prompt para seguir escribiendo hasta el fin de los tiempos. ¿Su uso es más fácil de lo que parece, cierto? Sólo tenés que entender esto por ahora, y aprender los primeros comandos básicos que Jimmhy te va a enseñar pronto.

Y esa es toda la aterradora Terminal y su gran magia negra :) 
Comentarios, sugerencias, quejas, puteadas, feedback constructivo o destructivo, ¡adelante!

Carpe Diem.


Si querés saber más caca teórica acerca de la Terminal, mirá el carburo que la Wiki comparte:
"Un emulador de terminal es un programa informático que simula el funcionamiento de un terminal de computadora en cualquier dispositivo de visualización. 
Los emuladores de terminal incorporan características tales como control de procesos, redirección de entrada/salida, listado y lectura de ficheros, protección, comunicaciones y un lenguaje de órdenes para escribir secuencias de instrucciones por lotes o (scripts o guiones). Uno de los lenguajes o intérpretes más conocidos, es el Bourne Shell, el cual fue el intérprete usado en las primeras versiones de Unix y se convirtió en un estándar de facto. 
Al ingresar las órdenes en el emulador, un intérprete de comandos analiza la secuencia de caracteres ingresada y, si la sintaxis de la orden es correcta, la ejecuta, recurriendo para ello a las funciones que ofrece el sistema operativo o el programa que representa, bien sea un gestor de banco de datos, una sesión de FTP, etc. La respuesta al usuario se representa en el monitor, Es una forma de trabajo interactiva, es decir, usuario y máquina se comunican en forma sucesiva."



[Emulador de] Terminal

La Terminal, o el Emulador de Terminal, es básicamente lo que vas a ver en las imágenes que te comparto abajo. 

Es un programa, una interfaz, donde metés comandos (input) para lograr algo en específico (como crear un folder/carpeta, actualizar tu sistema operativo, borrar archivos, etc.). Por eso es importante, porque te va a facilitar muchas cosas en GNU/Linux; la Terminal, es como tu secretaria personal, si lo querés ver así.

Toda Distro (bueno, todo Sistema Operativo, de hecho) tiene su Terminal. ¿Por qué? Porque originalmente, al inicio de la era informática digital, todo se manejaba por medio de comandos escritos, y la Terminal era lo que se usaba (la Terminal es una CLI o Command Line Interface... opera a tu compu por medio de comandos, que son palabras que significan algo en el "lenguaje de compu"). Ahora se incluye en cada SO, porque a nivel de Administrador, es útil.

Emulador de Terminal en Luna OS 3.2.0-51. En el fondo ves el artículo de la Wiki (abierto en Firefox 28.0)
acerca del pleito eterno entre fanboys, por el nombre de GNU/Linux o Linux; meh...
Es como una secre o asistente, precisamente porque te va permite hacer muchas cosas con los privilegios administrativos adecuados, tenés que ser cuidadoso a la hora de usarle, no sea que te cagués en tu Sistema Operativo.

¿Cómo accedés a tu Terminal? Bueno, andá al menú de aplicaciones (Launcher, Activities, Menu, o como se llame según tu Distro), y tipeá "Terminal", lo más probable es que encontrés un icono parecido a este:

Así se mira el Application Menu en Luna OS
(Windows/Super + Barra Espaciadora)
Y en el dock de  aplicaciones activas, vas a encontrar algo como esto:

Esta mierda que ves acá, se llama Plank (el dock o barra de tareas en Luna OS y fue bautizado así en honor al científico alemán, ¿supongo?) y el icono que estamos señalando con el cursor, es el de la Terminal.


¿Te has fijado en el texto baboso ese que sale al inicio de tu Terminal? Bueno, ese texto es el que indica quién está loggueado coen la Sesión de Terminal (cada vez que abrís un programa, iniciás una "sesión" en él) y tu ubicación en Directorio de Linux (como si estuvieras navegando a través de "Mi PC" en Windows XP, por ejemplo, y la barrita de direcciones al tope, te indica dónde estás al momento). 



La -$ es tu indicador o prompt, y siempre aparece cuando la Terminal está disponible para vos.

Como ves, escribí un comando (este es mi Input o Entrada) que no existe (sí, estaba inventando mierda y pensé que ese comando existía, pero aprendí que no, jeje) y le di Enter. Después de dar Enter, Terminal responde (esto es el Output o Salida) en la segunda línea:


"No hay comando llamado 'Terminal', ¿quisiste decir Comando 'Terminal' del paquete 'terminal.app' (universo)?y me vuelve a dar la Línea de Comando, para que siga escribiendo. 



Vamos, que me sacó el dedo la muy desubicada. Luego trato un tal comando "about" (otra vez estaba inventando), y mi Output es el siguiente:



"Comando no encontrado [porque no existe, ¡Vago pendejo!]" y me da otra línea, para seguir intentando. Como sí conozco un par de comandos, escribí uno:



~$ uname -a [y apreto enter]

[y como este comando sí existe, me da el Output esperado para ese comando: la info de mi Usuario, y la Imagen de mi Sistema Operativo -que de hecho es Luna, pero luna es un derivativo de Ubuntu, la hora y fecha: ]
Linux belial-desktop 3.2.0-51-generic #77-Ubuntu SMP Wed Jul 24 20:18:19 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

[y luego de haber completado mi orden y haber dado el Output, me da la línea de Comando para seguir escribiendo: ]
belial@belial-desktop:~$



Recordá: un comando es una instrucción que le das a tu Terminal, hecha en palabras/frases específicas que ella entiende. Si no le das una instrucción reconocible por ella, te va a sacar el dedo (en forma figurada), como lo hizo en los primeros dos ejemplos y te va a dar la línea de comando o prompt para seguir escribiendo hasta el fin de los tiempos. ¿Su uso es más fácil de lo que parece, cierto? Sólo tenés que entender esto por ahora, y aprender los primeros comandos básicos que Jimmhy te va a enseñar pronto.



Y esa es toda la aterradora Terminal y su gran magia negra :) 

Comentarios, sugerencias, quejas, puteadas, feedback constructivo o destructivo, ¡adelante!


Carpe Diem.


Si querés saber más caca teórica acerca de la Terminal, mirá el carburo que la Wiki comparte:
"Un emulador de terminal es un programa informático que simula el funcionamiento de un terminal de computadora en cualquier dispositivo de visualización. 
Los emuladores de terminal incorporan características tales como control de procesos, redirección de entrada/salida, listado y lectura de ficheros, protección, comunicaciones y un lenguaje de órdenes para escribir secuencias de instrucciones por lotes o (scripts o guiones). Uno de los lenguajes o intérpretes más conocidos, es el Bourne Shell, el cual fue el intérprete usado en las primeras versiones de Unix y se convirtió en un estándar de facto. 
Al ingresar las órdenes en el emulador, un intérprete de comandos analiza la secuencia de caracteres ingresada y, si la sintaxis de la orden es correcta, la ejecuta, recurriendo para ello a las funciones que ofrece el sistema operativo o el programa que representa, bien sea un gestor de banco de datos, una sesión de FTP, etc. La respuesta al usuario se representa en el monitor, Es una forma de trabajo interactiva, es decir, usuario y máquina se comunican en forma sucesiva."



Wednesday, April 16, 2014

Genésis.

"Que se haga el conocimiento; y que lo merezca, no quien lo pide, sino quien lo busca".



Aquí comenzamos.
No sabemos lo que no sabemos. Esto es ignorancia.
Cuandos sabemos que no sabemos, esto es conciencia.
Y de la conciencia, surge el reconocimiento de lo necesario.

Pero ser consciente no es suficiente. Intentar no basta.
Entonces viene la búsqueda.

Estás aquí, porque estás buscando; al igual que vos, nosotros también. Y este es el diario de nuestra búsqueda.

—Un Vago.

Entradas populares.