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

domingo, 2 de junio de 2013

[Shell] Tutorial tail Unix/Linux

En esta ocasión aprenderemos a usar tail,un comando muy usado por los administradores de servidores,no es que sea uno pero si lo fuera lo usaría ya que algo de lo que mas me llama la atención es que usa un bucle para mantener abierta la concatenación de un archivo,hagan de cuenta un cat funcionando en bucle infinito,que muestra las lineas que le indiquemos,esto sirve para escanear actividades en un archivo o incluso podemos escribir en el,usando los flujos estándares de Unix,solo Tuberias y flujos estándares,para ver con tail el avance del texto:

Vean,como programo un pequeño script en Perl sin usar un editor y viendo el avance con tail:




Ahora vamos a ver como funciona:


tail muestra las ultimas 10 lineas por defecto,solo las ultimas 10,por ejemplo podemos crear un archivo con 11 lineas comenzando desde el 0,con bash:

for i in {0..10}; do echo "Linea $i"; done >> prueba.txt

Y ahora ejecutamos tail:

tail prueba.txt

Y también podemos usar cat,que concatena todo el archivo.

Y vemos la diferencia:



Aunque tenemos 11 lineas tail solo usa 10,ahora veamos los parámetros:

tail -v archivo

Muestra el nombre del archivo en la primera linea:

tail -f archivo

Deja abierto tail para comprobar la actividad del archivo o también a su hermano:

tailf archivo

type tailf

Que también funciona lo que se menciona abajo(-n y  -v ).

tail -q

No muestra el nombre,es como tail solamente,solo que se usa porque cuando abrimos dos archivos al mismo tiempo:

tail archivo1 archivo2

Nos muestra los nombres por defecto,así que si no queremos eso usamos:

tail -q archivo1 archivo2
 
Solamente con el parámetro -q.

tail -n [{-,+}numero]

Muestra desde la lineas que indiquemos:

Por ejemplo

Desde la tercera linea hasta el final:

tail -n +3 archivo

Desde la tercera linea del final

tail -n -3 archivo

Por ejemplo para mostrar la ultima linea seria:

tail -n -1 

Y para mostrar todo al estilo cat,seria:

tail -n +1

Y nos muestra al estilo que cat concatena archivos de texto.

tail -c [{+,-}bytes]

Muestra los caracteres desde el byte que indiquemos,por ejemplo desde el byte 5:

tail -c +5 archivo

Desde el byte 5 de atrás:

tail -5 archivo

Eso es todo,para mas información siempre tenemos en la misma shell:

tail --help

o

man tail

Ya que me faltaron mencionar alguna funciones,pero estas son las mas interesantes(en mi opinión).

Eso es todo :D
Leer más...

martes, 2 de abril de 2013

Probando ArchBSD

Como saben hace un tiempo que se esta hablando de Arch basado en BSD o usando BSD el grandioso BSD(aunque me digan fanboy),pero el hecho es que estoy en BSD antes que Linux y si hay un sistema bueno, rápido y estable en Linux es Arch,pero ahora,todo eso con el "alma" de Beastie :O.



Bien como saben o si no saben ya esta disponible la .iso de ArchBSD(64 bits) en su ftp desde hace como un mes,aunque generaron una actualización hoy:


##
## Arch Linux repository mirrorlist
## Generated on 2013-04-02
##



Enlace

La descargue y la probé en mi quina x86_64,en la cual tengo Windows 7 64 bits,hiba a usar VirtualBox pero es una falta total de respeto probar BSD en una virtal machine de Windows, así que directo desde el BIOS:

Nota: Tome algunas fotos con mi Android y se ven feas,pero bueno,lo bueno es que es un hardware real:


Como no lo instale lo probe muy poco pero me dejo muy buenas impresiones,para empezar el arranque es muy rapido,no tanto como el systemd de Archlinux(instalado) pero es muy veloz en comparación a el .iso del 2012 de netinstall de Archlinux(igual o mas rapido), también lo que me llamo la atención es que tiene un loader muy similar al de Gentoo(letras blancas con comprobadores verdes),pero bueno eso es lo de menos.

En el caso del acceso la contraseña es root y nada de contraseña,para entrar a la Shell de chs,en este caso no implementaron ni zsh de Arch ni tcsh o sh que dejan en FreeBSD,si no que csh una shell muy "amable" y fácil de usar,aunque con sus propias configuraciones,en el ~/.cshrc.

El archivo de guia de instalación que esta en esta pagina:

Enlace
El cual es igual de sencillo que el de Archlinux,bueno entre comillas,o mas bien dicho no es tan complicado:

1.Para empezar usa gpart GnuParted,el cual es un poco mas complicado de usar que fdisk o cfdisk,pero bueno eso en mi opinión personal.

2.Usa particiones da en vez de sda(en comparación con Archlinux),osea que si tenemos instalado un Linux o Windows necesitaremos hacer algunas moodificaciones(como con FreeBSD).

3.Usa el script de instalación pacstrap de Archlinux para instalar el sistema base en nuestro HDD

4. También tenemos que hacer un entorno enjaulado y configurar algunas cuestiones(igual que en Archlinux)

Pues esa es la guia,la cual podemos ver con

less ~/install.txt

O desde la web que menciones arriba.

Al igual que FreeBSD tenemos el editor VI y el sencillo ee,para poder modificar lo que necesitemos :D


ee en ArchBSD


Para conectarnos a internet,solo debemos hacer dhclient a nuestra interfaz(cableada)

Para usar wlan0

Usen este tutorial
Aqui yo usando wlan0 en ArchBSD



Y por ejemplo aquí usando pacman en BSD o mejor dicho ArchBSD con FreeBSD-9.1-stable =O



No se instalo nada ya que el disco es solo para lectura,pero bueno se puede ver a pacman en acción, pues eso es todo y me he quedado muy impresionado,de momento esta .iso es para testers y no es muy recomendable instalar,a menos que seamos testers o nos sobre una HDD o nos guste mucho Arch y mucho BSD,como en mi caso,solo que yo no lo hice por no borrar el windows,que aun sigue siendo una dependencia desde que perdí OS X ¬_¬.

Como vieron es una reseña muy pequeña pero tenia que hablar sobre esto,auque no tenga que ver con la tematica del sitio(tutoriales) pero bueno cuando esten las .isos de x86 o este mas estable, haré un tutorial de instalación :D

Saludos
Leer más...

sábado, 2 de febrero de 2013

Logo ASCII de tu distro Linux en terminal

En Linux tenemos distintos scripts para poder mostrar nuestro logo de Linux de nuestra distro,no solo eso si no que tambien muestra informacion del sistema,hemos visto para Arch, para ubuntu y este ultimo es el script que vamos a usar hoy,pero para cualquier distro linux,bsd y OS X,tambien windows(creo) y bueno vamos a iniciar :D

En cualquier distro necesitamos wget:

Para ver si lo tienen teclen en terminal


which wget; if [ $? -eq 0 ] ; then clear; echo -e "\nSi lo tienes :D\n"; else clear; echo -e "\nNo no lo tienes :(\n"; fi
Si no lo tenemos,para instalar 


En las distros que uso:

Gentoo

sudo emerge -av wget

Ubuntu/Debian/Debs

sudo apt-get install wget

openSUSE

sudo zypper in wget

Archlinux

sudo pacman -S wget

En BSD

FreeBSD

sudo pkg_ad -rv wget
Para otras distribuciones googlen(pero lo mas seguro es que lo tengas)


Bien ahora ejecutamos este comando (descarga le da permisos de ejecución y le pone nombre) :

cd /usr/bin/; sudo wget https://raw.github.com/KittyKatt/screenFetch/master/screenfetch-dev -O screenfetch && sudo chmod +x screenfetch 
Y listo :D

Ejecutamos

screenfetch
Este es gentoo en un entorno enjaulado desde ubuntu

Aqui unos trucos:

1.Verlo en verbose(esto ahara que se vea como busca la informacion de la distro):

screenfetch -v
2.Ver otros logos(por ejemplo Arch)

screenfetch -D "Arch"
El antiguo logo de Arch

screenfetch -D "Arch Linux - Old"


 Fedora

screenfetch -D "Fedora" # etc
3.Bien,ahora abrirlo cada vez que abramos la terminal,esto mas que nada recomiendo usar el verbose:

echo "screenfetch -v" >> ~/.bashrc
4.Eliminar errores,no quiero cuestionar el script ni el programador que lo hizo pero por por X o Y razón aveces da errores, y esto lo solucionamos solo mandando a devnull los errores:

screenfetch 2>> /dev/null
Si queremos podemos crear un alias para que no tenga errores:

echo 'alias screenfetch_sin_errores="screenfetch 2>> /dev/null"' >> ~/.bashrc && source ~/.bashrc
5.Eso es todo :P

Para mas información

screenfetch -h

Yo mostré gentoo en chroot porque uso linux-logo,en Arch alsi y en los demás screenfetch:






 Eso es todo
Leer más...

sábado, 29 de diciembre de 2012

Tutorial scripting python 3.3 desde Unix


Comenzaremos los tutoriales para programar en python versión 3.3,como saben si son seguidores del sitio hace un tiempo realice algunos tutoriales sobre python,estos los cancele por algunas cuestiones y me disculpo por ello.

En esta ocasión daremos un repaso rápido a lo que ya habíamos visto en python 2.7 así que si no tienes ni idea de programación estos tutoriales te servirán para adentrarte en el mundo de programación y python en si,ya que los haré los mas explicados posible y he habilitado todos los comentarios para que puedan comentar con la cuenta que tengan y sin cuenta,por si tienen algún aporte o duda.

Como dije daremos un repaso a lo que ya habíamos visto en python 2.7,como si no hubiese otros tutoriales de python.

Hola Mundo

Explico que es hola mundo,hola mundo es el primer programa/script que creamos en nuestro lenguaje de programación en lo que consiste este grandioso programa es en imprimir hola mundo en la pc,en algunos casos desde la consola y en otros desde una ventana.

En este caso como es introducción,lo haremos desde la consola usando scripting

Uno, ver que versión de de python tenemos

python -V

Ahora teniendo la versión 3.x comenzamos

Nota: Yo tengo una distro RR y trae python 3.x por defecto,ubuntu 12.10 por ejemplo trae python 2.7 y 3.x


Primero que nada debemos ver donde esta el interprete(python)

En terminal

which python

La salida sera algo como esto

/usr/bin/python
Si python -V no muestra 3.x,puedes buscar python 3 así

which python3
Y la salida sera algo como esto:


/usr/bin/python3

Usa esta ruta para lo de bajo.

Si aun así no sale python 3.x es porque no lo tienes instalado

En ubuntu 12.10:






En Archlinux :




Tomaremos la salida y le agregaremos #! y env,que quede así

#!/usr/bin/env python
O
#!/usr/bin/env python3 

Con #! llamamos el interprete(python)

Y con env ?

Si vamos a programar en serio,vamos a usar nuestro script en distintos sistemas(en este caso tipo Unix) y no todos tienen la misma (como yo le digo arquitectura[no me refiero a x64,x86,etc],me refiero a en que rama(carpeta) guarda el interprete ) ruta del interprete

Por ejemplo en FreeBSD

/usr/local/bin/python

Y con env busca python

Ya que env es un ejecutable y con añadir python después de el estamos diciendo que busque python

Es lo mismo que escribir en la consola

env python

Y también podemos buscar env(este ejecutable si siempre en /usr/bin)

which env

Así que siempre que inicies un script usa #!/usr/bin/env python

En este caso de preferencia

#!/usr/bin/env python3
Por si no es la versión que tienes por defecto

Ahora otra practica que se usa es asignar la codificación del script en mi caso no lo uso,pero si se necesita investigar al respecto.

Ahora si Hola Mundo:

Lo que acabamos de hacer es para hacer uso de scripting,ya que python tiene una consola en la cual podemos usar los comandos que veremos solo escribiendo python en la terminal,la cual no veremos,ya que estos tutoriales están dedicados al scripting.

Como mencione Hola mundo se basa en imprimir texto en la pc,en este caso la consola y el comando que se usa en python para hacer esto es print:

En python 3.3 debemos encerrar entre () lo que queremos imprimir y el texto "":

print ("Hola Mundo desde Python 3.3!!!")

Script :

#!/usr/bin/env python

print ("Hola MUndo desde Python 3.3!!!")

Recuerden que si python 3.x no esta por defecto en /usr/bin/python hagan asi el script:


#!/usr/bin/env python3

print ("Hola MUndo desde Python 3.3!!!")



Los scripts son linea de ordenes en un archivo con extensión .py,asi que para usar ese gran programa solo escribanlo en un archivo de texto y guárdenlo con extensión .py

Hay dos formas de ejecutar:

1.Si no tiene el hashbang/shebang se puede usar así:

python script.py

2.Si tiene hashbang se ejecuta de esta manera

Le damos permisos de ejecucion:

chmod +x script.py

Y lo ejecutamos asi:

./script.py

3.En mi caso yo lo ejecuto asi

python script.py
o

python3 script.py

Aunque tenga hashbang,esto para no perder tiempo en darle permisos de ejecución y dárselos hasta que este listo para usarse y compartirse.

Así que lo ejecutamos

python holamundo.py

Variables :

Las variables son fundamentales en los lenguajes de programación son asignaciones de valores que varían estos valores pueden ser números letras u otras cosas,las variables se definen con el símbolo = y con una palabra clave la cual no puede ser un comando del sistema:

En el caso de texto,llamado cadena o string debe ir encerrado en "" o '' para que se defina como cadena

Vamos a definir una variable llamada cadena con el valor de string "Mi cadena":

cadena = "Mi cadena"

En el caso de números sea enteros o de punto no debe ir en modo string(encerrados en "") debe ir libres de esta característica:

Vamos a definir dos variables de números una llamada numero y otra punto con valores 10 y 10.5:

numero = 10

punto = 10.5

Eso es todo lo que necesitamos saber sobre variables(de momento).

Ahora llamarlas,las variables son leídas por el interprete,pero no serán mostradas/ejecutadas hasta que sean llamadas de alguna manera, en este caso solo imprimiremos su valor en la consola:

#!/usr/bin/env python

cadena = "Mi cadena"
numero = 10
punto = 10.5

# < esto es un comentario,no lo toma en cuenta python
# Imprimiremos {

print ("Cadena: ",cadena)
print ("Numero: ",numero)
print ("Punto: ",punto)

# } Fin del script


Al ejecutar vean el resultado.

Yo defino/uso print de esta manera

#!/usr/bin/env python

cadena = "Mi cadena"
numero = 10
punto = 10.5

print ("Cadena: ",cadena,"\nNumero: ",numero,"\nPunto: ",punto)

Y obtenemos el mismo resultado,por que el símbolo \n quiere decir nueva linea.

Lo que también queda aclarar es las comas (,) esta coma usada de esta manera quiere decir también,por ejemplo en español diría:

imprime ("Cadena: " también variable cadena también "en nuevalinea Numero : también etc)

Vamos a hacer unas operaciones aritméticas:

No es difícil hacer esto,solo necesitamos los símbolos que se usan y no va a mas de lo que usábamos en la secundaria o tal vez primaria:

- resta

+ suma

% resto

/ division

* multimplicacion

// cociente

** potencia

Ahora vamos a ver un ejemplo

En un script escribimos:

print ( 1 + 1 )

Y imprime dos.

Igual en las otras operaciones,ahora vamos a definir el valor de nuestra operación desde la entrada del teclado con el comando input()

#!/usr/bin/env python

print ("Vamos a sumar dos numeros,definelos tu mismo")

numero1 = input("Escribe el numero uno: ")
numero2 = input("Escribe el numero dos: ")

# Podemos hacerlo de dos formas
# Forma uno desde variable {

suma = numero1 + numero2

# Lo llamamos

print (suma)

# } Fin de forma 1

# Forma 2 {

print (numero1 + numero2)

# } Fin forma2

Si ejecutamos el valor sera los dos juntos,por ejemplo si sumamos 10 + 10 el resultado sera 1010,esto se debe a que el valor que tomo fue desde input y este lo tomo como string, lo que debemos hacer es convertirlo a integer/entero como mencione (numero)

Pasando la variable a integer con el comando int desde otra variable:

#!/usr/bin/env python

print ("Vamos a sumar dos numeros,definelos tu mismo")

numero1 = input("Escribe el numero uno: ")
numero2 = input("Escribe el numero dos: ")

nume1 = int(numero1) # Pasamos el valor a entero
nume2 = int(numero2) # Las dos variables

# Podemos hacerlo de dos formas
# Forma uno desde variable {

suma = nume1 + nume2 # Ahora la operacion se hace sobre las nuevas variables

# Lo llamamos

print (suma)

# } Fin de forma 1

# Forma 2 {

print (nume1 + nume2) # Tambien aqui se realiza la operacion sobre las nuevas variables

# } Fin forma2

Ahora una nota importante,yo recomiendo que hagan esto desde un editor potente como kate,gedit o vim,si pueden usar un IDE también es recomendable,pero esto es mas que nada por que resalta la sintasix con colores y hace mas fácil el entendimiento, así que si pueden instalen,vim,kate,gedit:




Esto no es tan fácil ya que los programadores,coders,desarrolladores tenemos que ser analistas previsores,pensar en todo lo que puede ser un posible error o tan solo posible entrada,por ejemplo si nuestro numero es de punto (floating point) de punto flotante,debemos convertirlo a este formato:

Ahora con el operador float

#!/usr/bin/env python

print ("Vamos a sumar dos punto flotante,definelos tu mismo")

numero1 = input("Escribe el numero uno: ")
numero2 = input("Escribe el numero dos: ")

nume1 = float(numero1) # Pasamos el valor a flotante
nume2 = float(numero2) # Las dos variables

# Podemos hacerlo de dos formas
# Forma uno desde variable {

suma = nume1 + nume2 # Ahora la operacion se hace sobre las nuevas variables

# Lo llamamos

print (suma)

# } Fin de forma 1

# Forma 2 {

print (nume1 + nume2) # Tambien aqui se realiza la operacion sobre las nuevas variables

# } Fin forma2

Bien como vemos es sencillo,ahora vamos a ver estructuras selectivas

Estructuras selectivas

Las estructuras selectivas son caminos por donde ir,por ejemplo :

No vean el código,solo copien,ejecuten y vean lo que hace:

Desde ahora uso pastebin ya que necesita ir identado y puede que el formato de blogger haga que pierda el estilo de identacion(explico abajo)

Enlace

Aqui nos sirve este script ^ de dos formas:

1.Para ver como funcionan las estructuras selectivas,vimos que compara si el valor es igual a algunos de los que nos da y elige un camino por donde ir(Explicado mejor mas abajo)

2.Para ver como debe ir identado el código python ya que python es muy especial y ademas de que se ve mejor el código identado, lo usa para saber que usar,ya que no cierra su ciclo selectivo,por ejemplo Perl:

if (condicion) { # < Abre ciclo
# comandos
} # < Cierra ciclo

Y en python es asi

if condicion:
comandos

En lo personal me gusta mas como maneja los datos Perl :\

Ya que no requiere identacion y incluso podemos entrar a la competencia de codigo ofuscado,como por ejemplo el perfecto rectangulo de Just Another Hacker Unix Perl

Enlace

Que funcina O_O

Pero bueno vamos a seguir

En las estructuras selectivas hay que tener claro los comprobadores,porque se parecen a otros operadores, hay que tener muy claro esto:

= asignación

== comprobacion

Muy en claro,al igual que los demás:

< menor que  
<= menor o igual que  
> mayor que  
>= mayor o igual que  
== igual  
!= no igual
is objecto identificado  
is not  no identificado

Todo esto ^ lo podemos usar en las estructuras selectivas:

Pero antes si no conocen ningún lenguaje de programación,existen tres estructuras

En python son:

if,elif y else

Por ejemplo

if es si # Valor verdadero

elif es si,sobre otra condición # Valor verdadero

else es no sobre las otras comparaciones # Valor falso

Por ejemplo veamos este script:

Enlace

Como vemos podemos comparar muchas veces usando elif,pero solo una usando else,lo cual es bueno porque es algo que no es,ya que en español seria:

si es (if)

si es este, en vez (elif)

si no es ninguno (else)

Eso es todo por ahora,se me fue volando el tiempo y no vimos todo lo que vimos en tres tutoriales python 2.7,sera en otra ocasión :D

Eso es todo por ahora :D
Leer más...

domingo, 23 de diciembre de 2012

tbashconverter 1.3 script para convertir videos

Una vez mas actualice este script que programe que me ha funcionado mucho,de hecho tengo una suite de script's :D hechos en perl,bash,python y ruby algunos los he puesto como el descargador de vídeos de youtube de perl o el navegador web python[Qt]/perl[Gtk] y el escaner de puertos bash y otros.

Como dije este script sirve bastante,ya que siendo honesto muchos programas/scripts que hago solo los hago y los dejo tirados,por usar otros mas profesionales,y en esta caso no,es el único convertidor que uso :D

Bueno que añadí en esta versión:

Como ven es una versión nueva,ya que no es un arreglo a algún bug,si no que añadí nueva función.

Si nueva función,solo una :\

Lo que hace es que como esta basado en ffmpeg hice la GUI en zenity para fácil conversión,pero aveces estamos ya en la carpeta donde esta el video que vamos a convertir desde la terminal, así que añadí es nueva función:

Poder convertir vídeos desde linea de comandos,esto suena un poco tonto,ya que ffmpeg lo hace así nativamente:

ffmpeg -i video.mp4 video.flv

Y tbashconverter

tbashconverter video.mp4 
Por ejemplo abrimos necesitamos convertir un video

Abrimos terminal y escribimos

tbashconverter

Y nos aparece la GUI que solo tenemos que ir llenando(muy fácil)

Ahora la otra opción(nueva opción)


Ya estamos usando la terminal y estamos en la carpeta del video,para rápidamente solo escribimos

tbasconverter video

Y nos aparecerá una GUI similar a la otra

Suena raro,pero me paso y por eso lo programe :P

Y para que no sea mala practica esto, para que funcione sin problemas nuestro script,solo debe estar en /usr/bin con permisos:

-rwxr-xr-x 1 root root
Este es el código(use scripting un poco mas avanzado)

Enlace
Para usar solo:

1.Abren un editor

Y pegan el código


2.Lo guardan como tbashconverter en su Carpeta personal

3.Abren una terminal y teclean

sudo mv ~/tbashconverter /usr/bin/tbashconverter

4.Le dan permisos de ejecución

sudo chmod +x /usr/bin/tbashconverter

5.Listo escribe

tbashconverter 
Eso es lo básico si llevan un tiempo en Linux/Unix pueden usar su propia forma de ejecutarlo,ya que como saben no es la unica.

En la terminal :D
Leer más...

miércoles, 19 de diciembre de 2012

Tutorial bash medium scripting 1

Como les prometi hace un tiempo cuando termine el curso básico de bash basico, iba a comenzar los de avanced scripting en el futuro y lo hare,pero de momento no,ya que necesito poner primero la dificultad siguiente,ya que es así:

basic scripting

medium scripting

avanced scripting

core scripting

Bueno quien sabe si va así o le invente de mas :P

Pero así lo veremos aquí en tiempo de tux :D

Así que podemos tachar basic scripting

La verdad yo a penas voy en avanced scripting y si me equivoco en algo o hago mala practica comenten,ya que es bueno aprender de los demás.

Bueno este tutorial y los que siguen (9 mas) van a ser basados en los de antes,osea que ya deben saber basic scripting.

Como dije yo no se bien,bien he leído libros de red hat y tutoriales (en ingles) sobre scripting,y como dije no vendría mal una ayuda (comentarios, correcciones,etc),bueno.

Primer ejemplo:

Crear un archivo con un bucle que se copie a otro,pero con verificadores por si existe alguno de los dos y romper el bucle cuando existan los dos :D

Primero creamos una función,que usaremos para que no sea tan rápido el proceso:

function dormir {

echo "Aguarde un segundo..."; "sleep 1;

}

Aquí lo que cabe ver es que usamos (;) para no usar mas lineas,ya que es lo que indican los (;)

Asignamos el nombre de los dos ficheros.

: ${fichero_uno="hello.txt"}
: ${fichero_dos="HolaMundo.txt"}

Creamos el bucle(while) y verificamos si no existe el primero,ya que sin el primero no podemos crear el segundo:


while [[ ! -e '${fichero_uno}' ]]

do
                          
# Comandos aquí

done


Verificamos con ! -e (visto en basic scripting)

Y llenamos el bucle:



echo "No existe:"; echo "${fichero_uno}"

dormir

Mostramos que no existe,para demostrar mas los ; los use ya que se podía hacer así también el comando echo:


echo -e "No existe:\n""${fichero_uno}"


Luego llamamos la función dormir que creamos para esperar un poco a que inicie lo interesante:

Creamos una estructura if que vea si existe el archivo 2 y si existe copia el archivo 2 a 1 y rompe el bucle,si no existe lo crea y se repite el bucle,cuando regrese ya existirá y hará lo de if:

if [ -e "${fichero_dos}" ]; then  

echo "${fichero_dos} existe"

dormir

cp ${fichero_dos} $fichero_uno}

break

else

echo "$fichero_dos} no existe"; dormir 

touch ${fichero_dos}

fi; 


Cuando rompa el bucle mostraremos:


echo "Test completo."; echo "$fichero_uno} y ${fichero_dos} existen"


Y así queda el script completo:


#!/bin/bash

function dormir {

echo "Aguarde un segundo..."; sleep 1;

}

: ${fichero_uno="hello.txt"}
: ${fichero_dos="HolaMundo.txt"}

while [[ ! -e "${fichero_uno}" ]]

do
                          
if [ -e "${fichero_dos}" ]; then  

echo "${fichero_dos} existe"

dormir

cp ${fichero_dos} ${fichero_uno}

break

else

echo "${fichero_dos} no existe"; dormir 

touch ${fichero_dos}

fi; 

done

echo "Test completo."; echo -e "${fichero_uno} y ${fichero_dos} existen\n""Haciendo ls a tus txt en $PWD"
dormir
ls *txt

Ejecuten y vean lo grandioso del script :P

Crea el archivo hello.txt y desde ese crea el holamundo.txt,pero verifica primero si no existe hello.txt :D

Ejemplo 2:

Un momento no es tan grandioso :(

Porque si ya existe hello.txt no crea holamundo.txt.

Como se soluciona esto?

Si solo lo ejecutan y hasta ahi no pasa nada,de hecho esperaría a que comentaran el error,pero el hecho no es que usen los ejemplos que aprendan,es que usen lo que aprendan con los ejemplos y si basan este algoritmo en otra cosa es cuando va a dar error :(

Lo solucionamos solamente haciendo una comparacion dual,en el bucle while usando una coma (,):

#!/bin/bash

function dormir {

echo "Aguarde un segundo..."; sleep 1;

}

: ${fichero_uno="hello.txt"}
: ${fichero_dos="HolaMundo.txt"}

while [[ ! -e "${fichero_uno}","${fichero_dos}" ]]

do
                          
if [ -e "${fichero_dos}" ]; then  

echo "${fichero_dos} existe"

dormir

cp ${fichero_dos} ${fichero_uno}

break

else

echo "${fichero_dos} no existe"; dormir 

touch ${fichero_dos}

fi; 

done

echo "Test completo."; echo -e "${fichero_uno} y ${fichero_dos} existen\n""Haciendo ls a tus txt en $PWD"
dormir
ls *txt


Y listo :D

Ejemplo 3:

Definir nuestros propios archivos:

#!/bin/bash

function dormir {

echo "Aguarde un segundo..."; sleep 1;

}

echo -n "Nombre fichero uno: "
read fichero_uno
echo -n "Nombre fichero dos: "
read fichero_dos

echo "Se creara el fichero dos del uno:"; dormir

while [[ ! -e "${fichero_uno}","${fichero_dos}" ]]

do
                          
if [ -e "${fichero_dos}" ]; then  

echo "${fichero_dos} existe"

dormir

cp ${fichero_dos} ${fichero_uno}

break

else

echo "${fichero_dos} no existe"; dormir 

touch ${fichero_dos}

fi; 

done

echo "Test completo."; echo -e "${fichero_uno} y ${fichero_dos} existen\n""Haciendo ls en $PWD"
dormir
ls *txt

Esto de que sirve?

Como el ejemplo es claro y sin objetivo, para nada,pero si usan este algoritmo sirve para muchas cosas,implementando mas comandos,funciones y bucles,por ejemplo para clonar un archivo/carpeta a otro y verificar que existan ambos,por si ya existen y no cometer un error.

Ejemplo 4:

No molestes :D

Como estos ejemplos son sucios podemos automatizar el borrado de toda la basura que estamos dejando con los archivos que estamos creando.

Primero creamos una carpeta,pero no lo haremos simple,usaremos el algoritmo de arriba(verificar y no dañar):


function carpeta {

echo -n "Crearemos una carpeta escriba el nombre que dese : "

read carpeta
mi_carpeta=`echo $carpeta`
}

carpeta

while [ 0 ]; do

if [ ! -d "${mi_carpeta}" ]; then

mkdir "${mi_carpeta}" && cd "${mi_carpeta}"

echo "Directorio actual $PWD"

break

else

echo "Ya existe la carpeta y puede contener algo importante,elije otro nombre"

carpeta

fi

done


Ahora agregamos el script anterior


#!/bin/bash

function dormir {

echo "Aguarde un segundo..."; sleep 1;

}

function carpeta {

echo -n "Crearemos una carpeta escriba el nombre que dese : "

read carpeta
mi_carpeta=`echo $carpeta`
}

carpeta

while [ 0 ]; do

if [ ! -d "${mi_carpeta}" ]; then

mkdir "${mi_carpeta}" && cd "${mi_carpeta}"

echo "Directorio actual $PWD"

break

else

echo "Ya existe la carpeta y puede contener algo importante,elije otro nombre"

carpeta

fi

done


echo -n "Nombre fichero uno: "
read fichero_uno
echo -n "Nombre fichero dos: "
read fichero_dos

echo "Se creara el fichero dos del uno:"; dormir

while [[ ! -e "${fichero_uno}","${fichero_dos}" ]]

do
                          
if [ -e "${fichero_dos}" ]; then  

echo "${fichero_dos} existe"

dormir

cp ${fichero_dos} ${fichero_uno}

break

else

echo "${fichero_dos} no existe"; dormir 

touch ${fichero_dos}

fi; 

done

echo "Test completo."; echo -e "${fichero_uno} y ${fichero_dos} existen\n""Haciendo ls en $PWD"
dormir
ls 

Y por ultimo agregamos un comprobado y un eliminador:


function adios {

echo -e "Directorio acual $PWD\n""Listando..."; ls $PWD 

echo -n "Borrar todo lo que se creo? n/s : "

read respuesta

case ${respuesta} in

s|S)

echo "Borrando archivos..."; dormir
rm "${fichero_dos}" && rm "${fichero_uno}"

echo "Borrando carpeta..."; dormir
cd ..; rmdir ${mi_carpeta}
exit 1;
;;
n|N)

echo "Buena eleccion ;P "; dormir; exit 1;
;;
*)

echo "Ok"; exit 1;
;;

esac

}

Y lo agregamos,pero primero incluimos también clear para un trabajo limpio

Y si queremos podemos añadir este, digamos "snipett" también:

function autodestruccion {

echo -n "Borrar este script tambien: "

read opcion

case ${opcion} in

s|S)

echo "Adios :("; rm $0
;;
n|N)

echo "Buena elección :)"; exit 1;
;;
*)
echo "Ok"; exit 1;
;;
esac

}

Y así queda el script


Enlace



Así es el medium scripting,bueno como dije no se si exista el medium scripting pero tenemos que ir poco a poco,porque esto que hicimos en el avanced scripting no es nada y menos en el core,ya que usamos:

sed,awk,perl,flujos estándares,cut, parámetros de desplazamiento,etc

Pero vamos bien :D

Eso es todo
Leer más...

martes, 18 de diciembre de 2012

Como instalar XFCE en FreeBSD

FreeBSD es uno de mis sistemas operativos favoritos,la verdad entrado un poco en lo personal,FreeBSD lo uso antes de comenzara a usar Linux,en Linux soy relativamente nuevo ya que la primera distribución que use fue Ubuntu 11.04,pero siempre he sido Unixero,el primer sistema propio que tuve fue OS X Lombard(casi por un milagro) y Windows lo he necesitado pocas veces aunque también lo manejo mucho ya que no hacerlo seria algo malo en un mundo que esta en un monopolio con este sistema, así que yo mas que nada me considero Unixero al usar OS X,iOS(Ambos Darwin BSD)FreeBSD,otros BSD's y algunas distribuciones de Linux (Debian,Fedora,Arch,Gentoo,openSUSE,Slackware,y descendientes de estas[Vector,Mint,Ubuntu,Sabayon,Pentoo,Solus]) y aun asi uso mucho FreeBSD un sistema muy,muy bueno,que no entro en términos de comparación con Darwin o Linux porque no saldría nada bueno,pero que aun así me gusta mucho y lo uso desde hace algún tiempo.

Todo esto porque muchas personas piensan(cometan) cuando quieren instalar un BSD en la comparación con GNU/Linux y no debería ser así,ya que ambos sistemas son Libres,ambos sistemas son muy potenetes y ambos sistemas son de familia Unix.


Y ambos tienen sus mascotas Tux y Beastie


Ya que que es Linux?

Un kernel,un núcleo que necesita de apps,Xorg,WM,etc GNU para funcionar como sistema de escritorio así que el nombre para referirse a Linux es GNU/Linux.

Y que es FreeBSD?

Es un sistema operativo libre completo,pero que también necesita de programas para funcionar y muchos son los mismos que usa GNU/Linux en versión BSD aunque tambien cuenta con compatibilidad binaria con los de GNU/Linux.

Y Mac?

En el caso de MacOS X usa Darwin,Darwin a la vez integra el micronúcleo Mach y servicios de sistema operativo de tipo *nix basados en BSD 4.4.

Así que MacOS X es single *nix,licenciado y FreeBSD no es Unix-Like,pero ademas de la licencia muchas cosas separan a MacOS X de FreeBSD,aunque también en algunas tienen que ver.

Y los otros *nix?

Existen muchos otros tipos de sistemas tipo o single *nix pero como dije no voy a entrar en mucha comparación ya que es mucho de lo que podría hablar y esta no es la temática del sitio, así que a lo que venimos.

Que es instalar XFCE4 en FreeBSD(en mi caso versión 9)

Tutorial

1.Primero que nada instalamos Xorg

Como root

sudo pkg_add -rv xorg

2.Configuramos Xorg

sudo Xorg -configure


y copiamos el archivo de configuración
sudo cp /root/xorg.conf.new /etc/X11/xorg.conf
3.Instalamos XFCE4

sudo pkg_add -rv xfce4
4.Configuramos nuestro rc.conf

sudo ee /etc/rc.conf
Y añadimos:

hald_enable="YES"
dbus_enable="YES"



5.Configuramos el .xinitrc:

echo  "/usr/local/bin/startxfce4" > ~/.xinitrc
Y reinicamos

sudo reboot

Y al iniciar el sistema nos logeamos y

startx
Y listo :D






 Como ven es facil instalar un Entorno de Escritorio y tambien lo podemos dejar asi:



Eso es todo.
Leer más...

sábado, 15 de diciembre de 2012

Como instalar y configurar sudo FreeBSD

Algo de lo que tenemos que hacer primero despues de instalar FreeBSD es instalar sudo,para poder tener privilegios de super usuario rápidamente,con nuestro usuario normal,en FreeBSD no nos instala sudo y tenemos que configurar y instalar.

Tutorial 

1.Nos logeamos como root y instalamos

pkg_add -rv sudo
Salimos

exit
Y entramos de nuevo

Ahora editamos
visudo
Buscamos  #%wheel ALL(ALL) ALL

Y lo descomentamos (quitamos el #)

Guardamos y salimos

Y listo :D

Solo falta un detalle, que nuestro usuario este en el grupo wheel

Checamos con:

pw showgroup wheel

Y si no aparece, lo añadimos con:

pw user mod usuario -G wheel
Y listo,salimos y entramos con nuestro usuario común

Y al usar sudo solo tenemos que aceptar las normas y listo


Eso es todo :D

Leer más...

domingo, 9 de diciembre de 2012

Tutorial flujos estándares de Unix

Esto suena un poco difícil o aburrido,por donde lo quieran ver,pero es algo muy útil y que usamos hasta en Ubuntu si hacemos copy & paste de un sitio,lo que pasa es que todos estos comandos de Unix los mantienen los sistemas tipo Unix GNU/Linux, BSD, o los Single Unix.

Así que vamos a darles un repaso a esto para que usemos mas la Terminal(Consola) de nuestro sistema tipo Unix o single Unix :D

Primero que nada vamos a ver los tres tipos de flugos que existen

stdin : Standard input (Entrada estándar)

stdout : Standard Out (Salida estándar)

stderr : Standard Error(Error estándar)

Explicación:

stdin

stdin es la entrada estándar de nuestro teclado en la mayoría de los casos,mas que nada para interactuar con nosotros y recoger información.

Si visitan este sitio a menudo se habran dado cuenta que coloco algunos scripts en Perl,este lenguaje usa stdin para recoger información desde el teclado:

<STDIN>
Así que en la shell de Unix o Bash/etc no seria mas que solamente escribir algo y estaríamos usando stdin.


stdout

Lo contrario a stdin es la salida de lo que pedimos con stdin,por ejemplo lo que sale de

cat archivo

Al escribir cat archivo estamos haciendo stdin, y al mostrarnos la salida es stdout.

stderr

Esto es los mensajes de error,que imprime la consola al hacer algo que no se puede o da error

por ejemplo escribir

sajdfsjf
Operadores

Como lo habíamos visto antes existen tuberías que redireccionan nuestros comandos, aquí vamos a adentrarnos un poco mas,ya que vamos a hablar mas a fondo de redireccionar stdin stderr y stdout.


Comando >

Redirige el stdout a un archivo,si este no existe lo crea y si existe lo borra y lo llena con el nuevo contenido.

Ejemplo:

echo "Hola" > archivo.txt 

Comando >>

Redirige stdout a un archivo,si este no existe lo crea y si existe añade la salida al final.

Ejemplo:

echo "hola" >> archivo.txt && echo "hola" >> archivo.txt


Comando 2>

Crea un archivo con stderr, si ya existe  lo borra y lo llena con el nuevo contenido.



Comando 2>>

Redirige stderr a un archivo,si este no existe lo crea y si existe añade la salida al final.



Comando &>

Crea un archivo que contiene el stderr y el stdin. Si el fichero existe,lo borra y lo llena con el nuevo contenido.

Ejemplo

cat ksksjd archivo.txt &> fichero.txt
Este nos manda los errores como la salida normal:


Otra forma de hacer esto es:

cat kdkkd archivo.txt > fichero.txt 2>&1




El comando <

Lo que hace este comando no es gran cosa,ya que como dige hace stdin el cual ya estamos haciendo al escribir

Osea que podemos hacer esto

cat < archivo.txt

Y es igual que esto

cat archivo.txt
O

ls < ~/

Es igual que

ls ~/
o

echo -e "Mi HOME\n" > mis_archivos.txt  && ls < ~/ >> mis_archivos.txt

Es igual que


echo -e "Mi HOME\n" > mis_archivos.txt  && ls ~/ >> mis_archivos.txt
Aunque hay algunas excepciones








Comando <<

Con este comando entramos al $PS2 y podemos meter todas las lineas que queramos ya que es stdin sin final de linea,osea que no borra el archivo que usemos.

Ejemplo:

cat << SALIR >> fichero2.txt
Esto es un poco mas complicado ya que al hacer esto es como si comenzaramos a escribir en un editor de texto,el cual mandara lo que escribamos a fichero2.txt y terminaremos de escribir al escribir SALIR:


Eso es todo :D

-->

Leer más...