Diferencia entre revisiones de «Gestión de archivos»
Sin resumen de edición |
Sin resumen de edición |
||
Línea 75: | Línea 75: | ||
*<code>-R </code>ó<code>--recursive</code> <code>→</code> Actúa recursivamente, esto cuando fuente son uno o más directorios, con esta opción copiará los archivos y directorios que contenga <code>fuente</code>. | *<code>-R </code>ó<code>--recursive</code> <code>→</code> Actúa recursivamente, esto cuando fuente son uno o más directorios, con esta opción copiará los archivos y directorios que contenga <code>fuente</code>. | ||
*<code>-f </code>ó <code>--force </code><code>→</code>Fuerza sobreescritura si en el directorio <code>destino</code> se encontraran ficheros con el mismo nombre que los de<code>fuente.</code> | *<code>-f </code>ó <code>--force </code><code>→</code>Fuerza sobreescritura si en el directorio <code>destino</code> se encontraran ficheros con el mismo nombre que los de<code> fuente.</code> | ||
*<code>-u </code>ó <code>--update </code><code>→</code>Realiza la copia sólo si el archiv<code>o fuente </code>es más nuevo que el archivo en el<code>directorio destino </code>ó si este no existe en tal directorio<code>.</code> | *<code>-u </code>ó <code>--update </code><code>→</code>Realiza la copia sólo si el archiv<code>o fuente </code>es más nuevo que el archivo en el<code> directorio destino </code>ó si este no existe en tal directorio<code>.</code> | ||
*<code>-i </code>ó<code>--interactive </code><code>→</code>Cada que encuentra archivos del mismo nombre se preguntará antes de sobreescribir. | *<code>-i </code>ó<code>--interactive </code><code>→</code>Cada que encuentra archivos del mismo nombre se preguntará antes de sobreescribir. | ||
*<code>-p </code>ó<code>--preserve </code><code>→</code><code>D</code>e tener los privilegios de hacerlo, se conserva la pertenencia y permisos de los archivos fuenteal copiarlos a<code>destino, </code>si no se usa esta opción, por defecto cp copia los archivos con los permisos y pertenencia '''estándar '''del usuario que usa cp. | *<code>-p </code>ó<code>--preserve </code><code>→</code><code>D</code>e tener los privilegios de hacerlo, se conserva la pertenencia y permisos de los archivos fuenteal copiarlos a <code>destino, </code>si no se usa esta opción, por defecto cp copia los archivos con los permisos y pertenencia '''estándar '''del usuario que usa cp. | ||
Ejemplos: | Ejemplos: | ||
Línea 110: | Línea 110: | ||
=== find<br/> === | === find<br/> === | ||
El comando para "encontrar" archivos más usado es find, este comando es muy potente ya que contiene una gran cantidad de opciones de búsqueda, sin embargo existen otros comandos como locate, whereis, type ó wich que | El comando para "encontrar" archivos más usado es find, este comando es muy potente ya que contiene una gran cantidad de opciones de búsqueda, sin embargo existen otros comandos como locate, whereis, type ó wich que también sirven para encontrar archivos u obtener información de otros archivos através de ellos. | ||
<pre>find [ruta] [expresión]</pre> | <pre>find [ruta] [expresión]</pre> | ||
*<code>ruta →</code> Es el o los directorios donde se buscará el archivo. | *<code>ruta →</code> Es el o los directorios donde se buscará el archivo. | ||
Línea 119: | Línea 119: | ||
*<code>-name</code> → Buscar por '''nombre de archivo''' seguido de un criterio de búsqueda, este criterio puede incluir comodines o solamente el nombre del archivo. | *<code>-name</code> → Buscar por '''nombre de archivo''' seguido de un criterio de búsqueda, este criterio puede incluir comodines o solamente el nombre del archivo. | ||
*<code>-size →</code> Buscar por '''tamaño del archivo''' seguido de un número en bytes, se puede usar k para kilobytes. | *<code>-size →</code> Buscar por '''tamaño del archivo''' seguido de un número en bytes, se puede usar k para kilobytes. | ||
*<code>-type →</code> Buscar por'''tipo de fichero''' donde; f = archivo,d = directorio, l = enlace simbólico, etc (ver manual de find para más opciones) | *<code>-type →</code> Buscar por '''tipo de fichero''' donde; f = archivo,d = directorio, l = enlace simbólico, etc (ver manual de find para más opciones) | ||
*<code>-user →</code> Buscar por '''usuario dueño del archivo '''seguido del ID de usuario. | *<code>-user →</code> Buscar por '''usuario dueño del archivo '''seguido del ID de usuario. | ||
*<code>-perm →</code> Buscar por '''permiso específico''' seguido del permiso en número octal o cadena simbólica. | *<code>-perm →</code> Buscar por '''permiso específico''' seguido del permiso en número octal o cadena simbólica. | ||
Línea 129: | Línea 129: | ||
Adicionalmente existe la opción <code>-exec</code> que amplia las funcionalidades de find: | Adicionalmente existe la opción <code>-exec</code> que amplia las funcionalidades de find: | ||
<pre>find [ruta] [expresión] [-exec {} \;]</pre> | <pre>find [ruta] [expresión] [-exec <comando> {} \;]</pre> | ||
por ejemplo: | por ejemplo: | ||
<pre># find /home/invitado/ -type f -name "*.txt" -exec cp --preserve {} ~/ \;</pre> | <pre># find /home/invitado/ -type f -name "*.txt" -exec cp --preserve {} ~/ \;</pre> | ||
Primero encontrará todos los archivos simples con un nombre que acabe en ".txt" en /home/invitado/, mediante <code>-exec</code> se ejecutará el comando <code>cp</code> que los copiará preservando sus premisos por usarse la opción <code>--preserve</code>. Usando <code>-exec</code>, <code>{}</code> representa la salida de find que puede ser "enviada" a otro comando en este caso<code>cp</code> como su primer argumento. | Primero encontrará todos los archivos simples con un nombre que acabe en ".txt" en /home/invitado/, después mediante <code>-exec</code> se ejecutará el comando <code>cp</code> que los copiará preservando sus premisos por usarse la opción <code>--preserve</code>. Usando <code>-exec</code>, <code>{}</code> representa la salida de <code>find</code> que puede ser "enviada" a otro comando en este caso <code>cp</code> como su primer argumento. | ||
Existe el comando <code>xargs</code> diseñado para tomar cada línea de salida de un comando anterior como argumento hacia otro comando (xargs y las tuberías " | " se describirán más adelante), pudiendo también usarlo conjuntamente con una tubería para hacer esta tarea | Existe el comando <code>xargs</code> diseñado para tomar cada línea de salida de un comando anterior como argumento hacia otro comando (xargs y las tuberías " | " se describirán más adelante), pudiendo también usarlo conjuntamente con una tubería para hacer esta tarea: | ||
<pre>$ find /home/invitado -maxdepth 2 -type f -name "lis*" | xargs rm -v</pre> | <pre>$ find /home/invitado -maxdepth 2 -type f -name "lis*" | xargs rm -v</pre> | ||
Al encontrar los archivos en una profundiad de 2 directorios como máximo de todos los archivos que empiecen con "lis", con <code>xargs</code> cada linea de salida se enviará como argumento al comando <code>rm</code> que borrará estos archivos informando de lo que se hace por seguirle la opción <code>-i</code> | Al encontrar los archivos en una profundiad de 2 directorios como máximo de todos los archivos que empiecen con "lis", con <code>xargs</code> cada linea de salida se enviará como argumento al comando <code>rm</code> que borrará estos archivos informando de lo que se hace por seguirle la opción <code>-i</code> | ||
Línea 146: | Línea 146: | ||
== Otros sitios de ayuda<br/> == | == Otros sitios de ayuda<br/> == | ||
*http://download.savannah.gnu.org/releases/lpi-manuals/ (manuales LPI libres) | *[http://download.savannah.gnu.org/releases/lpi-manuals/ http://download.savannah.gnu.org/releases/lpi-manuals/] (manuales LPI libres) | ||
== Continuar con el curso<br/> == | == Continuar con el curso<br/> == | ||
*⇒[http://wiki.hacklab.org.bo/index.php/N%C3%BAcleo_GNU/Linux#Contenido Sigue con este curso aquí] | *⇒[http://wiki.hacklab.org.bo/index.php/N%C3%BAcleo_GNU/Linux#Contenido Sigue con este curso aquí] |
Revisión del 21:27 28 ene 2014
El S.O: GNU/Linux es escencialmente una colección de archivos organizados.
Estos archivos se caraterizan por tener ciertos permisos y atriburos que ayudan al sistema a informarse de su releevancia. Por eso, gestionar los archivos ya sean del sistema y usuario es una tarea crucial.
Los entornos gráficos de escritorio permiten la manipulación de archivos y permisos de archivos de manera básica. Sin embargo si por ejemplo queremos hacer gestión de archivos desde programas externos, scripts o aplicaciones escritas por nosotros mismos, es necesario aprender como se gestionan los archivos desde la línea de comandos es decir, aprender a manejar e invocar a los programas que realizan estas tareas.
Consideraciones importantes
Al trabajar desde una línea de comandos existen símbolos que tienen significado al mostrarse en la pantalla. Los emuladores de terminal en la mayor parte de las distribuciones usan en la terminal bash. Si se abre una lo primero que se muestra es el prompt que bajo condiciones normales muestra lo siguiente:
invitado@gensu-D5:~$
Donde:
invitado = nombre del usuario logueado en esta terminal @gensu-D5: = nombre del computador
Justo después del símbolo " :
" viene la ubicación o directorio donde "apunta" la terminal en este caso el símbolo "~
" es equivalente a la carpeta propia del usuario que en este caso es /home/invitado
Finalmente viene el símbolo " $
" que significa que el usuario que controla esta terminal es un usuario con privilegios limitados tiene restricciones y no puede hacer cambios significativos al sistema.
Si el símbolo fuese " # " significaría que el usuario que controla esta terminal es un superusuario capaz de hacer cambios importantes en la computadora.
► Entonces los símbolos$
y #
indican que tipo de usuario tiene el control sobre la terminal al colocar comandos.
En muchas distribuciones se usa el comando sudo
que permite realizar tareas como si se fuese otro usuario, se coloca sudo
seguido del comando a ejecutarse y después de presionar enter
se debe introducir la contraseña del usuario que autoriza las acciones.
Para introducir comandos como el usuario root que es el superusuario y tiene control total se puede hacer con sudo su, después
introduciendo después la contraseña de root
. También se logra con su
seguido del nombre de usuario (en este caso root o de otro superusuario) y después la contraseña.
Comandos de gestión de archivos
Estos programas que realizan la gestión de archivos en sistemas tipo UNIX se llaman comandos de gestión de archivos, estos se usan para listar, copiar, borrar, mover y crear archivos y/o directorios.
ls
El comando ls
viene de "listar" y lo que hace es listar los archivos de cierto directorio, es el que permite ver los nombres de los archivos y directorios. ls también puede mostrar
detalles importantes de los archivos y tiene una gran caontidad de opciones. Su sintaxis es la siguiente
ls [opciones] [fichero ó directorio]
Para ver más opciones de este comando se escribe: ls --help
ó man ls
Si no se especifica opciones o ficheros ls
lista de manera el contenido del directorio en él cual se encuentra actualmente la terminal.
ls
es muy útil y tiene gran cantidad de opciones, algunas importantes son:
-l
→
Muestra un listado largo, esta opción permite también ver los permisos de cada archivo (se verá más adelante)-a
→
Muestra también los archivos ocultos (que empiezan con ".")-R
→
Muestra recursivamente.- -h
→
En combinación con otras opciiones como-l
o-g
, muestra el tamaño de cada fichero de modo entendible para el ser humano (K, M, G) bytes.
ls
en combinación con grep
es una potente herramienta para ver archivos. Por ejemplo si escribimos:
$ls -lah
Hará un listado de todos los archivos y directorios dentro el directorio actual con detalles de los permisos de cada uno y mostrando su tamaño de forma entendible. Si se aumenta -R el listado tambíen mostrará a los subdirectorios si existen.
Por supuesto que también se puede usar así:
$ls /usr/bin
Que mostrará el contenido dentro el duirectorio/usr/bin
que corresponde a los ejecutables de los programas del usuario.
cd
Este es el comando que se usa para poscisionarse en un directorio y probablemente cd viene de de "change directory" (cambiar directorio) por eso es muy ampliamente usado.
Como dijimos antes al abrir una terminal esta usualmente "apunta" a cierto directorio que por lo general es ~
que es lo mismo que /home/usuario
o la carpeta personal del usuario que abrió la terminal. Pero no todas las tareas se hacen en ese directorio es necesario moverse para eso esta cd
cuya sintaxis es:
cd [opcion] [directorio]
Basta con escribir cd seguido del directorio para que la terminal ahora apunte a ese directorio, por ejemplo:
$cd /var/lib
Algunos directorios no pueden accederse con cd siendo usuario estándar ($) si los permisos lo requieren será necesario logearse como superusuario o usar sudo cd [directorio]
cp
cp
viene de copy (copiar) y sierve para eso, copiar archivos o directorios y la sintaxis es:
cp [opciones] fuente destino
Donde:
fuente
→
es uno o más archivos, aunque también puede ser un directorio si se usan ciertas opciones.destino
→
es un directorio a donde se copiarán los archivos fuente, el directorio destino debe existir.
Las opciones comunes usadas con cp son:
-R
ó--recursive
→
Actúa recursivamente, esto cuando fuente son uno o más directorios, con esta opción copiará los archivos y directorios que contengafuente
.-f
ó--force
→
Fuerza sobreescritura si en el directoriodestino
se encontraran ficheros con el mismo nombre que los defuente.
-u
ó--update
→
Realiza la copia sólo si el archivo fuente
es más nuevo que el archivo en eldirectorio destino
ó si este no existe en tal directorio.
-i
ó--interactive
→
Cada que encuentra archivos del mismo nombre se preguntará antes de sobreescribir.-p
ó--preserve
→
D
e tener los privilegios de hacerlo, se conserva la pertenencia y permisos de los archivos fuenteal copiarlos adestino,
si no se usa esta opción, por defecto cp copia los archivos con los permisos y pertenencia estándar del usuario que usa cp.
Ejemplos:
$cp archivo1 archivo2
copia el archivo1
en el mismo directorio donde "esta" la terminal pero el nombre de la copia es archivo2
.
$cp ~/dir2/dir3/archivo1 archivo2 ~/dir1/
Copia el ~/dir2/dir3/archivo1
y archivo2
(qué esta en el directorio donde "apunta" la terminal) a ~/dir1/
.
$cp -R /var/games/ ~/
Copia todo el directorio más el contenido (si es posible) de /var/games
a ~/
cp
también puede operar con enlaces.
mv
Se usa para mover archivos o directorios de un lugar a otro, para mover directorios con mv basta con indicar que es un directorio, esto se logra colocando al final el caracter " / " que la terminal interpreta como directorio por ejemplo:
$mv Imágenes/Escuela/ Imágenes/2014/
Mueve la carpeta Imágenes/Escuela a la carpeta Imágenes/2014. La sintaxis de mv es similar a cp y las opciones comunes son también similares con la excepción de que --preserve , --archive
y--recursive
no aplican a mv
. También se pueden usar varios argumentos para mover teniendo en cuenta que el último argumento será el destino, por ejemplo:
$mv Imágenes/Escuela/ Imágenes/2014/ foto1.png /tmp/cookie1.c57MWz Documentos/carpeta1/
rm
El comando para eliminar archivos es rm de "remove", al igual que cp y mv posee las mismas opciones a excepcción de --preserve, --archive o --update. Su sintaxis es:
rm [opciones] archivos
Ejemplos:
$rm archivo1
Elimina el archivo1.
$rm -RI Imágenes/1998/
Elimina el directorio 1998 dentro de Imágenes preguntando cada 3 eliminaciones por estar -I,
esta opción permite controlar equivocaciones. La opción -i
hace una pregunta antes de eliminar cada archivo.
Usar
rm
con permisos de superusuario es peligroso cuando se están tratando archivos importantes como archivos de sistema o de configuración, si no se trata de un archivo dentro el directorio del usuario es mejor informarse de la función de un archivo antes de eliminarlo.
find
El comando para "encontrar" archivos más usado es find, este comando es muy potente ya que contiene una gran cantidad de opciones de búsqueda, sin embargo existen otros comandos como locate, whereis, type ó wich que también sirven para encontrar archivos u obtener información de otros archivos através de ellos.
find [ruta] [expresión]
ruta →
Es el o los directorios donde se buscará el archivo.expresión →
Representa el criterio de búsqueda
Algunas opciones comunes en find son:
-name
→ Buscar por nombre de archivo seguido de un criterio de búsqueda, este criterio puede incluir comodines o solamente el nombre del archivo.-size →
Buscar por tamaño del archivo seguido de un número en bytes, se puede usar k para kilobytes.-type →
Buscar por tipo de fichero donde; f = archivo,d = directorio, l = enlace simbólico, etc (ver manual de find para más opciones)-user →
Buscar por usuario dueño del archivo seguido del ID de usuario.-perm →
Buscar por permiso específico seguido del permiso en número octal o cadena simbólica.-maxdepth →
Máxima profundidad de búsqueda, seguido de un número n se limita a sólo buscar en n directorios de profunidad, si fuese 1 buscaría en el directorio especificado sin entrar a ningún otro subdirectorio.
Ejemplos:
$find /usr/include/ -name "*.h"
Encuentra todos los archivos que tiene terminan en ".h" dentro el directorio /usr/include/
Adicionalmente existe la opción -exec
que amplia las funcionalidades de find:
find [ruta] [expresión] [-exec <comando> {} \;]
por ejemplo:
# find /home/invitado/ -type f -name "*.txt" -exec cp --preserve {} ~/ \;
Primero encontrará todos los archivos simples con un nombre que acabe en ".txt" en /home/invitado/, después mediante -exec
se ejecutará el comando cp
que los copiará preservando sus premisos por usarse la opción --preserve
. Usando -exec
, {}
representa la salida de find
que puede ser "enviada" a otro comando en este caso cp
como su primer argumento.
Existe el comando xargs
diseñado para tomar cada línea de salida de un comando anterior como argumento hacia otro comando (xargs y las tuberías " | " se describirán más adelante), pudiendo también usarlo conjuntamente con una tubería para hacer esta tarea:
$ find /home/invitado -maxdepth 2 -type f -name "lis*" | xargs rm -v
Al encontrar los archivos en una profundiad de 2 directorios como máximo de todos los archivos que empiecen con "lis", con xargs
cada linea de salida se enviará como argumento al comando rm
que borrará estos archivos informando de lo que se hace por seguirle la opción -i
Algunos Comodines
- , ? , [], etc
Directorios Importantes
Otros sitios de ayuda
- http://download.savannah.gnu.org/releases/lpi-manuals/ (manuales LPI libres)