Usa Ubuntu dentro de Windows con andLinux

Muchos usuarios están decidiéndose a probar GNU/Linux en la actualidad. Las principales razones para tal suceso es la gran cantidad de información que existe hoy en día sobre sistema Unix, así como también la enorme facilidad que han conseguido estos sistemas gracias a sus renovados entornos gráficos.

Hay quienes se lanzan por una instalación limpia de GNU/Linux sobre un computador, hay otros que prefieren mantener su sistema operativo predilecto (en muchos casos Windows) e instalar un sistema Unix como una opción de booteo y para algunos otros la mejor opción es “emular” un entorno Linux dentro de un sistema Windows.

Para estos últimos usuarios existen aplicaciones como andLinux que es básicamente un completo sistema Ubuntu que puede correr dentro de sistemas operativos basados en Windows 2000, más específicamente 2000, XP, 2003 y Vista (solo 32-bits).

La diferencia básica de este programa entre otras opciones es que al instalar andLinux no se esta emulando a Ubuntu ya que este sistema esta basado en CoLinux que es un puente potentísimo del kernel de Linux hacia Windows.

Esto quiere decir que al usar andLinux no se esta emulando a Ubuntu, al contrario, se esta uniendo su kernel a una plataforma Windows. Esto indudablemente hace que tanto la velocidad como la compatibilidad de andLinux sean casi perfectas.

Realmente es una muy buena opción para quienes desean comenzar a usar sistemas Linux y que mejor que sea Ubuntu ya que tiene la fama de ser la distro más fácil de usar dentro del mundo del pingüino. Obviamente no es aconsejable para usuarios expertos a quienes se aconseja una instalación limpia de GNU/Linux.Descargar andLinuxFuenteEtiquetas: andLinux, CoLinux, Kernel, Linux, ubuntu, Windows–>Linux, Sistema, Utilidades & Hacks, Windows

Service y chkconfig, comandos que nos sirven para activar y desactivar servicios

Todas las distros de Linux vienen con una configuración listas para funcionar o outofthebox. Prácticamente, no hemos de modificar los servicios que se arrancan por defecto, al igual que pasa en otros sistemas operativos.

Pero alguna vez hemos de desactivarlos, o porque no los necesitamos, o porque nos ocupan memoria innecesaria, por ejemplo, iniciar el bluetooth cuando no tenemos en la computadora.

Para poder modificar dichos servicios e indicarles que no arranquen en diferentes tipos de incio, tenemos los comandos service y chkconfig.

SERVICE

Este comando permite detener e iniciar servicios en Linux, es una manera diferente de poder modificar el archivo init.d, sin tener que entrar directamente en él.

Las órdenes para detener o iniciar son stop y start. Para saber en que estado se encuentra un servicio, escribimos status. Por ejemplo, para saber el estado del servicio apache, escribimos: service apache status, y nos dará como resultado: checking for service apache: stopped.

Si quisiéramos iniciar dicho servicio, escribimos: service apache start. Si quisiéramos detener dicho servicio, escribimos: service apache stop.

CHKCONFIG

Al igual que el comando Service, disponemos de otro comando para indicar al sistema si el servicio que queremos iniciar al principio, se abra o no según el tipo de inicio que tengamos asignado en el demonio de inicio. Es decir, si queremos que apache se inicie en init 5, escibiremos: chkconfig –level 5 apache on.
Para saber como tenemos asignados los servicios en el inicio que tenemos actualmente, podemos imprimir por pantalla una lista, escribiendo: chkconfig –list.

Como siempre, para poder saber la ayuda de los comandos y sus diferentes formas, podemos hacer uso del comando man: man chkconfig, y nos dará el listado de ayuda del comando.

Espero haberos aclarado un poco más el uso de estos dos comandos, recordando también que existen en muchas distros, formas para poder modificar servicios a través de escritorio, sin tener que utilizar la linea de comandos, pero ya se sabe, así nos quitamos el mono del comando.

¿Qué son los Procesos en Linux?

Un “Proceso” en Linux es un programa que se esta ejecutando en un determinado momento en el sistema. En el Sistema Operativo Linux siempre hay una serie de procesos que se esta ejecutando sin que el usuario se de cuenta de ello y éstos hacen que el Sistema sea utilizable.

El primer proceso en ejecutase es el Proceso init. El Proceso init es el responsable de la inicialización de nuevos procesos; o dicho de otra forma, todos los procesos en el sistema, excepto el proceso swapper, descienden del proceso init.El proceso init es un proceso dispatcher (despachador) y produce, entre otros, los procesos para que los usuarios puedan conectarse al sistema. Normalmente ejecuta la secuencia de órdenes del script /etc/rc.boot para comprobar los sistemas de archivos y posteriormente ejecuta las órdenes del etc/rc y /etc/rc.local para comenzar las operaciones de multiusuario; en otro caso, se comenzaría en modo monousuario.

En operaciones de multiusuario, el papel de init es crear un proceso por cada puerto del terminal en el cuál un usuario pueda conectarse. Para iniciar estas operaciones, lee el archivo /etc/ttytab y ejecuta, normalmente, la orden /usr/etc/getty por cada terminal especificado en el archivo que tenga el campo de status a on. getty abre e inicializa la línea del terminal y ejecuta la orden login para permitir la conexión de usuarios.

En Linux, los Procesos se manejan en forma jerárquica: cada proceso es lanzado desde un proceso “padre”: dicho proceso se le llama proceso “hijo”. Entonces podremos deducir que todos los procesos son hijos del proceso padre por excelencia: el proceso init.

Hay dos tipos de procesos: los de usuario y los demonios.

Los Procesos de Usuario: son aquello procesos que el usuario utiliza.

Los Demonios: son aquellos procesos que para su funcionamiento, no requiere de la intervención del usuario y en general se usan para programas que funcionan constantemente como servidores de red, programas administrativos, etc.

En la jerga del mundo de Linux, se habla que los procesos están vivos o están muertos, son lanzados o pueden ser matados.

Con el comando “ps” lista los procesos activos. Cuando se ejecuta sin especificar ninguna opción muestra un listado de aplicaciones corriendo en la shell actual.
Para listar todos los procesos que se están ejecutando como usuario hay que especificar la opción:ps ax

PID: es el número de identificación del proceso, es generado aleatoriamente y nos sirve para cuando queremos matar un proceso. Por ejemplo cuando se cuelga algún programa.

TTY: indica la terminal en el cual esta funcionando el proceso.

STAT: muestra el estado del proceso, con algún de los siguientes estados:
* S: sleeping (durmiendo), es decir, el programa no tiene nada que hacer en este momento.
* R: running (o ejecutando).
* D: El proceso está muerto y no puede ser rearrancado.
* Z: Zombie: el proceso se ha comple pero no ha pasado correcta mente su estado de devolución.

TIME: nos indica la cantidad de tiempo que el proceso ha consumido para ser lanzado.

COMMAND: nos dice que comando fue utilizado para ejecutar dicho proceso.
Cuando un programa se nos cuelta ( a mi me pasa con el FireFox :S), podemos matarlo y para ello necesitamos dos cosas: utilizar el comando “kill” y el número PID correspondiente al proceso del programa en cuestión.

kill 4200: Este comando enviará una señal 15, que es la terminación por sofware y el programa se cerrará automáticamente. Pero a veces esto es ignorado por algunos procesos y no se cerrarán, nos queda enviándole una señal 9, que es la señal de eliminación ” a toda costa”. Para ello se usa el comando kill de la siguiente forma:
kill -9 (PID)
kill -9 4200

Muchas veces me ha pasado que estando jugando con un juego a pantalla completa y este se colgo. ¿Qué hago?. La respuesta es simple: pulsamos lo siguiente Control + Alt + F7.

Más sobre seguridad y Linux

Con Windows me costó bastante (en conocimientos a lo largo de años y procesos más o menos torpes) conseguir una seguridad digamos que aceptable sin uso de aplicaciones externas al SO. Con Linux basta con instalarlo.

Como cuando sustituí mis soluciones de software comercial para seguridad, antivirus y firewall, y procedí a la configuración del firewall hardware que suele incorporar un router, hoy he vuelto ha hacer los mismos escaneos en servicvios web que arrojan unos resultados mejores si cabe, teniendo en cuenta que la idea principal del firewall que incorpora un router es precisamente la ventaja de ser independiente del Sistema Operativo que uses y por lo tanto de las des/instalaciones, cambios, etc que hagas en él (el S.O.).

En Symantec (partiendo de que ya usan un lenguaje web propietario como ASP=Micro$oft) ni siquiera pueden chequear mi sistema ya que no hay soporte para Linux… emmm, a parte de algo de gracia siento satisfacción, por un lado, me hace, como decía, gracia que una empresa de la talla de Symantec en materia de seguridad solo base sus análisis en sistemas Windows o Mac lo cual puede decir muchas cosas al respecto que podríamos definir como “intereses comerciales” (obvio), bulos, engañabobos… y conjeturas de otro calado.

Quiero decir que, Symantec puede o no ser una empresa de mucho prestigio en el sector de la seguridad, pero que no sepan o no quieran hacer un chequeo básico de seguridad de puertos, por ejemplo, independiente del sistema que uses para mí personalmente deja mucho que desear como “expertos en seguridad”. Si alguien quiere etiquetarlos como “expertos en seguridad Windows” lo aceptaré encantado y ojo: no les resto mérito en dicha tarea …pero es lo que es.

Personalmente me demostrarían más si, al margen de sus alarmas y estudios sobre virus de los cuales ahora dudo mucho, trabajaran sobre seguridad en general indistintamente de la plataforma ya que muchos aspectos de seguridad son ajenos a los Sistemas Operativos, para mi corto entendimiento darían una impresión de más profesionalidad. Y por otro lado, me siento satisfecho porque, aunque no todos, la mayoría de ataques de seguridad se basan en el Sistema Operativo más extendido del mundo: Windows y el analisis de, por ejemplo, Symantec no viene más que a afirmar esa idea aunque imagino que también por razones comerciales obvias. En cambio, upseros hace un analisis de puertos normal, si bien los análisis de puertos comúnmente (no te lo pierdas), y aunque no nos extrañe, chequean en su mayor parte puertos que alguna versión de Windows establecía imprudentemente como abiertos sin ser del todo necesarios.

Es decir… el análisis de puertos imagino que debería ser independiente del S.O. sean o no puertos abiertos habitualmente por un sistema determinado, hay otros que son independientes. En definitiva, que al contrario de preocuparme (se me ocurre que alguien instalara Windows o Internet Explorer porque Symantec no puede chequear su equipo sino usa ese software… que los puede haber eh? ) me alegra ver que ni siquiera hay soporte para chequeo online para Linux. O son muy inteligentes y entienden que no es necesario o no les interesa. Teniendo en cuenta que UNIX sería el S.O. para un entorno de red por defecto es lógico que también gestione mejor estos puertos, lo que no entiendo es por qué Windows nunca intentó basarse en él después de unos 30 años o al menos tan parcialmente. Esto lo digo desde el desconocimiento de Windows NT, aunque XP se base en él, o de Windows Server.

La forma más fácil de instalar programas en Ubuntu Linux

Seguro que ya sabes como agregar o quitar programas en Ubuntu, y si eres un nuevo usuario de Linux , te resultará fácil utilizar la aplicación que viene en Ubuntu, desde el menú Aplicaciones-Añadir y Quitar. Ésta es la manera más sencilla pero también la más limitada.Antes de continuar deberías activar los repositorios que contienen software restringido a primera instancia por Ubuntu.

Lee este post para hacerlo.

Buscamos el programa que nos interesa desde el recuadro de buscar o manualmente, entonces lo marcamos aceptamos y ¡listos!

No obstante a esto, si queremos utilizar un sistema más avanzado para instalar o quitar programas, y a su vez muy sencillo, entonces utilizaremos Synaptic.

Instalar programas desde el Gestor de paquetes Synaptic

Para cargarlo vamos a Sistema-Administración-Gestor de paquetes Synaptic:

Si hemos activado multiverse y universe veremos una cantidad enorme de programas para instalar, los cuales están ordenados por categorías. También disponemos de la opción buscar para poder encontrar un programa predeterminado. Una vez localizado el programa que queremos instalar, pulsamos el botón derecho del mouse sobre éste y nos aparece una lista, así pues seleccionamos marcar para instalar. Y él solito se encargará de hacer lo necesario.

Una buena opción de Synaptic es que desde el menú Configuración-Preferencias podemos activar la opción “Considerar los paquetes recomendados como si fuesen dependencias”. Ésta nos instalará el paquete que queramos y sus dependencias. Las dependencias son requisitos que necesita otro programa para funcionar correctamente o aplicaciones que añadirán más funcionalidades a nuestro programa.

Otra opción muy interesante para instalar o desinstalar programas es a través de la linea de comandos. Al ser un sistema no gráfico nos puede asustar más a los nuevos, pero para mí es una opción mucho más rápida y especialmente nada complicada.

Para hacerlo simplemente abrimos una terminal desde Aplicaciones-Accesorios-Terminal.

Ahora tenemos dos opciones para escribir: sudo aptitude install “nombre del programa a instalar” sudo apt-get install “nombre del programa a instalar”
No hace falta que sepas que es lo de “sudo” simplemente escribimos la frase tal cual y listos. Aptitude para mí es el más potente. Éste instala las dependencias de nuestro programa y, además las recuerda por si otra vez queremos desinstalar el programa, borrándolas en caso de que no las utilice ningún otro programa.
Si utilizamos apt-get estaremos haciendo lo mismo que desde el gestor de paquetes Synaptic pero por escrito.

Para desinstalar escribimos: sudo aptitude remove “nombre del programa a desinstalar”

Para acabar, sino encontramos algún paquete lo podemos bajar desde Internet. Los paquetes utilizados por Ubuntu son los .deb, y encontrarás muchos, ya que Ubuntu es uno de los Linux más utilizados, así que la mayoría de programas siempre suele ofrecer un paquete en .deb.

Para instalar los archivos .deb también es muy sencillo. Simplemente damos doble click al archivo y nos preguntará “¿abrir con gestor de paquetes .deb?” : aceptamos y al poco ya tenemos nuestro programa instalado.

Instalación avanzada de CakePhp en servidor Linux para producción

A muchos de  los que estamos utilizando este Framework para php, una vez  hemos realizado el desarrollo de nuestra aplicación (normalmente en servidor local), nos inquieta eso de tener en el mismo directorio web, para producción, las carpetas  /cake, /app  y /webroot.

En teoría no debe haber problema ya que los .htaccess redirigen todo perfectamente, pero nos sentimos más “seguros” si tenemos separadas las carpetas propias de la aplicación. Así también evitamos tener que crear restricciones en los archivos robots.txt.

También es bueno tener separadas las cosas a la hora de hacer cambios en nuestra aplicación, más por cuestión de orden que otra cosa.

Bueno, menos cháchara y más acción:

La forma de instalar nuestra aplicación para producción con carpetas o directorios separados variará dependiendo de si tenemos acceso total  al servidor o si solo tenemos acceso a nuestro dominio.

En  el primer caso (acceso total al servidor):

En este ejemplo vamos a utilizar servidor Linux Debian + Plesk 10.

Como ya sabemos tenemos tres partes en la aplicación (no es el caso de explicar cada directorio, se supone que ya sabes esto).

Vamos a poner la carpeta cake en  /usr/share/php, quedando así: /usr/share/php/cake
Dale permisos usuario= root  y grupo= psaserv

Ponemos el contenido de app en /home/miusuario/, quedando de esta forma  /home/loquesea/app  (recuerda que puedes cambiar el nombre de esta carpeta sin problemas, por ejemplo “webprueba”, quedando así: /home/loquesea/webprueba)

Dale permisos usuario= root  y grupo= psaserv (no te olvides de los permisos de escritura de la carpeta tmp)

Ahora solo nos queda poner el contenido de webroot en el directorio web de nuestro dominio, dentro de/ httpdocs.

Todo esto nos ha quedado de esta forma:
– Directorio cake:   /usr/share/php/cake
Directorio app: /home/miusuario/webprueba
Directorio webroot: /httpdocs

Ya tenemos todo separadito, pero ahora hay que hacer que la aplicación sepa donde esta cada cosa por que como imaginarás sino no funcionará.
Pues aquí viene lo más divertido, ve a httpdocs y edita el archivo index.php, allí cambiaremos algunas cosas: (esto puede variar según la versión que uses, pero verás que en cualquier caso hay que definir los “nombres” y las “rutas” de cada parte de la aplicación).

/**
* The full path to the directory which holds “app”, WITHOUT a trailing DS.
*
*/
if (!defined(”ROOT”)) {
define(”ROOT”,  DS . ”home” . DS . ” miusuario ”); // indicamos donde esta la carpeta app
}
/**
* The actual directory name for the “app”.
*
*/
if (!defined(”APP_DIR”)) {
define(”APP_DIR”, ” webprueba ”); // indicamos como se llama la carpeta app.
}
/**
* The absolute path to the “cake” directory, WITHOUT a trailing DS.
*
*/
if (!defined(”CAKE_CORE_INCLUDE_PATH”)) {
define(”CAKE_CORE_INCLUDE_PATH”,  DS . ”usr” . DS . ”share” . DS . ”php”); // indicamos donde esta el directorio cake.
}

/**

Con esto nuestra aplicación debería ya funcionar, pero aún nos falta un pequeño toque:

Nos vamos al directorio de nuestro dominio: /var/www/vhosts/dominio.com, concretamiente al directorio conf: /var/www/vhosts/dominio.com/conf, creamos un archivo (si no existe ya) llamado vhost.conf y escribimos en el lo siguiente:

<Directory /var/www/vhosts/dominio.com/httpdocs>
php_admin_flag safe_mode off
php_admin_value open_basedir none
php_admin_value include_path “.:/home/ miusuario/webprueba “
</directory>

Lo importante es la última línea, las otras las omites si no las necesitas (pero te aseguro que no vienen mal).

Guardamos y reiniciamos el servicio /usr/local/psa/admin/sbin/websrvmng -u –vhost-name=dominio.com

Y  reiniciamos apache   apachectl restart

De esta forma debe de funcionar todo, sin problemas. En su caso mira los logs de Apache y/o los errores dentro de la carpeta /statistics/logs/error_log    de tu dominio.

– En el caso de no tener acceso al servidor, la solución que se me ocurre es la siguiente (para el caso de plesk) poner las carpetas o directorios de cake y app  dentro del directorio private que hay en tu dominio y al que tienes acceso mediante ftp.

Luego editas el archivo index.php e indicas las rutas de cake y de app (normalmente /var/www/vhosts/dominio.com/private/app y /var/www/vhosts/dominio.com/private/cake)

No te olvides que has de poner  . DS .  en vez de la “barrita /”.

Podrás crear igualmente el archivo vhost.conf y poner php_admin_value include_path “.:/var/www/vhosts/dominio.com/private/app ”
Esto supondrá que debes pedir a tu proveedor o al administrador del servidor que reinicie tu servicio y apache para que los cambios funcionen.

Notas adicionales:

Separar los directorios de cakephp nos servirá entre otras cosas para poder actualizar el core de nuestro cake de una forma más segura.

Lo bueno de esta práctica es que podemos tener varias carpetas de cake, con las distintas versiones y/o actualizaciones.

En nuestro caso, en turianet, tenemos desde la versión 1.1, la 1.2 y la 1.3. si actualizamos una versión, no sobrescribimos la otra, sino que cambiamos la ruta en el archivo index.php, si no funciona bien la actualización solo hay que volver a cambiar la ruta para resolver el problema sin que deje de funcionar nuestra aplicación.

Además es bueno que nuestros clientes sepan la ruta de cake para solo tener que poner en su archivo index.php esa ruta sin tener que preocuparse de nada más.

Espero que os haya servido de algo este minitutorial.

Sientete libre de compartir estas notas, comentarlas y de avisarnos de los errores que puedas ver en ellas.

Convertir formatos de audio en Linux con Gnormalize

Gnormalize es una excelente utilidad para convertir entre formatos de audio, ya que proporciona:

– un conversor de audio
– un front end para normalizar, codificar/decodificar, ripear.
– editor de tags y audio player.

Formatos de entrada:

MP3, MP4 (M4A or AAC), MPC, OGG, APE (Monkey’s Audio), FLAC, Audio CD y WAV.

Formatos de salida:

Soporta archivos en el formato: MP3, MP4, MPC, OGG, APE, FLAC y WAV.

Para instalarlo primero descargamos el archivo .tar.gz desde el directorio de descargas, lo descomprimimos a algun directorio de nuestro disco duro y como usuario root ejecutamos:

$ ./install

Si no hay ningun problema, podremos ejecutarlo con:

$ gnormalize &

Comandos de linux para manipular ficheros ls cd pwd

La primera vez que nos enfrentamos con una consola de linux nos encontramos un poco abrumados por la cantidad de comandos y opciones que existen. Lo primero que tenemos que comprender es la estructura de una orden. Una orden se compone principalmente de tres partes:

Comando: Es el nombre del comando que queremos ejecutar (ejemplo: cd, ls, pwd, rm, rmdir,…)

Opciones: Son un conjunto de opciones que modifican el comportamiento del comando, pudiendo ampliarlo. Normalmente son descritos con un guión y una letra: “-l” pudiendo ponerse varias opciones de los siguientes modos: “-laS” o “-l -a -S“. A veces, también se utilizan palabras completas con dobles guiones del siguiente modo: “–create-home-dir“.

Argumentos: Son parámetros/variables necesarias puesto que es la información sobre la que se va a ejecutar el comando o es necesaria dicha información para poder ejecutarse el comando.

El nombre del comando es obligatorio para todo comando de linux, mientras que la lista de opciones y argumentos es opcional. No obstante, algunos comandos requieren de una serie de argumentos de modo obligatorio.

Estructura de un comando de linux

A continuación vamos a describir tres de los comandos iniciales y básicos que un usuario novel necesita para manipular ficheros utilizando una consola.

El primer comando que abordamos es pwd (Present Workspace Directory) el cual nos indica en qué directorio de trabajo se encuentra localizado el usuario. Normalmente cuando se abre un terminal, el usuario se localiza en su directorio de trabajo home (/home/nombreUsuario) pero en el momento que comenzamos a desplazarnos entre la estructura jerárquica y varias terminales puede suceder que no recordemos en qué directorio de trabajo nos encontramos. Ahí es donde surge la utilidad del comando pwd puesto que sin la necesidad de ningún argumento u opción nos indicará en qué directorio de trabajo nos encontramos.

Uso del comando pwd

En el primer momento que se ejecuta la orden pwd, se muestra que el directorio actual de trabajo es el home del usuario “/home/InviernoCalido” posteriormente se cambia el directorio de trabajo a /sbin/ haciendo uso del comando cd (comando que se describe a continuación). Posteriormente se vuelve a ejecutar la orden pwd y se puede ver como el directorio de trabajo actual es /sbin.

El comando cd (change directory) recibe como argumento el directorio al cual se desea cambiar como directorio de trabajo. La estructura de este comando sería la siguiente:cd [ruta de directorio a cambiar]

Ejemplos de uso del comando cd

En primer lugar el comando cd puede recibir como argumento tanto las rutas relativas como las rutas absolutas del directorio al cual se quiere cambiar. Las rutas absolutas son aquellas que describen completamente el nuevo directorio desde el primer nivel “/” recorriendo por completo el árbol del directorio al cual se quiere desplazar. En el primer caso, se muestra el cambio al directorio /home/InviernoCalido utilizando la ruta absoluta.

Por otro lado, si observa el último ejemplo “cd ../../../sbin” se está utilizando una ruta relativa para indicar cual es el nuevo directorio de trabajo. Las rutas relativas se construyen a partir del directorio de trabajo en el cual se encuentra el usuario. Utilizando dos meta-directorios especiales como son el “.” y “..“. En los cuales el directorio “.” indica el directorio actual en el cual se encuentra el usuario. Es decir, “cd .” nos desplazaría o cambiaría al directorio actual (no habría cambio) mientras que el comando “cd ./.mozilla” cambiaría el directorio de trabajo a al directorio .mozilla que se encuentra en el directorio actual de trabajo, el cual es /home/InviernoCalido” así que sería equivalente que escribir “/home/InviernoCalido/.mozilla“.

Es importante diferenciar entre rutas relativas y absolutas puesto que las rutas relativas nos permiten abstraernos de la estructura de directorios y poder mover nuestras aplicaciones/scripts de diferentes espacios de trabajo sin problemas de rutas.

Si continuamos con los ejemplos que se muestran se puede ver que se ha escrito el comando cd sin ningún argumento. Esto es posible porque el argumento por defecto es el directorio home del usuario que ejecuta el comando sin argumentos. Es decir, si el usuario “InviernoCalido” ejecuta el comando “cd” sin ningún argumento el directorio de trabajo se cambiará al directorio home de dicho usuario que normalmente es “/home/InviernoCalido“.

De igual modo, si el usuario que se encuentra conectado al sistema es luis al ejecutar el comando sin argumento cambiará el directorio a “/home/luis“.
Finalmente, también se ha utilizado un símbolo que se consigue escribir pulsando “Alt Gr + 4” y corresponde a ~. Este símbolo es un alias del directorio home del usuario que se encuentra conectado. Si es el usuario InviernoCalido, el símbolo “~” equivale a escribir “/home/InviernoCalido” así que si queremos cambiar el directorio de trabajo por “/home/InviernoCalido/Escritorio” se puede escribir de dos formas:

cd ~/Escritorio

cd /home/InviernoCalido/Escritorio

El comando ls (list directory contents) permite visualizar el contenido de los directorios. Este comando tiene la siguiente sintaxis de funcionamiento:ls [Opciones] [Ficheros]

Este comando permite ser ejecutado sin ninguna opción ni parámetro. En dicho caso, el argumento por defecto será el directorio de trabajo actual. Este comando permite conocer el contenido de los directorios. Además, permite conocer los permisos, propietarios y grupos a los que corresponde cada uno de los ficheros.

Comando ls sin opciones ni argumentos

En el caso de que se quiera conocer el contenido de un directorio en concreto se puede escribir como argumento dicho directorio.

Comando ls con un parámetro de ruta relativa

En el momento que queramos ir agregando diferentes opciones existen multitud, quizás las más utilizadas son las opciones -l y -a. No obstante, es importante conocer el funcionamiento del comando man el cual nos va a permitir conocer todas las opciones que existen en cada uno de los comandos. Puesto que sería imposible poder recordar todas las opciones de todos los comandos. Puedo adelantar que pocos administradores (y sería inútil) se han estudiado de memoria el comportamiento de los diferentes comandos. Diferente es, que al cabo de utilizar determinados comandos muchos veces acabas aprendiéndolos.

Las opción -l permite visualizar los ficheros en un formato extendido, y la opción -a permite visualizar todos los ficheros (incluyendo a los ficheros ocultos). En Linux, los ficheros que comienza por punto “.” son ficheros ocultos. De tal modo que un fichero denominado “.oculto” no será mostrado a menos que se especifique poder visualizar los ficheros ocultos.

 

Clientes MSN en Linux

Cada vez que le muestro linux a algún amigo o persona me preguntan “Y EL MESENGER?” y ahí salgo yo con mi pila de clientes, hasta el momento el más popular en mi círculo de amigos es emesene. Veremos algunos de los más populares en este post :

Bien, comenzamos con Pidgin:

Pidgin (Antes conocido como GAIM) se incluye en varias distros por defecto, por ejemplo en Ubuntu. Incluye algunas características interesantes :

  1. Multi-Plataforma (Funciona en Windows y UNIX/Linux)
  2. Multi-Protocolo (Incluye soporte para MSN, ICQ, AIM, Jabber, IRC, etc)

Tiene un sistema de plugins bastante bueno, una cantidad de plugins considerables (Entre ellos podemos encontrar el plugin de libnotify, emulación de mensajes offline y otros no tan útiles como lanzar un dado). Pero no todo es bueno, hay ciertas cosas que se extrañan en Pidgin, como el soporte de webcam o nicks coloreados (Si, es bien inútil, pero varias personas no pueden vivir si no colorean su nick). También se extraña un sistema de login mas simple (A veces tienes que prestar el pc, y no hay un login “pasajero”, tienes que agregar una nueva cuenta de todos modos)

Ahora veremos a emesene:

Emesene es un cliente escrito en Python y las bindings de gtk para Python. Entre sus características encontramos :

  1. Múltiples Plugins.
  2. Una interfaz muy limpia y simple de usar.
  3. Soporte de Nicks coloreados.
  4. Transferencia de ficheros.
  5. Envio y recepción de emoticonos personalizados (O sea enviales :zippy a todos tus amigos)

Sin duda este cliente sorprende, es simple, incluye características amigables (Incluye el login pasajero que tanto agrada a los invitados), nicks coloreados, además dice tener las características básicas de Windows Live Messenger (Por suerte la publicidad no es una característica básica)

Al estar escrito en python es muy portable (Esta disponible para Windows, Mac OS y otros UNIX/Linux).

La única queja es que no incluye soporte de webcam.

Otro de los populares es Kopete :

Kopete es el cliente de mensajería instantánea de KDE, algunas características que posee son:

  1. Recepción de emoticonos personalizados (Desgraciadamente aún no esta soportado el envio de estos).
  2. Soporte de Webcam!
  3. Múltiples protocolos, como MSN, AIM, Gadu Gadu, IRC, ICQ, etc).
  4. Soporte de estilos para la ventana de conversación de ADIUM (El mensajero instantáneo de Mac OS X).
  5. Transferencia de Ficheros (No funciona muy bien que digamos)

Las quejas contra kopete son varias, no poder enviar emoticonos personalizados, sin login pasajero, y la última pero no menos importante (Y quizas este siendo algo duro con esto, pero incluso escuche decir a un desarrollador esto) el desarrollo se enfoca más en cosas como soporte de themes para ADIUM que bugfixes o nuevas ideas.

 

En el tintero mental solo me queda aMSN :

aMSN es un cliente escrito en TCL/TK, multiplataforma (Para Windows, Linux y el resto de los UNIXes), algunas de sus características son:

  1. Envio/Recepción de emoticonos personalizados.
  2. Transferencia de Ficheros.
  3. Soporte de Webcam.
  4. Multi-Plataforma.
  5. Soporta clips de audio, y conversaciones de voz.

Si bien tiene características interesantes (Y más complementarias al protocolo MSN) estar escrito en TCL/TK no me parece, se siente la lentitud, que TK dibuja lento, que es feo, etc. Si puedes soportar estas cosas te recomendaría aMSN.

En general mi favorito era emesene, pero luego lo tire porque no tenia soporte de transferencia de ficheros, ahora que ya la tiene es la mejor opción (para mi).

Aprendiendo Script Shell en BashLinux

Tanto en Unix como en Linux, se utilizan shell scripts para realizar una infinidad de tareas. Definimos un shell script como un programa que se escribe con una sintaxis particular, en un archivo de texto plano, para que sea interpretado por un shell, en este caso /bin/bash.

Básicamente un shell script es un programa que llama a otros programas, con la posibilidad de hacer algun tipo de procesamiento propio (como control de flujo, operaciones matemáticas simples, etc).

En linux, para hacer un shell script se usa el shell bash, y es por ello que hay una serie de caracteres y palabras que tienen un significado especial:

#!/bin/bash

Esta línea le indica al sistema que el script será interpretado por el programa que se encuentra a continuación de #!, en este caso, /bin/bash

También nos sirve para decirle al sistema operativo que se trata de un fichero ejecutable y que sepa cual es el intérprete que lo tiene que interpretar. Comandos básicos antes de empezar con el script shell en Bash:

Conocer la versión de bash, usando el siguiente comando:

$ echo $SHELL

/bin/bash

Como podemos ver, nos está indicando que shell usamos y en que directorio está instalado.

Para conocer la versión de Bash usamos el comando:

$ echo $BASH_VERSION

Dónde está instalado Bash, usamos este comando:

$ whereis bash

/bin/bash

Si deseas saber los shell que hay en tu sistema Linux, usa este comando:

$ cat /etc/shells

/bin/bash

/bin/csh

/bin/sh

/bin/tcsh

/bin/zsh

Para que Bash sea el shell por defecto en Linux, esta el siguiente comando:

$ chsh -s /bin/bash

Para hacer un script simplemente abres el editor de texto y lo guardas donde quieras. Después le das permiso de ejecución, por ejemplo el típico hola mundo, que lo guarde como hola:

chmod +x hola

este script lo he construido de la siguiente forma:

#!/bin/bash
#esto es un script
FECHA=$(date)
echo “Hola mundo”
echo “Ahora mismo son”; echo $FECHA
echo “Es hora de despedirse.!”

La primera línea le indica al intérprete de comandos que interprete debe usar para ejecutar el lenguaje que fue utilizado en el programa. La segunda es sólo un comentario ( en Bash, los comentarios comienzan con el símbolo # ).

De este ejemplo podemos ver básicamente los siguientes puntos:

  • un programa en bash comienza por  #!/bin/bash
  • al crear una variable se coloca el nombre de la variable seguido por un = y el valor que contendrá
  • al invocar una variable se le antepone el signo $ al nombre de esta.
  • los comentarios empiezan con #
    nota: entre la variable, el = y el valor no deben existir espacios

Caracteres especiales:

# Todo lo que hay detrás de él son comentarios.
Separa dos comandos:
echo “la fecha de hoy es: ” ; date
. Seguido del nombre de un fichero, hace que el contenido de ese fichero sea interpretado por la shell como si fuese parte del script, es como un #include de C.
‘ ” Distintas formas de entrecomillar cadenas que se explican con detalle más adelante.
Se ejecuta lo que hay entre las comillas como un comando y se sustituye su salida: echo `date` Escapa el siguiente caracter, haciendo que se interprete literalmente.
Accede al valor de una variable:
echo $PATH
Equivale al directorio ‘home’ del usuario, es equivalente a leer el valor de la variable de entorno HOME: echo ~echo $HOME
Escrito después de un comando, hace que éste se ejecute en segundo plano. Esto quiere decir que el script no esperará a que el comando retorne antes de ejecutar la siguiente instrucción.