CURSO DESDE 0 DE GNU/LINUX. Versión 2
Entrega 4. Manejando ficheros.
CURSO DESDE 0 DE GNU/LINUX. Versión 2.
Entrega 4. Manejando ficheros.
% make ' ' bang ' ' with gun
make: Fatal error: Don't know how to make target ` '
Creando directorios
Para empezar, después de haber aprendido a movernos por el sistema, lo primero que veremos es cómo crear un directorio, para ello tenemos la siguiente instrucción:
mkdir [opciones] directorio [directorio2 ... directorio 3]
Donde, como podéis apreciar, podemos crear de uno a varios directorios a la vez, así que ahora toca probarlo.
[matados2k@fortaleza matados2k]$ mkdir curso
[matados2k@fortaleza matados2k]$ cd curso
[matados2k@fortaleza curso]$ mkdir dir1 dir2
[matados2k@fortaleza curso]$ ls --color -l
total 8
drwxrwxr-x 2 matados2k matados2k 4096 may 18 16:15 dir1
drwxrwxr-x 2 matados2k matados2k 4096 may 18 16:15 dir2 |
Como podéis ver el uso es bien sencillo, como opciones vamos a destacar '-p' que crea los directorios padres que no existan, como vemos en el siguiente ejemplo.
[matados2k@fortaleza curso]$ mkdir -p ./dir1/NOEXISTO/ops
[matados2k@fortaleza curso]$ cd dir1
[matados2k@fortaleza dir1]$ ls
NOEXISTO
[matados2k@fortaleza dir1]$ cd NOEXISTO/
[matados2k@fortaleza NOEXISTO]$ ls
ops
[matados2k@fortaleza NOEXISTO]$ |
Y por último la opción '-m', que nos da la posibilidad de indicarle los permisos que tendrán nuestros directorios, pero... como aún no lo hemos visto en el curso queda pendiente de que lo probéis vosotros mismos cuando veamos el tema de los permisos. La opción -m va seguido del modo antes de poner los directorios.
No me gustan los directorios
Ya que hemos aprendido a crearlos hay que aprender también la opción contraria, y ya que mkdir venía de make directory ahora necesitamos un remove directory:
rmdir [opciones] directorio [directorio2 ... directorio 3]
Así que lo que nos queda es comenzar a probarlo:
[matados2k@fortaleza NOEXISTO]$ rmdir ops
[matados2k@fortaleza NOEXISTO]$ cd ..
[matados2k@fortaleza dir1]$ cd ..
[matados2k@fortaleza curso]$ rmdir ./dir1/NOEXISTO/
[matados2k@fortaleza curso]$ ls
dir1 dir2
[matados2k@fortaleza curso]$ rmdir dir1 dir2
[matados2k@fortaleza curso]$ ls
[matados2k@fortaleza curso]$ |
Como podéis ver se pueden borrar varios a la vez, igual que con mkdir creábamos varios a la vez. En este caso, para rmdir solo comentaré una opción interesante y es '-p'. Esta opción lo que hace es borrar recursivamente la ruta completa que le indiquemos, por ejemplo, si tenemos /a/b/c un 'rmdir -p /a/b/c' es equivalente a 'rmdir /a/b/c' + 'rmdir /a/b' + rmdir 'a'. Vayamos al ejemplo:
[matados2k@fortaleza curso]$ mkdir -p ./dir1/uno/dos
[matados2k@fortaleza curso]$ ls
dir1
[matados2k@fortaleza curso]$ ls dir1
uno
[matados2k@fortaleza curso]$ ls ./dir1/uno
dos
[matados2k@fortaleza curso]$ rmdir -p dir1/uno/dos
[matados2k@fortaleza curso]$ |
Tampoco me gusta teclear tanto
Esto es algo que quizás debí contar en la entrega anterior. El intérprete de comandos, para facilitarnos nuestro trabajo, rellena por nosotros con la opción más lógica para los comandos y los archivos, simplemente empezando a escribirlos y pulsando tabulador. Por ejemplo, no nos acordamos de cómo se escribía el comando 'mkdir' y solo nos acordamos de 'mkd' pulsamos el tabulador y nos lo rellenara automáticamente o nos indicará qué comandos empiezan por 'mdk'. En mi caso tabulo y me pita, no me sale nada, vuelvo a tabular y ahora sí me da los comandos que empiezan por mdk:
[matados2k@fortaleza matados2k]$ mkd (Una tabulación y nada, dos y tachan ...)
mkdep mkdir mkdirhier
[matados2k@fortaleza matados2k]$ mkd |
Ahora si añado una 'i' me completa con 'mkdir', ya que 'mkdir' está contenido dentro del nombre de 'mkdirhier'. Ahora tenemos lo que buscábamos, pero si volvemos a tabular nos escribirá 'mkdirhier'. Con lo que llegamos a la conclusión de que rellenará cuando: a) No hay otro comando que coincida con la cadena que hayamos escrito, y b) Cuando el nombre de un comando esté contenido en otro pudiendo seguir tabulando para llegar al otro.
Cuando existen muchas posibilidades, tantas que no caben en pantalla, antes nos preguntará si mostrarlo o no. Por ejemplo, ejecutar:
[matados2k@fortaleza matados2k]$ m
Display all 190 possibilities? (y or n)
[matados2k@fortaleza matados2k]$ m |
En mi caso he contestado con 'n' ya que no quiero ver la lista completa. Por ejemplo, si quisiéramos ver todos los ejecutables accesibles no tendríamos más que tabular dos veces sin escribir nada.
[matados2k@fortaleza matados2k]$
Display all 2809 possibilities? (y or n)
[matados2k@fortaleza matados2k]$ |
Todo esto es completamente aplicable a los ficheros que indicamos a nuestros comandos, probad a escribir 'cd /e' y tabular.
Copiando voy y copiando vengo
Y una vez visto esto llegamos al momento en el que vamos a crear copias de los archivos, para ello tenemos el siguiente comando:
cp [Opciones] Origen Destino
El uso es bien sencillo, sólo hay que indicar el origen y el destino de lo que queremos copiar:
[matados2k@fortaleza curso]$ cp /etc/termcap .
[matados2k@fortaleza curso]$ |
Como vemos no se nos pide confirmación para copiar, y pudiera ocurrir que nos hubiésemos equivocado y sobreescribiéramos un archivo que ya tuviera sin que nos pregunte, ya que 'cp' también renombra incluyendo el nombre en el destino. Veamos un ejemplo:
[matados2k@fortaleza curso]$ cp /etc/shells ./termcap
[matados2k@fortaleza curso]$ ls
dir1 termcap
[matados2k@fortaleza curso]$ |
Como vemos hemos copiado el archivo 'shells' que está en '/etc' a nuestro directorio actual y con el nombre 'termcap', con lo cual hemos sobreescrito nuestro fichero original y eso puede ser algo que no deseemos. Para hacer que nos pregunte antes de copiar usamos la opción '-i' como vemos en el ejemplo:
[matados2k@fortaleza curso]$ cp -i /etc/termcap .
cp: ¿sobreescribir `./termcap'? (s/n) s
[matados2k@fortaleza curso]$ |
Bueno, ya hemos recuperado nuestro fichero original, menos mal ;) , pero 'cp' es aún más versátil, ya que con la opción '-r' podemos copiar directorios enteros aunque es preferible usar la opción '-R' porque '-r' no tiene un comportamiento definido (o sea que puede pasar cualquier cosa) si se copian ficheros que no son normales como pueden ser un dispositivo. Veamos un ejemplo:
[matados2k@fortaleza curso]$ mkdir copia_de_bin
[matados2k@fortaleza curso]$ cp -r /bin ./copia_de_bin
[matados2k@fortaleza curso]$ cd copia_de_bin/
[matados2k@fortaleza copia_de_bin]$ ls
bin
[matados2k@fortaleza copia_de_bin]$ cd bin
[matados2k@fortaleza bin]$ ls
arch dmesg ipcalc ping tcsh
.......... (omito archivos para que no ocupe tanto)...........
df igawk pgawk tar
[matados2k@fortaleza bin]$ |
Y para rematar sólo queda comentar que 'cp' también tiene la opción '-p', que es igual que en 'mkdir' y 'rmdir' así que sobran las explicaciones. Por cierto, 'cp' admite más de un origen, así que puedes copiar varios archivos en una sola línea a un mismo destino.
Y borrando por el camino yo me entretengo
Si 'cp' viene de copy entonces algunos ya habréis adivinado qué orden es la de borrar:
rm [opciones] lista_de_ficheros_a_borrar
Veamos el uso más simple de rm:
[matados2k@fortaleza curso]$ cp termcap teborrare
[matados2k@fortaleza curso]$ ls
copia_de_bin dir1 teborrare termcap
[matados2k@fortaleza curso]$ rm teborrare
[matados2k@fortaleza curso]$ ls
copia_de_bin dir1 termcap
[matados2k@fortaleza curso]$ |
Igual que 'cp' , 'rm' también tiene la opción '-i' y también puede borrar directorios enteros con '-r' y '-R' (en este caso ambos son iguales), aunque también se borran con '-d', pero '-d' no tiene un carácter recursivo y deja desenlazados los ficheros que contiene (o sea que es una cagada, así que mejor no usarla) lo que quiere decir que se quedan como diríamos sin ningún directorio que los contenga, por lo que hay que tener mucho cuidado con esta opción.
[matados2k@fortaleza curso]$ rm -ri copia_de_bin dir1
rm: ¿descender al directorio `copia_de_bin'? (s/n) s
rm: ¿descender al directorio `copia_de_bin/bin'? (s/n) s
..........
rm: ¿borrar el enlace simbólico `copia_de_bin/bin/csh'? (s/n) s
rm: ¿borrar el fichero regular `copia_de_bin/bin/tcsh'? (s/n) s
rm: ¿borrar el directorio `copia_de_bin/bin'? (s/n) s
rm: ¿borrar el directorio `copia_de_bin'? (s/n) s
rm: ¿descender al directorio `dir1'? (s/n) s
rm: ¿descender al directorio `dir1/uno'? (s/n) s
rm: ¿borrar el directorio `dir1/uno/dos'? (s/n) s
rm: ¿borrar el directorio `dir1/uno'? (s/n) s
rm: ¿borrar el directorio `dir1'? (s/n) s
[matados2k@fortaleza curso]$ |
Solo queda apuntar que, tanto 'cp' como 'rm', si '-i' hace que pregunte la opción contraria es '-f' que no preguntará nada de nada.
Estamos en movimiento
Venga, que seguro que algunos ya se han imaginado que para mover es:
mv [Opciones] origen destino
Bueno, 'mv' equivale a copiar y borrar, y al igual que 'cp' admite varios orígenes y un directorio destino. Así que con los ejemplos vistos antes con 'cp' sobran los ejemplos, salvo para el caso en que el origen y el destino son el mismo, pero en el destino se indica un nombre de fichero con lo cual lo que hacemos es renombrar:
[matados2k@fortaleza curso]$ ls
termcap
[matados2k@fortaleza curso]$ mv termcap perro
[matados2k@fortaleza curso]$ ls
perro
[matados2k@fortaleza curso]$ |
Como veis el directorio origen y destino es el mismo, por lo cual en el destino hemos indicado un cambio de nombre.
Como 'mv' no tiene opción que digamos interesantes salvo quizás '-i' y '-f' (que es igual que en 'cp' y 'rm') pues damos por finalizada esta entrega, que por cierto se ha hecho muy larga. En la próxima entrega aprenderemos a usar los caracteres comodín, cómo consultar la ayuda de Linux y el historial de órdenes.
Última hora.
Si te gusta la propuesta que lanzo a todos y quieres participar, envíame la extensión que creas conveniente a cualquiera de los e-mail que indico en los documentos, o comenta que quieres participar.
Agradecimientos: · Revisión del documento: karuchi (Carolina García).
Página oficial y dominio de mi propiedad http://matados2k.es
Matados'2k Usuario y moderador de foro.noticias3d.com
Matados'2k Usuario y moderador de www.sinuh.org
matados2k (arroba) gmail (punto) com
Este documento está sometido a la licencia de creative commons en su variante “Reconocimiento-NoComercial-SinObraDerivada 2.1 España” . Es de agradecer que se comunique al autor el uso de este documento en otro medio y se debe incluir de forma obligatoria este recuadro y los agradecimientos. |
Copyright © por Computer Facil ,Derechos Reservados.