jueves, 19 de mayo de 2016

Desarrollo de una programa en ANSI C para GNU/Linux

             Verificación de un numero de cédula ecuatoriana 


  • Objetivo: 

Mediante la creación del programa, analizaremos los parámetros de la funcion main, el proceso de compilación/ejecución a través del bash de GNU/Linux y el procedimiento para que el programa pueda ser ejecutado desde cualquier lugar(rebound).

  • Desarrollo:

 Main:
               
"La funcion main sirve como punto de partida para la ejecución del programa. Normalmente, controla la ejecución del programa dirigiendo las llamadas a otras funciones del programa. Un programa deja de ejecutarse normalmente al final del main. "[1]
Usualmente, la declaración que adopta el main es : int main ( ); 

Sin embargo, para el lenguaje ansi C se utilizara 2 parámetros de entrada denominados argc (argument count) y argv (argument vector).
-argc es un entero que representa el numero de argumentos que se envia al programa.
-argv es un vector de punteros a caracteres(vector de cadena de caracteres). Cada cadena es uno de los argumentos que fue pasado al programa.

La declaración de main en el programa sera: int main (int argc, char *argv[])

Dentro del main, tambien aparece una funcion llamada atoi (address to int) la cual convierte una cadena de caracteres a un entero.  Su declaracion sera de la siguiente manera: n1x = atoi (argv[1]);

 
Proceso de compilación:

En el terminal, vamos primero que todo a compilar el programa; para eso escribimos el comando: 
gcc -o < nombre del ejecutable> <nombre del programa.c> 
En el caso del programa que vamos a usar, para compilar usamos: gcc -o ID cedula1.c






Ahora que ya hemos compilado el programa, vamos a ejecutarlo. Para eso escribimos ./ <nombre del ejecutable> <argumentos de entrada>. 
En el caso del programa de verificación de la cédula: ./ID <numero de cédula>





-PATH
-PATH es una variable de entorno en Linux que comunica al shell cual directorio buscar para ejecutar un programa. 
Para que nuestro programa pueda ser ejecutado desde cualquier directorio, es necesario ubicar en que directorio esta nuestro programa 
 y luego añadir este directorio a la variable de entorno path.
Para esto usamos el comando: export PATH=$PATH: <directorio del programa>


Vale recalcar, que estos cambios no son permanentes. Una vez que se haya apago el computador, nuevamente el programa no podrá ser ejecutable desde cualquier directorio. 

Para hacer los cambios permanentes debemos editar el archivo de configuración del shell Bash del usuario. Para esto usamos el siguiente comando:
echo export PATH=PATH$: <directorio del programa> >> <directorio principal>.bashrc
En en caso de mi programa:
echo export PATH=PATH$: /home/juan/Tareas> >> /home/juan/.bashrc

Ahora ya podemos ejecutar el programa desde cualquier directorio, aun despues de apagar el computador. Ya es un cambio permanente.


-BIBLIOGRAFIA:
[1] Microsoft, "Funcion main y ejecucion del programa",[online].Disponible en: https://msdn.microsoft.com/es-es/library/3ze4ytsc.aspx

lunes, 9 de mayo de 2016

Comandos basicos de Shell

Shell
Shell es un programa informático que permite al usuario interactuar/comunicar con el núcleo(kernel) del sistema operativo mediante comandos, cuyos significados son interpretados y transmitidos al sistema, es decir, shell brinda la interfaz entre el usuario y el sistema operativo del computador para así poder dar las ordenes necesarias para que se realicen diferentes tareas importantes. [1]

Comandos:
  • PWD(print working directory):                                                                                                           Este comando  permite imprimir el nombre del directorio de trabajo actual.



pwd-d: evita todos los symlinks -herramienta que sirve para gestionar enlaces simbólicos-. 







  • man (manual): Este comando especifica las funciones y características de otros comandos en shell.

man -a into: Este comando muestra en pantalla todos las paginas de manuales de Introducción de comandos de usuario disponible.











  • clear (limpiar): La funcion de este comando es la de limpiar la pantalla por completo de informacion anteriormente escrita.





  • cd (change directory): La función de este comando es la de cambiar del directorio actual en la que el usuario se encuentre a cualquier otro directorio existente.


cd .. : Este comando nos permite cambiar desde un directorio cualquiera a su respectivo directorio padre









  • ls (list directory contents): Su función es la de listar el contenido de un directorio especifico (el que usuario ordene).





ls-l: Este comando  lista el contenido de un directorio de manera detallada; es decir, para cada archivo indica usuario, grupo, tamaño, permisos,etc.  



  • mkdir (make directories): Permite al usuario crear un nuevo directorio, si es que este aun no existe.



mkdir -v <nombre de directorio>: Este comando imprime un mensaje de confirmación cuando se crea un directorio.








  • history: Imprime los comandos o lineas recientemente escritas por el usuario.


history !!: Su función es la de mostrar solamente el comando utilizado anteriormente.









  • nano: Es un editor que nos permite crear y editar archivos de texto.












nano -v <nombre de archivo> : La funcion de este comando es permitir al usuario ver el archivo pero no modificarlo; parecido al comando cat.
















  • cat: Permite al usuario observar el contenido de un archivo sin poder editarlo.






cat -b <nombre del archivo>: Su funcion es la de enumerar las lineas que no están vacías dentro del archivo.









  • echo: permite imprimir un mensaje por consola.

                                                                                   



echo -n <mensaje>: Imprime el mensaje por consola pero no se ejecuta un salto de linea.











  • touch: Permite crear diferentes tipos de archivos, como archivos de texto.

touch -c <nombre del archivo>: Este comando no creo ningun archivo dentro del directorio actual.








  • cp: La funcion de este comando es la de copiar un archivo a otro directorio que el usuario especifique.




cp -v<archivo> <destino>:Este comando nos imprime un mensaje de la acción que se esta ejecutando y el directorio  hacia donde se copia el archivo. 









  • mv: La funcion de este comando es la de mover un archivo a otro directorio que el usuario especifique.
mv -i <nombre de archivo> <directorio> : Cuando se mueve un archivo a un directorio, pero el archivo tiene el mismo nombre que otro archivo ya existente en el directorio, el comando mv -i pregunta al usuario si quiere sobre escribirlo.





  • tr -s ' ': esta funcion elimina espacios.
  • chmod <nombre> : esta funcion modifica los permisos de un programa                                                    r(4) - lectura      w(2) - escritura            x(1) - ejecucion                                                                    chmod ugo +rwx <nombre de archivo>
  • bzip2: comprime algun determinado archivo
  • gzip: <nombre.gz> <nombre.txt> este comando sirve para comprimir un archivo
  • tar -cvf <nombre.tar> <nombre.txt> este comando sirve para empaquetar un archivo                                tar -tvf : Enlista que archivos tiene el empaquetado                                                                        tar -czvf <nombre.tar.gz> <nombre.txt>. crea y empaqueta archivos                                             tar -xzvf <nombre.tar.gz> desempaqueta y descomprime archivos
  • who : Enlis los usuarios que han iniciado sesion.
  • cat /etc/passwd contiene 7elementos :      nombre del usuario, passwrod, User ID, GID identificad de grupo, nombre del grupo, directorio home del usuario y el sheel que esta ejecutando el comando
  • grep: realiza un filtrado basado en un patron que va a enviar como argumento de entrada
  • du -h: en lista cada archivo con su peso
  • find /home -name <\*.sh> -and -mmin -50 encuentra los archivos a partir del directorio home que con extension sh y que han sido modificados en los ultimos 50 min. (m-modificar; a-accedido, c- cambiado)
  • Kill <pid> : sirve para matar un proceso determinado
  • pidof <comando> : sirve para visualizar el PID de un comando
  • sed 's/^ [ \t]*//' : sirve para eliminar espacios tabulados
  • sed -n '1p' 
  • sudo su: sirve para cambiar a super usuario
  • rm : sirve para eliminar archivos o direcotorios.     rm -rf elimina direcotorio con su contenido
  • wc : imprime el numero de lineas, palabras y caracteres. (-l numero de lineas; -w numero de palabras; -m numero de caracteres)
  • ps : muestra la informacion de un procesos                                                                                             ps axo pid,ppid,command: este comando enlista el pid, ppid y el comando que se esta ejecutando en ese momento
  • nombre = "usuarios"$(date +%d+%m%y) este comando crea un archivo con fecha en que se crea el programa
  • diff -u <archivo1><archivo2>: compara dos archivos diferentes
  • mv <nombre archivo1> <nombre archivo2>: cambia de nombre al archivo1 a archivo2
  • if config: para visualizar que otros usuario estan conectados en la red
  • ping: para verficiar si tengo conectividad.
  • sudo apt-get update seguido de sudo apt-get upgrade sirve para actualizar paquete
  • apt -cache show : muestra especificaciones del paquete
  • crontab (# m h dom mon dow user command)
 Bibliografia:
[1] Jose Miguel, "Que es un shell? [novato]",[online].Disponible en: http://linuxgnublog.org/%C2%BFque-es-shell/