M. Alumno 2 Linux Introduccion
M. Alumno 2 Linux Introduccion
M. Alumno 2 Linux Introduccion
Directorios y archivos
Los directorios son contenedores que van a incluir la información de los objetos, tanto de directorios como de otros archivos. En Linux,
el directorio de mayor jerarquía es la raíz “/”, a partir de ahí surgen todos los demás directorios y archivos. Un archivo, por otro lado,
fes el que va a contener información; en cambio, un directorio, nos da un orden de cómo vamos a poder ver todos los archivos y/o
directorios. Para poder especificar una ruta se antepone ”/” porque todo nace de ahí; en cambio, si quisiéramos nombrar un archivo de
nuestro home, la ruta completa del archivo sería la siguiente: /home/nombre_usuario/test.sh No debemos confundir root filesystem con
root home directory.
Inodos
La forma en que el sistema de archivo identifica a los objetos es mediante los inodos. Estos traen información acerca de los objetos;
cada uno tiene distintas propiedades, que, dependiendo de su uso, va a cambiar el valor que contenga (por ejemplo: datos que posee,
ubicación, fecha de modificación, tamaño, datos seguridad, etc).
El comando stat es de gran utilidad para mostrar esta información, por ejemplo:
# stat /etc/resolv.conf
Fichero: /etc/resolv.conf
Tamaño: 125 Bloques: 8 Bloque E/S: 4096 fichero regular
Dispositivo: fd00h/64768d Nodo-i: 1050548 Enlaces: 1
Acceso: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Acceso: 2019-03-21 14:32:29.532283100 -0300
Modificación: 2019-03-21 14:32:29.432282543 -0300
Cambio: 2019-03-21 14:32:29.439282582 -0300
Creación: -
COMANDOS BÁSICOS
Comando ls
El comando ls se utiliza para mostrar el contenido de directorios, como así también ver propiedades de los distintos archivos.
Sintaxis:
ls [ opciones ] [archivo1] [archivo2] [archivoN]
ls [opciones] [directorio1] [directorio2]
Ejemplo:
# ls -ltr /etc/X11/
total 24
drwxr-xr-x. 2 root root 4096 feb 3 2016 applnk
drwxr-xr-x. 2 root root 4096 ago 11 2016 fontpath.d
-rw-r--r-- 1 root root 493 dic 14 08:27 Xresources
-rw-r--r-- 1 root root 547 dic 14 08:27 Xmodmap
drwxr-xr-x. 2 root root 4096 mar 15 15:38 xorg.conf.d
drwxr-xr-x. 5 root root 4096 abr 8 20:51 xinit
Comando cp
El comando cp se utiliza para copiar archivos/directorios.
Sintaxis:
# cp archivo1 archivo2
# ls -l archivo2
-rw-r--r-- 1 root root 0 Jun 5 05:41 archivo2
Presten atención al error que aparece. Esto se debe a que le dimos un path (es decir, una ruta) absoluto y el directorio dir1 no existe
en /dir1 sino que está en /root/dir1 porque fue creado en nuestro home.
Luego al ejecutar ls al directorio dir1, tampoco usamos un path absoluto (/root/test/dir1, sino ls -l dir1) porque, precisamente, estamos
parados dentro de un directorio que contiene a “dir1”.
Con el comando pwd, nos dirá en qué directorio estamos parados.
# pwd
/root/test
# ls -l
total 4
-rw-r--r-- 1 root root 0 Jun 5 05:41 archivo1
-rw-r--r-- 1 root root 0 Jun 5 05:41 archivo2
drwxr-xr-x 2 root root 4096 Jun 5 05:43 dir
Ejemplos:
Funcionamiento de la opción -v
# cp -v archivo1 archivo2
`archivo1' -> `archivo2'
Aquí agregamos el -i ,para que vean que nos preguntará si queremos sobreescribir.
# cp -i archivo1 archivo2
cp: overwrite `archivo2'?
# ls -l archivo1
-rw-r--r-- 1 root root 0 Jun 5 05:41 archivo1
# date
Sun Jun 5 05:54:02 ART 2011
Ahora lo copiamos
# cp -p archivo1 nuevoarch
# ls -l nuevoarch
-rw-r--r-- 1 root root 0 Jun 5 05:41 nuevoarch
Y como ven, el archivo nuevo conserva la misma fecha; distinto sería si hubiésemos hecho esto.
# cp archivo1 narch
# ls -l narch
-rw-r--r-- 1 root root 0 Jun 5 05:55 narch
# cp -r /etc/ dir1/
# ls -l dir1/
total 4
-rw-r--r-- 1 root root 0 Jun 5 05:43 archivo1
-rw-r--r-- 1 root root 0 Jun 5 05:43 archivo2
drwxr-xr-x 34 root root 4096 Jun 5 05:57 etc
Al ejecutar ls -l dir, vemos que está el directorio “etc”, pero la fecha es de recién,( si usamos la opción -p se mantienen la fecha y
demás privilegios)
Manual: man cp
Comando mkdir
Este comando se utiliza para crear directorios.
# mkdir testing
# ls -ld testing/
drwxr-xr-x 2 root root 4096 Jun 12 02:56 testing/
Otro caso es si queremos crear un directorio que se encuentra adentro de otro. Pero tener en cuenta que si ninguno de los directorios
que ponemos existe nos dará error.
Ejemplo con error:
# mkdir es/otro/directorio/lejano
mkdir: cannot create directory `es/otro/directorio/lejano': No such file or directory
# mkdir -p es/otro/directorio/lejano
# ls -ld es/otro/directorio/lejano/
drwxr-xr-x 2 root root 4096 Jun 12 02:57 es/otro/directorio/lejano/
Comando mv
Este comando se utiliza para mover o renombrar archivos y directorios.
Sintaxis:
mv [opciones] origen destino
Opciones más usadas.
-f si ya existe lo fuerza a sobreescribir.
-i activa el modo interactivo para aceptar los cambios uno por uno.
Comando cd
Este comando se utiliza para avanzar o retroceder niveles de directorios.
Ejemplo:
Comando rm
Este comando sirve para borrar tanto directorios como archivos.
rm [opciones] archivos
-f hace un borrado sin preguntar nada.
-i en modo interactivo
-r,-R para borrar recursivamente
Ejemplo para borrar un directorio y TODO su contenido:
# rm -rf /directorio
Comando rmdir
Se utiliza solamente para borrar directorios vacíos.
rmdir [opciones] directorio
# rmdir dir
Nota: generalmente se utiliza el comando rm -rf
Comando touch
Este comando cambia la fecha/hora de acceso o modificación de los archivos.
touch [opciones] archivo
Opciones:
-a solo cambia el tiempo de acceso.
-m cambia el de modificación.
-t timestamps definir la fecha a utilizar [[CC]YY]MMDDhhmm[.ss]. Por ejemplo la fecha y hora para el 12 de Enero 2001 a las 18:45 es
200101121845
Ejemplo:
# ls -l archivo1
-rw-r--r-- 1 root root 0 Jun 5 05:41 archivo1
# touch archivo1
# ls -l archivo1
-rw-r--r-- 1 root root 0 Jun 12 04:52 archivo1
# ls -l archivo2
-rw-r--r-- 1 root root 0 Jun 12 04:53 archivo2
# touch -t 200101121845 archivo2
# ls -l archivo2
-rw-r--r-- 1 root root 0 Jan 12 2001 archivo2
Comodines
Los comodines o metacaracteres (file globbing) nos van a servir para tomar acción sobre múltiples archivos/directorios que contengan
cierto cadena de caracteres en su nombre. Tener en cuenta que los comodines son interpretados por la shell y no por los comandos,
cuando un comando es puesto con comodines, la shell los interpreta a estos y otros tipos de expansiones, para luego ejecutar el
comando. Este proceso es invisible para el usuario.
Para referirnos a uno o más archivos lo podemos hacer de una manera más acotada. La siguiente tabla nos muestra un resumen.
Descripción Ejemplo
Comodín
{ cadena1, cadena2... }
Más ejemplos
# ls -l hola*
-rw-r--r-- 1 root root 0 Jun 12 05:08 hola1
-rw-r--r-- 1 root root 0 Jun 12 05:08 hola2
-rw-r--r-- 1 root root 0 Jun 12 05:08 hola4
-rw-r--r-- 1 root root 0 Jun 12 05:08 hola5
# ls -l ?ola1
-rw-r--r-- 1 root root 0 Jun 12 05:08 hola1
Busca que un caracter concuerde con alguno de los que esta adentro de la lista, siempre y cuando la misma sea equivalente a la
posición de donde se lo defina.
# ls -l [haxt4]ola[12]
-rw-r--r-- 1 root root 0 Jun 12 05:08 hola1
-rw-r--r-- 1 root root 0 Jun 12 05:08 hola2
# ls -la hola[2-4]
-rw-r--r-- 1 root root 0 Jun 12 05:08 hola2
-rw-r--r-- 1 root root 0 Jun 12 05:08 hola4
# ls -la ho[a-z]a[2-4]
-rw-r--r-- 1 root root 0 Jun 12 05:08 hola2
-rw-r--r-- 1 root root 0 Jun 12 05:08 hola4
# touch hola{1,2,4,5}
# ls ?[poi][!poi][a-z][1-9]
hola1 hola2 hola4 hola5
# cp hola1{,.bkp}
# ls -l hola1 *.bkp
-rw-r--r-- 1 root root 0 Jun 12 05:08 hola1
-rw-r--r-- 1 root root 0 Jun 12 05:45 hola1.bkp
$ gzip keepassx-0.4.3-4.1.i386.rpm
$ ls -l
-rw-rw-r-- 1 rino rino 1.1M Apr 29 22:51 keepassx-0.4.3-4.1.i386.rpm.gz
$ bunzip2 keepassx-0.4.3-4.1.i386.rpm.gz
$ bzip2 keepassx-0.4.3-4.1.i386.rpm
$ ls -l
-rw-rw-r-- 1 rino rino 1.1M Apr 29 22:51 keepassx-0.4.3-4.1.i386.rpm.bz2
$ bunzip2 keepassx-0.4.3-4.1.i386.rpm.bz2
Comando xz
Esta herramienta usa el algoritmo LZMA, ofrece altos grados de compresión de archivos, así como también, velocidad para la
compresión y descompresión.
Para comprimir un archivo se debe hacer lo siguiente:
$ xz lxle.iso
$ ls -l
-rw-rw-r-- 1 sergio sergio 1.2G Feb 24 22:51 lxle.iso..xz
$ xz -d lxle.iso.xz
$ ls -l
-rw-rw-r-- 1 sergio sergio 1.4G Feb 24 22:51 lxle.iso..xz
$ unxz lxle.iso.xz
$ ls -l
-rw-rw-r-- 1 sergio sergio 1.4G Feb 24 22:51 lxle.iso..xz
Al igual que los comandos gzip y bzip2, xz se puede combinar con tar para generar un archivo con extensión .tar.xz.
Comando tar
Los comandos bzip, gzip y xz pueden comprimir un único archivo a la vez. Este comando sirve para poder agrupar archivos y
directorios, y comprimirlos con esas herramientas. El archivo resultante suele llamarse tarball.
Opciones:
c para crear
x para extraer
v modo verbose, muestra lo que se está haciendo
f define el archivo.tar
z comprime/descomprime con gzip
j comprime/descomprime con bzip2
J comprime/descomprime con xz
a Usa la extensión del archivo para elegir la herramienta de compresión
t Muestra el contenido del tarball
Generalmente las opciones de un comando van precedidas por guiones medios (-), sin embargo para el comando tar podemos
prescindir de ellos en muchos casos.
En este ejemplo se agrupó todo el contenido del directorio provisto en un archivo tar. Para ver el contenido del archivo.
# tar tf boinc.tar
Programas/BOINC/
Programas/BOINC/run_client
Programas/BOINC/get_project_config.xml
Programas/BOINC/lookup_website.html
Programas/BOINC/statistics_www.worldcommunitygrid.org.xml
Programas/BOINC/time_stats_log
Programas/BOINC/installingwwer_eng
# ls -lh boinc.tar
-rw-rw-r-- 1 rino rino 623M Sep 2 21:47 boinc.tar
Para comprimirlo
# bzip2 -9 boinc.tar
# ls -lh boinc.tar.bz2
-rw-rw-r-- 1 rino rino 179M Sep 2 21:47 boinc.tar.bz2
Otro método
Crea el tar y lo comprime con bzip2
# tar cvjf etc.tar.bz2 /etc
Luego:
# ls -lh etc.tar.bz2
-rw-rw-r-- 1 rino rino 7.9M Sep 2 21:56 etc.tar.bz2
Extraer y descomprimir
#tar xvjf etc.tar.bz2
Comando cpio
📌Este comando se usa para crear y extraer archivos o copiar archivos desde un lugar hacia otro. No utiliza compresión por sí
solo, para comprimirlo hay que hacerlo con gzip/bzip2. Tener en cuenta que nos referimos a archivos en el sentido de
paquetes de archivos
Sintaxis:
Para archivar:
# ls |cpio -ov > /media/extdisk/muestra.cpio
athelstan
rino
rino1
rino2
rino3
1 block
📌 El significado del signo ‘>’ significa que volcamos la salida del comando ubicado a la izquierda en el archivo de la derecha.
Para extraer:
# cpio -iv < /media/extdisk/muestra.cpio
athelstan
rino
rino1
rino2
rino3
1 block
📌 El significado del signo ‘<’ significa que el comando de la izquierda recibe como argumentos el archivo de la derecha.
# ls -la
total 12
drwxr-xr-x 3 root root 4096 Sep 1 21:11 .
drwxr-xr-x 11 rino rino 4096 Sep 1 21:10 ..
drwxr-xr-x 2 root root 4096 Sep 1 21:11 athelstan
-rw-r--r-- 1 root root 0 Sep 1 21:11 rino
-rw-r--r-- 1 root root 0 Sep 1 21:11 rino1
-rw-r--r-- 1 root root 0 Sep 1 21:11 rino2
-rw-r--r-- 1 root root 0 Sep 1 21:11 rino3
La ventaja de este comando con respecto al tar es que se puede tener mayor control, cuando realizamos scripts, sobre los archivos o
tipos de archivos que no se desean copiar. Suele combinarse con el comando find. No obstante, su uso es menos frecuente que el de
tar ya que este último es mucho más sencillo de usar.
Comando dd
Este comando es muy útil para realizar copias de seguridad/clonado de dispositivos de almacenamiento porque copia en bloques.
Sintaxis dd [options]
if=archivo toma como entrada un archivo o dispositivo.
of=archivo salida a un archivo en vez de la salida estándar.
ibs=n leer de a "n" bytes.
obs=n escribir de a n bytes
conv=list convertir de ciertos aspecto de lo que copio.
Ejemplos
Comando file
Este comando nos va a devolver qué tipo de archivo es el que el le preguntemos, sin importar su extensión, lo detecta por su
contenido.
Opciones
-f busca por cada línea que hay en el archivo que se le invoque
-z intenta ver adentro de los archivos comprimidos
#cat rino.txt
/etc/passwd
/etc/shadow
Vemos que anteriormente mostramos el contenido del archivo en donde esta el path de dos archivos, luego con la opción -f examina
cada línea.
# file -f rino
/etc/passwd: ASCII text
/etc/shadow: regular file, no read permission
# file symvers-2.6.18-164.el5.gz
symvers-2.6.18-164.el5.gz: gzip compressed data, from Unix, last modified: Tue Aug 18 16:55:52 2009, max compression
Comando find
El comando find es una herramienta muy potente que permite buscar entre otras cosas:
● En un determinado directorio en la jerarquía del sistema de archivos.
● Archivos por nombre
● Archivos por tipo
● Archivos por marcas de tiempo
● Archivos por permisos
● Archivos de acuerdo a su dueño
Sintaxis
find [options] [path…] [expression]
-mount no va a seguir buscando recursivamente por directorios que fueron montados.
-maxdepth X le indico cual es la cantidad máxima de subdirectorios que quiero que recorra
-perm para buscar por permisos (-perm 777)
📌 s conveniente encerrar entre comillas para que la shell no reemplace automáticamente los metacaracteres en el
E
directorio actual.
Buscar aquellos archivos que se hayan creado hace más de siete días, y máximo un subdirectorio de profundidad
Buscar archivos .tmp sin importar mayúsculas o minúsculas y ejecutar una acción sobre los archivos encontrados
# find /home -iname "*.tmp" -exec rm -i ‘{}’ \;
La cadena de texto ‘{}’ es reemplazada por el archivo procesado por find, y el \; significa que no hay más argumentos para el comando
después del exec (en este caso rm). Tanto las comillas simples como la contrabarra se ponen para que bash interprete de manera
literal esos caracteres.
Más ejemplos:
Buscar por nombre de archivo find /etc -name “*.sh” Usar comillas al usar metacaracteres para
evitar que la shell realice autocompletado
de rutas
Buscar por fecha de modificación find /var -mtime -2 Buscará todos los archivos que fueron
modificados hace menos de 2x24hs
exactamente
Manuales
Las páginas del manual o páginas man de GNU/Linux son el mejor lugar para resolver cuestiones relativas a la sintaxis y opciones de
los comandos y utilidades del sistema. Los documentos de las páginas man están almacenados en un formato comprimido. El
comando man descomprime y da formato a estas páginas para su correcta visualización. Se accede a estas páginas utilizando el
comando man seguido del nombre del comando que se quiere consultar.
$ man ls
Este comando buscará todas las páginas del manual relativas al comando ls. Cuando abras las páginas del manual, lo primero que se
visualizará es un banner con el comando y la página man que está siendo consultada. También se muestra aquí el logo FSF de Free
Software Foundation.
Ejemplo:
NAME
ls – list directory contents
SYNOPSIS
ls [OPTION]… [FILE]…
A esto le sigue una descripción del comando. Tras la descripción se muestran y explican las opciones del mismo.
DESCRIPTION
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuSUX nor –sort.
Mandatory arguments to long options are mandatory for short options
too.
-a, –all
do not hide entries starting with.
-A, –almost-all
do not list implied . and ..
-b, –escape
print octal escapes for nongraphic characters
–block-size=SIZE
use SIZE-byte blocks
-B, –ignore-backups
do not list implied entries ending with ~
La página man termina con información relativa al autor de la página, bugs conocidos e información sobre como reportar nuevos bugs,
copyright, e instrucciones para obtener más información sobre el comando.
AUTHOR
Written by Richard Stallman and David MacKenzie.
REPORTING BUGS
Report bugs to .
COPYRIGHT
Copyright © 1999 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE.
SEE ALSO
The full documentation for ls is maintained as a Texinfo manual.
If the info and ls programs are properly installed at your site,
the command
info ls
should give you access to the complete manual.
/option
/usr/share/man/man1
/usr/share/man/man2
/usr/share/man/man3
/usr/share/man/man4
/usr/share/man/man5
/usr/share/man/man6
/usr/share/man/man7
/usr/share/man/man8
/usr/share/man/man9
El usuario puede especificar un MANPATH diferente. Esto permitiría utilizar un conjunto diferente de páginas man. Esto es práctico
porque algunos comandos podrían almacenar sus páginas man en lugares distintos a los estándar.
A continuación se muestra un ejemplo del uso de la opción -a. Ésta hace que las páginas coincidentes sean mostradas en el orden en
el que han sido encontradas. En primer lugar, se le muestra al usuario la entrada correspondiente a crontab en la sección uno.
Cuando el usuario pulsa la tecla Q para salir de ésta página , se mostrará la entrada encontrada en la sección cinco.
# man –a crontab
La opción -w es práctica para encontrar la ubicación de las entradas de las páginas man. Si utilizásemos esta opción con la utilidad
crontab obtendríamos lo siguiente:
# man -w crontab
/usr/man/man1/crontab.1.gz
Pregunta de Examen: Asegurate que conoces las opciones de búsqueda y sus funciones, entre ellas -a, -K, y -k.
La información de las página man de Linux están contenidas en un conjunto de archivos. Estos archivos están agrupados en
secciones y cada sección contiene un tipo específico de información. La Tabla 1-4 lista éstas secciones y su uso:
Cuando se le pasa un argumento al comando man, éste busca dentro de las secciones siguiendo un orden específico y se devuelve la
primera coincidencia. El orden de búsqueda por defecto es el siguiente:
1, 8, 2, 3, 4, 5, 6, 7, 9.
También es posible indicar la sección en la que queremos buscar. Si quisiéramos buscar información sobre la utilidad crontab en la
sección cinco utilizarías el siguiente comando:
# man 5 crontab
Si usamos la opción -a podremos examinar todas las entradas coincidentes. Siguiendo el ejemplo de la utilidad crontab, tendríamos
que utilizar el siguiente comando:
# man -a crontab
whatis
La utilidad whatis no se menciona específicamente en los objetivos del examen, pero conocer su uso puede venir bien en el examen.
La utilidad whatis se usa para buscar entradas coincidentes en la base de datos whatis. Esta base de datos se crea utilizando el
comando /usr/bin/makewhatis. Esta base de datos contiene las descripciones cortas que se encuentran en las páginas man de los
comandos del sistema. Un ejemplo de su uso es el siguiente:
# whatis passwd
passwd (1) – update a user’s authentication tokens(s)
passwd (1ssl) – compute password hashes
passwd (5) – password file
passwd.nntp [passwd] (5) – passwords for connecting to remote NNTP servers
Como podemos ver en este ejemplo, el comando passwd tiene entradas en las secciones uno y cinco de las páginas man. También
ha sido encontrado en la sección uno de las páginas man del comando ssl.
El comando man -f busca en esta base de datos entradas coincidentes con la palabra clave indicada. A continuación, tenemos un
ejemplo de la salida producida por este comando.
# man -f passwd
passwd (1) – update a user’s authentication tokens(s)
passwd (1ssl) – compute password hashes
passwd (5) – password file
passwd.nntp [passwd] (5) – passwords for connecting to remote NNTP servers
Estos comandos realizan la misma búsqueda. Se muestran los comandos y las páginas man donde han sido encontrados. Esto puede
ser práctico para localizar secciones de páginas man y variantes de los comandos.
apropos
Al igual que whatis, el comando apropos no se menciona específicamente en los objetivos del examen, pero conocer su uso puede
venir bien en el examen. Y también como la utilidad whatis, el comando apropos utiliza la base de datos whatis. Este comando se
emplea para buscar tanto los nombres de comando como las descripciones para la palabra clave indicada. A continuación vemos un
ejemplo del comando apropos:
# apropos password
chpasswd (8) – update password file in batch
gpasswd (1) – administer the /etc/group file
htpasswd (1) – Create and update user authentication files
nwpasswd (1) – Change a user’s password
…(Salida del comando recortada)
# man -k password
chpasswd (8) – update password file in batch
gpasswd (1) – administer the /etc/group file
htpasswd (1) – Create and update user authentication files
nwpasswd (1) – Change a user’s password
passwd (1) – update a user’s authentication tokens(s)
passwd (1ssl) – compute password hashes
passwd (5) – password file
passwd.nntp [passwd] (5) – passwords for connecting to remote NNTP servers
…(Salida del comando recortada)
Como podemos ver, estos comandos hacen lo mismo. Esto puede ser práctico cuando buscamos comandos a partir de determinadas
palabras clave.
Documentos Info
<PARAHACER>
Más recursos
Libros:
● [CompTIA Linux+ / LPIC-1 Cert Guide: (Exams LX0-103 & LX0-104/101-400 &
102-400)](https://www.lpimarketplace.com/CompTIA-Linux-LPIC-1-Cert-Guiden-p/978-0-78-975455-4.htm)
● [CompTIA Linux+ /LPIC-1 Certification All-In-One Exam Guide, Premium Second Edition With Online Practice
Labs (Exams LX0-103 & LX0-104/101-400 &
102-400)](https://www.lpimarketplace.com/CompTIA-Linux-LPIC-1-All-In-One-Exam-Guide-p/978-1-259-86369-1.
htm)
● [LPIC-1 Certification All-in-One Exam Guide Exams LPIC-1 book | LPI
Marketplace](https://www.lpimarketplace.com/LPIC-1-Certification-All-in-One-Exam-Guide-p/978-0-071-84168-9.
htm)
Paginas:
● [COMANDOS LINUX PARA LA GESTION DE ARCHIVOS Y DIRECTORIOS [WIKI. IES Haría.
Informática]](https://smr.iesharia.org/wiki/doku.php/ssv:ut3:c_linux_archivos)
● [Secretos del comando man -
ForoSUSE](http://www.forosuse.org/forosuse/showthread.php?t=13975&langid=1)
●
● [Beginner’s Bash](https://linux.org.mt/article/terminal/)
● [Linux Guide/merge/Linux For Newbies/Command Line - Wikibooks, open books for an open
world](https://en.wikibooks.org/wiki/Linux_Guide/merge/Linux_For_Newbies/Command_Line)
¿Qué es FHS?
En este tópico vamos a desarrollar el tema de la estructura de archivos del sistema y algunos comando básicos para poder encontrar
archivos.
Antes de empezar a explicar, hay que introducir el término de FHS (Filesystem Hierarchy standard
–>http://refspecs.linuxfoundation.org/fhs.shtml ), un estándar a seguir para las distribuciones de Linux, que se refiere a
la forma en que se utiliza el sistema de archivos en Linux.
Vamos a mencionar algunas partes de FHS, pero para mas información, pueden leer el link mencionado anteriormente.
Shareable: Los datos pueden ser usados por múltiples sistemas en una red. Los archivos que se pueden compartir y que son
información de propósito general, en donde existe ninguna atadura en ningún host. Un ejemplo de estos archivos pueden ser archivos
de datos, archivos de programas ejecutables y documentación del sistema.
Non-Shareable: Aquella información que no se puede compartir, dado que está atada a un equipo en particular, como por ejemplo,
archivos de configuración.
Variable: Los datos son considerados variables cuando estos cambian sin intervención del usuario/root. Ejemplo de estos pueden ser
archivos de usuarios, registros del sistema (logs). Ejemplo /var/log/syslog, /var/log/messages.
Static: Son aquellos archivos que no interactúan con nadie y permanecen siempre iguales durante el día a día o años enteros. Un
ejemplo de estos pueden ser los binarios de determinados comandos (ls,bash) en donde solo cambian cuando se actualiza el sistema.
Algunos directorios en el sistema de ficheros de Linux están destinados a contener los tipos específicos de datos. Por ejemplo, los
archivos ejecutables en /usr ,rara cambian sin la intervención del administrador, por lo que pueden definirse como algo estático, ya
que son necesarios para todos los usuarios en una red. Antes de que los discos fueran tan grandes como lo son hoy, los archivos que
se encontraban comúnmente en /usr se montaban a menudo desde servidores remotos para conservar espacio en el disco local. Así,
además de ser estático, /usr se dice que es compartible.
Mantener los archivos organizados con respecto a estos atributos puede simplificar el intercambio de archivos, administración de
sistemas, y la complejidad de copia de seguridad, así como reducir los requerimientos de almacenamiento.
El FHS organiza las categorías de datos anteriores en una matriz de 2 × 2.
Shareable Unshareable
/usr /etc
static
/opt /opt
/var/mail /var/run
variable /var/cache/fonts /var/log
/home
En muchas redes, /usr y /usr/local se montan por las estaciones de trabajo individuales de un servidor NFS. Esto puede ahorrar una
cantidad considerable de almacenamiento local en las estaciones de trabajo. Más importante aún, la colocación de estos directorios
en otro sistema puede hacer que las actualizaciones y upgrades sean mucho más simples. Estos directorios suelen ser compartidos
como sistemas de archivos de solo lectura porque no son modificados por la mayoría de usuarios finales.
El directorio /var/mail y directorios /home, por el contrario, se comparten pero son cambiados regularmente por los usuarios. El
directorio /etc y /boot contienen archivos que son estáticos en el sentido que sólo el administrador puede cambiarlo, pero el uso
compartido de ellos no es necesario o aconsejado, porque son archivos de configuración local. El directorio /var/log y /proc son
directorios muy dinámicos, pero también son solo de interés local.
Directorios Esenciales
El sistema de archivos raíz /
El FHS ofrece un significativo nivel de detalle que describe la localización exacta de los archivos, utilizando la lógica derivada de la
definición static/variable y shareable/unshareable. Esta sección trata sobre las partes más importantes de la jerarquía de directorios
FHS.
El sistema de archivos raíz se encuentra en la parte superior de la jerarquía de directorios. El FHS define los objetivos para el sistema
de archivos raíz:
● Arrancar el sistema, deben estar el software y los datos suficiente en la partición raíz para montar otros sistemas de archivos.
Esto incluye herramientas, configuración, información del cargador de arranque, y otros datos del arranque. Los directorios
/usr, /opt y /var están diseñados de modo tal poder ubicarse en otras particiones o sistemas de archivos.
● Posibilitar la recuperación y/o reparación de un sistema, aquellas herramientas necesarias para que un administrador
experimentado diagnostique y reconstruya un sistema dañado.
● Restaurar un sistema, aquellas herramientas necesarias para recuperar backups.
● Las aplicaciones ni la distribución deberían crear archivos o subdirectorios adicionales en el directorio raíz
● Su partición y debería ser lo más chico posible, siempre que permite realizar las funciones mencionadas arriba mencionadas.
Aunque un sistema Linux con todo en una sola partición raíz se puede crear, el hacerlo así no cumpliría con estos objetivos. En
cambio, el sistema de archivos raíz debe contener sólo los esenciales directorios del sistema, junto con los puntos de montaje para
otros sistemas de archivos.
Directorios No Esenciales
El resto de directorios de nivel superior en el sistema de archivos raíz se consideran no esenciales para los procedimientos de
emergencia:
● /boot
● /home
● /opt
● /tmp
● /usr
● /var
El sistema de archivos /usr contiene utilidades de sistema y programas que no pueden no estar en la partición raíz. Por ejemplo, los
programas de usuario, tales como less y la tail se encuentran en /usr/bin. El directorio /usr/sbin contiene comandos de
administración del sistema, tales como adduser y traceroute, y una serie de demonios sólo necesarios cuando el sistema funciona
normalmente. No hay datos específicos del host o datos variables que se almacenen en /usr. También es rechazada la colocación de
directorios directamente en /usr para los paquetes de software grandes. Una excepción a esta regla está hecha para X11.
● /usr/bin
● /usr/include
● /usr/lib
● /usr/local
● /usr/sbin
● /usr/share
El sistema de archivos /var: El sistema de archivos /var contiene datos tales como, el de la cola de impresión y los archivos de
registro de bitácoras que varían con el tiempo. Puesto que los datos variables siempre están cambiando y creciendo, /var es por lo
general contenida en una partición separada para evitar el llenado de la partición raíz.
1. /var/cache
2. /var/lib
3. /var/local
4. /var/lock
5. /var/log
6. /var/opt
7. /var/run
8. /var/spool
9. /var/tmp
Binarios
Los directorios bin y sbin, se llaman así porque poseen archivos ejecutables, los cuales la mayoría están ya compilados como
binarios.
En esta tabla, se enumeran estos directorios y muestra cómo se usa cada uno.
/usr/local/bin /usr/local/sbin
Suministrados localmente (por
ejemplo, compilados a mano), no son
esenciales (sistema de archivos
/usr/local)
Herramientas de Búsqueda
Ubicando los archivos:
FHS ofrece a la comunidad Linux un excelente recurso que asegura la coherencia entre las distintas distribuciones y otros sistemas
operativos. En la práctica, sin embargo, la ubicación del archivo puede ser frustrante, y surge la necesidad de buscar archivos en el
sistema rápidamente.
Estas herramientas de localización de archivos son necesarias para el examen 101: which, find, locate, whereis, y type.
Locate
Sintaxis locate patrón
La búsqueda se realiza en un índice, creado con el comando updatedb, busca los archivos cuyos nombres coincidan con uno o más
patrones.
Buscar el patrón sh:
# locate zyxel
/usr/share/wireshark/radius/dictionary.zyxel
El comando locate debe tener una base de datos reciente para la búsqueda, y la base de datos debe ser actualizada periódicamente
para incorporar los cambios en el sistema de archivos. Si la base de datos está demasiado desactualizada, el comando puede
advertirnos como se muestra a continuación:
# locate tcsh
locate: warning: database /var/lib/slocate/slocate.db' is more than 8 days old
Updatedb
Sintaxis updatedb [opciones]
Type
Sintaxis
Type no es realmente un programa independiente, sino una parte integrada de la shell bash. Type le dirá cómo un nombre de archivo
se interpretaría si se usa como un nombre de comando.
Ejemplo:
# type ls
ls is aliased to `ls --color=tty'
# type grep
grep is /bin/grep
Whereis
Sintaxis
Un ejemplo:
# whereis ls
ls: /bin/ls /usr/share/man/man1p/ls.1p.gz /usr/share/man/man1/ls.1.gz
Which
Sintaxis
which comando
Determina la ubicación del comando y muestra la ruta completa del programa ejecutable que la shell lanzaría para ejecutarlo. Este
sólo busca la rutas definidas en la variable PATH.
# which bash
/bin/bash
Más recursos
Libros:
● Página del manual de FHS, se accede con man 7 hier
● [CompTIA Linux+ / LPIC-1 Cert Guide: (Exams LX0-103 & LX0-104/101-400 &
102-400)](https://www.lpimarketplace.com/CompTIA-Linux-LPIC-1-Cert-Guiden-p/978-0-78-975455-4.htm)
● [CompTIA Linux+ /LPIC-1 Certification All-In-One Exam Guide, Premium Second Edition With Online Practice
Labs (Exams LX0-103 & LX0-104/101-400 &
102-400)](https://www.lpimarketplace.com/CompTIA-Linux-LPIC-1-All-In-One-Exam-Guide-p/978-1-259-86369-1.
htm)
● [LPIC-1 Certification All-in-One Exam Guide Exams LPIC-1 book | LPI
Marketplace](https://www.lpimarketplace.com/LPIC-1-Certification-All-in-One-Exam-Guide-p/978-0-071-84168-9.
htm)
Páginas:
● [FHS Referenced Specifications](https://refspecs.linuxfoundation.org/fhs.shtml)
● [El estándar FHS | Tutorial de GNU/Linux](http://fpg.site11.com/GNU-Linux/el_estndar_fhs.html)
● [FilesystemHierarchyStandard - Debian Wiki](https://wiki.debian.org/FilesystemHierarchyStandard)