Ficheros en linux

Visualizando ficheros y directorios

Para ver el contenido de un fichero podemos hacerlo con cat pero este nos mostratar todo el archivo de una vez si queremos ir viendolo por partes podemos hacerlo con more y con la tecla enter vamos bajando.

La evoucion del comando es less llamado asi por less is more esta nos ofrece comandos adicionales para movernos por el fichero, podemos ver los comandos pulsando h. Por ejemplo pasamos a la pagina siguiente con la barra espiadora y con la b a la pagina anterior. Otra utiliza es usando / para buscar una palabra en la pagina actual con la letra n va buscando la mismas coincidencias en las siguientes paginas.

Copiando ficheros y directorios

Copiando ficheros

Usamos cp : cp ficheroOriginal ficheroCopia

Si el segundo argumento tiene un nombre de archivo que ya exita, este sera sobre escrito por el original.

cp no nos preguntar por defaut si queremos sobrescribir.

Para que nos pregunte tenemos que hacer cp -i (-i es de -interactive) de esta manera antes de sobrescribir nos preguntara.

Tambien podemos copiar hacia otras rutas cp fichero1.txt /Documents/ficheros/

Copiando directorios

Tenemos que usar el flag -r de recursivo. Entonces hariamos cp -r Carpeta1 Carpeta2 de esta manera dentro de Carpeta2 estaria ahora Carpeta1.

Moviendo ficheros y directorios

Hacemos mv fichero directorio por ejemplo mv mi-fichero.txt /Documents/ Tambien podemos mover un directorio entero.

En este caso a diferencia de cp no hace falta ponerle -r si el directorio contiene muchas anidaciones.

Cambiando el nombre del fichero o directorio con mv

Hacemos mv fichero1.txt fichero2.txt y si vemos con ls fichero1.txt ya no esta y el contenido lo tienen ahora fichero2.txt

Validando mv con -u

El flag -u hara que si al momento de mover un fichero o directorio ya existe en el lugar de destino un archivo o directorio con el mismo nombre, este revisara su fecha de modificacion, si el archivo que queremos mover es mas viejo , sera omitido.De esta manera nos aseguramos de no pisar registros mas nuevos con otros mas antiguos. mv -u fichero1.txt /Documentos

Eliminando archivos y directorios

Eliminando archivos

Para hacerlo tenemos que usar rm : rm fichero1.txt

Tene en cuenta que no nos pregutara si estamso seguros, lo eliminara inmediatamente.

Podemos elimiar varios archivos a la vez asi :rm fichero1.txt fichero2.txt

Eliminado directorios

Si intentamos hacer directamente rm directorio/ nos dara error, tenemos que hacer uso del flag -r (recursivo) rm -r directorio/

Tenemos disponible el flag rf (f de force) lo que hace que elimine todo sin tener ningun tipo de consideracion. Esto es peligroso si se ejecuta como administrador ya que si hacemos rm -rf / sobre la raiz, estariamos eliminando toda nuestra raiz del sistema operativo.

Busqueda de ficheros

Para esta tarea hacemos uso de find lo que tenemos que pasarle como argumento seria find directorio-donde-buscar/ otro-directorio-opcional/ -name auth.log

El flag name indica que quermos buscarlo por nombre

Por ejemplo si estamos parados en ~ (nuestro directorio raiz del usuario logeado) podemos poner find /var/log /home/nahueldev23 -name auth.log

Veremos algo como esto:

find: ‘/var/log/private’: Permission denied
find: ‘/var/log/samba/cores’: Permission denied
find: ‘/var/log/sssd’: Permission denied
find: ‘/var/log/gdm3’: Permission denied
find: ‘/var/log/speech-dispatcher’: Permission denied
/var/log/auth.log

Esto es asi porque nuetro usuario no tiene permisos para realizar esta accion sobre esa ruta.

Si ignoramos esos “errores” veremos que dice /var/log/auth.log esta en la ruta exacta.

Si hubieramos puesto la ruta anterior var/ tambien nos encuentra el fichero.

Ver todos estos erroes en medio es molesto. Por ahora no tenemos un opcion que nos permita emitir esa salidas asi que como alternativa podemos hacer lo siguiente. find ./var -name auth.log 2> /dev/null, lo que hace es redirigir la salida de error que sale en la pantalla a un fichero donde va a eliminarse.

Mejor dicho /dev/null es un dispositivo especial de descarte, por lo que practivamente lo estariamos moviendo hacia la nada.

Buscando fichero en el directorio actual

Si quisieramos buscar un fichero en el directorio actual lo hariamos asi find . -name auth.log

Obteniendo un poco mas de informacion.

Podemos al comando anterior agregarle -ls de la manera siguiente find /var -name auth.log -ls 2> /dev/null

Usando wildcard para la busqueda

Podemos buscar por ejemplo cualquier cosa que termine de cierta manera. Por ejemplo todos los ficheros que terminen en .log. Lo hacemos de la siguiente manera.find /var/log -name '*.log' 2> /dev/null

Es importante en el comando anterior poner la busqueda entre ”

Buscando directorios

Los directorios son un tipo de fichero especial, por lo cual podemos seguir usando find con la ayuda de el flag -type d podemos lograrlo. Seria: find / -name log -type d de esta manera estaria buscando en todos nuestros directorios / una Carpeta llamado log.

Buscando un fichero o directorio que haya sigo creado por un usuario en concreto

find /var/log -name '*' -user nahueldev23 2> /dev/null con '*' decimos que nos busque cualquier archivo que haya sido creado por el usuario con -user