Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Runex en 12 Mayo 2012, 17:28 pm



Título: [Reto Bash] It's a dir?
Publicado por: Runex en 12 Mayo 2012, 17:28 pm
Es el mismo reto que el planteado por EleKtro pero en bash, así que dificultad ninguna :).

Nombre:      It's a dir?
Dificultad:     2/10
Objetivo:      Diferenciar entre directorios y archivos
Indicaciones:
Ejemplo:    
(http://i47.tinypic.com/1zv4f40.png)(http://i46.tinypic.com/sbhs9t.png)
Solución: http://pastebin.com/Z6WTYpAS

Solucionado:

1-> Leo Gutiérrez


Título: Re: [Reto Bash] It's a dir?
Publicado por: leogtz en 18 Mayo 2012, 15:53 pm
[ -f "$in" ] && echo -e "Es un archivo regular."
[ -d "$in" ] && echo -e "Es un directorio."

Creo que con eso basta.


Título: Re: [Reto Bash] It's a dir?
Publicado por: Runex en 18 Mayo 2012, 16:46 pm
[ -f "$in" ] && echo -e "Es un archivo regular."
[ -d "$in" ] && echo -e "Es un directorio."

Creo que con eso basta.

Se, esa era la solución, hubiese estado mejor el source entero pero eso era lo único trascendente :)



Título: Re: [Reto Bash] It's a dir?
Publicado por: Puntoinfinito en 21 Febrero 2013, 11:47 am
Yo lo haré en Python, ya que así práctico x)

Código
  1. #! /usr/local/bin/Python-3.3.0/python
  2.  
  3. import os.path
  4. filee = str(input("Put an string >> "));
  5.  
  6. if os.path.isdir(filee):
  7.        print("Es un directorio");
  8.  
  9. elif os.path.isfile(filee):
  10.        print("Es un archivo");
  11. else:
  12.        print("No existe");
  13.  
  14.  


Título: Re: [Reto Bash] It's a dir?
Publicado por: jdomgo3 en 21 Enero 2014, 21:17 pm
Se que llego con casi un año de retraso, pero en shell script hay varias maneras de comprobar si existe un fichero, directorio, link o indiferente. Aquí va mi aportación de lo mas simple:

Código
  1. D=/tmp
  2. A=/$D/archivo.txt
  3. L=/$D/link
  4.  
  5. # Para comprobar si es un directorio
  6. if [ -d $D ];then echo "$D es un directorio.";fi
  7.  
  8. # Para comprobar si es un fichero
  9. if [ -f $A ];then echo "$A es un fichero.";fi
  10.  
  11. # Para comprobar si es un link simbólico
  12. if [ -L $L ];then echo "$L es un link simbólico.";fi
  13.  
  14. # Para comprobar simplemente si existe, sea lo que sea, fichero, directorio o link
  15. if [ -e $A ];then echo "$A existe.";fi


Título: Re: [Reto Bash] It's a dir?
Publicado por: Yoel Alejandro en 6 Febrero 2014, 03:09 am
Pero cuidado, el hecho de que no sea tipo f, no significa que sea un directorio. En UNIX existen tipos de fichero que no son ni directorio ni archivo normal, como links simbólicos, o dispositivos especiales de bloque.


Título: Re: [Reto Bash] It's a dir?
Publicado por: jdomgo3 en 7 Febrero 2014, 07:28 am
En realidad hay 7 tipos definidos en los sistemas BDS y System V que son:

  • (-) Archivo ordinario y tiene la constante asociada en sys/stat.h "S__IFREG"
  • (d) Directorio y tiene la constante asociada en sys/stat.h "S__IFDIR"
  • (p) Cauce nombrado o "fifo" y tiene la constante asociada en sys/stat.h "S__IFIFO"
  • (c) Archivo especial modo carácter y tiene la constante asociada en sys/stat.h "S__IFCHR"
  • (b) Archivo especial modo bloque y tiene la constante asociada en sys/stat.h "S__IFBLK"
  • (l) Enlace simbólico y tiene la constante asociada en sys/stat.h "S__IFLNK"
  • (s) "Shoket" y tiene la constante asociada en sys/stat.h "S__IFSHOCK"

Un saludo.


Título: Re: [Reto Bash] It's a dir?
Publicado por: lufalas en 28 Marzo 2014, 20:23 pm
Código
  1. #!/bin/bash
  2.  
  3. if [ $# -gt 0 ]; then
  4.   if [ -e $1 ]; then
  5.      if [ -f $1 ]; then
  6.         echo "Es un archivo"
  7.      elif [ -d $1 ]; then
  8.         echo "Es un directorio"
  9.      fi
  10.   else
  11.      echo "No existe directorio ni archivo con ese nombre"
  12.   fi
  13. fi