0% encontró este documento útil (0 votos)
79 vistas31 páginas

02 Capitulo2

Este capítulo describe la administración de archivos desde la línea de comandos en Linux. Explica la jerarquía del sistema de archivos de Linux, incluyendo los directorios principales como /usr, /etc, /var y /home. Luego describe cómo usar comandos de línea de comandos como cd para cambiar de directorio, y ls para listar archivos y directorios.

Cargado por

Jorge Castillo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
79 vistas31 páginas

02 Capitulo2

Este capítulo describe la administración de archivos desde la línea de comandos en Linux. Explica la jerarquía del sistema de archivos de Linux, incluyendo los directorios principales como /usr, /etc, /var y /home. Luego describe cómo usar comandos de línea de comandos como cd para cambiar de directorio, y ls para listar archivos y directorios.

Cargado por

Jorge Castillo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 31

Capítulo 2 - Administración de archivos

desde la línea de comandos


Generalidades

Copiar, mover, crear, eliminar y organizar archivos mientras se trabaja desde el aviso de
Objetivo
la shell Bash.

 Identificar el objetivo de directorios importantes en un sistema Linux.


Objetivos  Especificar archivos usando nombres de rutas absolutas y relativas.
 Crear, copiar, mover y quitar archivos y directorios usando utilidades de la línea
de comandos.
 Hacer coincidir uno o más nombres de archivo con expansión de shell como
argumento de comandos de la shell.

 Jerarquía del sistema de archivos Linux (y práctica)


 Búsqueda de archivos por nombre (y práctica)
 Administración de archivos con las herramientas de línea de comandos (y
Secciones práctica)
 Coincidencia de nombres de archivo mediante el uso de expansión de nombre
de ruta (y práctica)

Ejercicio de  Administración de archivos con expansión de shell


laboratorio
2.1 Jerarquía del sistema de archivos Linux

Objetivos

Tras finalizar esta sección, los estudiantes deberían entender el diseño y la organización
fundamentales del sistema de archivos, y la ubicación de los tipos de archivo clave.

Jerarquía del sistema de archivos Linux

Todos los archivos de un sistema Linux se guardan en sistemas de archivos que están organizados
en un árbol de directorios invertido individual conocido como jerarquía de sistema de archivos. Este
árbol está invertido porque se dice que la raíz del árbol está en la parte de arriba de la jerarquía y
las ramas de los directorios y subdirectorios se extienden debajo de root.

Figura 2.1: Directorios del sistema de archivos importantes en Red Hat Enterprise Linux 7

El directorio / es el directorio root que está en la parte superior de la jerarquía del sistema de
archivos. El carácter / también se usa como un separador de directorio en los nombres de archivo.
Por ejemplo, si etc es un subdirectorio del directorio /, podemos llamar a ese directorio /etc. De la
misma manera, si el directorio /etc contiene un archivo con el nombre issue, podemos referirnos a
ese archivo como /etc/issue.

Los subdirectorios de / se usan con fines estandarizados para organizar archivos por tipo y objetivo.
Esto facilita la posibilidad de encontrar archivos. Por ejemplo, en el directorio root, el subdirectorio
/boot se usa para guardar archivos que se necesitan para arrancar el sistema.

nota

Los siguientes términos se encuentran en la descripción de los contenidos del directorio del sistema
de archivos:

- estático es el contenido que no se modifica hasta que se edita o reconfigura en forma explícita.

- dinámico o variable es el contenido que, por lo general, se modifica o adjunta mediante procesos activos.
- persistente es el contenido, en particular los parámetros de configuración, que se mantiene después de

un arranque nuevo.

- tiempo de ejecución es el contenido específico de un proceso o sistema o los atributos borrados durante

un arranque nuevo.

La siguiente tabla enumera algunos de los directorios más importantes del sistema por nombre y
objetivo.

Directorios importantes de Red Hat Enterprise Linux

Ubicación Propósito

Software instalado, bibliotecas compartidas, incluye archivos y datos de programa estáticos de solo
lectura. Los subdirectorios importantes incluyen:

- /usr/bin: comandos de usuario.


/usr
- /usr/sbin: comandos de administración del sistema.

- /usr/local: software personalizado en forma local.

/etc Archivos de configuración específicos para este sistema.

Datos variables específicos de este sistema que deberían conservarse entre los arranques. Los archivos
/var que cambian en forma dinámica (por ejemplo, bases de datos, directorios caché, archivos de registro,
documentos en cola de impresión y contenido de sitio web) pueden encontrarse en /var.

Datos de tiempo de ejecución para procesos que se iniciaron desde el último arranque. Esto incluye
archivos de ID de proceso y archivos de bloqueo, entre otros elementos. Los contenidos de este directorio
/run
se vuelven a crear en el arranque nuevo. (Este directorio consolida /var/run y /var/lock de versiones
anteriores de Red Hat Enterprise Linux).

Los directorios principales son aquellos donde los usuarios habituales guardan sus datos personales y los
/home
archivos de configuración.

/root Es el directorio de inicio para el superusuario administrativo, root.

Es un espacio con capacidad de escritura por parte de cualquier usuario del sistema para archivos
temporales. Los archivos a los que no se haya accedido, y que no se hayan cambiado ni modificado durante
/tmp 10 días se eliminan de este directorio automáticamente. Existe otro directorio temporal, el /var/tmp, en
el que los archivos que no tuvieron acceso, cambios ni modificaciones durante más de 30 días se eliminan
automáticamente.

/boot Son los archivos necesarios para iniciar el proceso de arranque.

/dev Contiene archivos de dispositivo especiales que son usados por el sistema para acceder al hardware.
Importante

En Red Hat Enterprise Linux 7, cuatro directorios antiguos en / ahora tienen contenidos idénticos al
de sus equivalentes que están en /usr:

- /bin y /usr/bin.

- /sbin y /usr/sbin.

- /lib y /usr/lib.

- /lib64 y /usr/lib64.

En versiones anteriores de Red Hat Enterprise Linux, estos eran directorios distintos que contenían
diferentes conjuntos de archivos. En RHEL 7, los directorios de / son enlaces simbólicos para los
directorios coincidentes de /usr.

Referencias

Página de manual hier(7)


2.2 Práctica: Jerarquía de sistemas de archivos

Establezca una coincidencia entre los siguientes elementos y sus equivalentes de la tabla.

Arrastre y suelte los elementos en la celda junto a la respuesta correcta. Cada celda debe contener
una respuesta. Si usted desea modificar una respuesta, arrástrela a otra ubicación, o haga clic en
Restablecer para que la evaluación regrese a su configuración inicial.

Una vez que haya finalizado el cuestionario, haga clic en Check (verificar). Las respuestas correctas
tendrán un fondo azul y las respuestas incorrectas estarán tachadas. Si desea intentar de nuevo,
haga clic en Restablecer. Nota: Si tiene problemas para que la evaluación funcione por segunda vez,
intente actualizar el explorador. Haga clic en Mostrar Solución para ver todas las respuestas
correctas.

Objetivo del directorio Ubicación

Este directorio contiene datos de configuración del sistema estáticos y


/etc
persistentes.

Este es el directorio root del sistema. /

En este directorio se incluyen los directorios de inicio del usuario. /home

Este es el directorio de inicio de la cuenta root. /root

Este directorio contiene datos de configuración dinámicos, como FTP y sitios


/var
web.

Aquí se ubican utilidades y comandos de usuario regular. /usr/bin

Aquí se incluyen binarios de administración de sistemas para uso de parte


/usr/sbin
de root.

Aquí se almacenan los archivos temporales. /tmp

Contiene datos dinámicos y no persistentes de tiempo de ejecución de


/run
aplicaciones.

Contiene las bibliotecas y los programas de software instalados. /usr


2.3 Ubicación de archivos por nombre

Objetivos

Tras finalizar esta sección, los estudiantes deberían poder usar en forma correcta los nombres de
ruta, cambiar el directorio que está en uso y utilizar comandos para determinar los contenidos y
las ubicaciones del directorio.

Ubicación de archivos por nombre

Figura 2.2: La vista del explorador de archivos habitual (izquierda) equivale a la vista descendente
(derecha).

La ruta de un archivo o directorio especifica su ubicación en el sistema de archivos exclusiva. Si se


sigue la ruta de un archivo, pasa por uno o más subdirectorios con nombre que están delimitados
por una barra (/) hasta que se llega al destino. Las definiciones del comportamiento de archivos
estándar rigen para los directorios (también denominados carpetas) al igual que con otros tipos de
archivos.

Importante

Si bien un espacio es un carácter aceptable en los nombres de archivo de Linux, no es un


delimitador usado por la shell para la interpretación de la sintaxis de comandos. Se recomienda a
los administradores nuevos que eviten el uso de espacios en los nombres de archivos ya que
aquellos que incluyan espacios, con frecuencia, generan comportamientos de ejecución de
comandos no deseados.

Rutas absolutas
Una ruta absoluta es un nombre totalmente calificado que comienza en el directorio (/) root y
especifica cada subdirectorio que se atraviesa para llegar y que representa en forma exclusiva un
solo archivo. Cada archivo del sistema de archivo tiene un único nombre de ruta absoluta,
reconocido con una regla simple: un nombre de archivo con una barra (/) como primer carácter es
el nombre de la ruta absoluta. Por ejemplo, el nombre de ruta absoluta para el archivo de registro
de mensajes del sistema es /var/log/messages. Los nombres de rutas absolutas pueden ser
extensos para escribir; en consecuencia, los archivos también pueden ubicarse en forma relativa.

Cuando un usuario inicia sesión y abre una ventana de comandos, la ubicación inicial es, por lo
general, el directorio de inicio del usuario. Los procesos del sistema también tienen un directorio
inicial. Los usuarios y los procesos navegan hacia otros directorios, según sea necesario; los
términos directorio de trabajo o directorio de trabajo actual se refieren a su ubicación actual.

Rutas relativas
Al igual que una ruta absoluta, una ruta relativa identifica un archivo único y especifica solo la ruta
necesaria para llegar al archivo desde el directorio de trabajo. Para reconocer nombres de ruta
relativos se sigue una regla simple: un nombre de ruta que no tenga otro carácter más que una
barra (/) como primer carácter es un nombre de ruta relativo. Un usuario en el directorio /var
podría referirse en forma relativa al archivo de registro del mensaje como log/messages.

Para sistemas de archivos Linux estándar, el nombre de ruta de un archivo, que incluya todos los
caracteres / puede tener más de 4095 bytes de extensión. Cada componente del nombre de la
ruta separado por caracteres / no puede tener más de 255 bytes de extensión. Los nombres de
archivo pueden usar cualquier carácter Unicode codificado UTF-8, excepto / y el carácter NUL. (Los
caracteres ASCII requieren de un byte; otros caracteres, como los latinos, griegos, hebreos o
cirílicos, necesitan de dos bytes; el resto de los caracteres del plano multilingüe básico de Unicode
necesitan tres; y ningún carácter requerirá más de cuatro bytes).

Los sistemas de archivo Linux, que incluyen, entre otros, ext4, XFS, BTRFS, GFS2 y GlusterFS,
distinguen entre letras minúsculas y mayúsculas. Si se crea un archivo FileCase.txt y un archivo
filecase.txt en el mismo directorio, se obtienen dos archivos exclusivos. A pesar de que muchos
sistemas de archivos que no son Linux son admitidos por Linux, cada uno tiene reglas de
nombramiento de archivos exclusivas. Por ejemplo, el sistema de archivos VFAT masivo no
distingue entre minúsculas y mayúsculas, y permite la creación solo de uno de los dos archivos de
ejemplo. Sin embargo, VFAT, junto con NTFS de Microsoft y HFS+ de Apple, tiene un
comportamiento de conservación de tipo de letra. A pesar de que estos sistemas de archivos no
distinguen entre minúsculas y mayúsculas (realizado, principalmente, para respaldar la
compatibilidad retroactiva), muestran los nombres de archivo con el uso de mayúsculas original
utilizado cuando se creó el archivo.

Rutas de navegación

El comando pwd muestra el nombre de ruta completo de la ubicación actual, que ayuda a
determinar la sintaxis adecuada para llegar a los archivos con los nombres de ruta relativos. El
comando ls enumera los contenidos del directorio para el directorio especificado o, si no se indica
un directorio, el directorio actual.
[student@desktopX ~]$ pwd
/home/student
[student@desktopX ~]$ ls
Desktop Documents Downloads Music Pictures Public Templates Videos
[student@desktopX ~]$
Use el comando cd para cambiar los directorios. En caso del directorio de trabajo /home/student,
la sintaxis de ruta relativa es más corta para llegar al subdirectorio Videos. A continuación, se llega
al subdirectorio Documents con la sintaxis de ruta absoluta.
[student@desktopX ~]$ cd Videos
[student@desktopX Videos]$ pwd
/home/student/Videos
[student@desktopX Videos]$ cd /home/student/Documents
[student@desktopX Documents]$ pwd
/home/student/Documents
[student@desktopX Documents]$ cd
[student@desktopX ~]$ pwd
/home/student
[student@desktopX ~]$

La petición del programa de shell muestra, para ser breve, solo el último componente de la ruta de
directorio actual. Para /home/student/Videos, solo muestra Videos. Cuando lo desee, regrese al
directorio de inicio de usuario con cd sin especificar un destino. La petición muestra el carácter
tilde(~) cuando el directorio actual del usuario es su directorio de inicio.

Por lo general, el comando touch actualiza la marca de tiempo de un archivo con respecto a la
fecha y hora actual sin modificarlo. Esto es útil para crear archivos vacíos, que pueden usarse para
practicar, ya que si se "toca" el nombre de un archivo que no existe, se produce la creación del
archivo. Si se usa touch, se crean archivos de práctica en los subdirectorios Documents y Videos.
[student@desktopX ~]$ touch Videos/blockbuster1.ogg
[student@desktopX ~]$ touch Videos/blockbuster2.ogg
[student@desktopX ~]$ touch Documents/thesis_chapter1.odf
[student@desktopX ~]$ touch Documents/thesis_chapter2.odf
[student@desktopX ~]$

El comando ls tiene varias opciones para mostrar los atributos en los archivos. Los más usados y
útiles son -l (formato de enumeración extensa), -a (todos los archivos, que incluye los archivos
ocultos) y -R (recurrente, para incluir los contenidos de todos los subdirectorios).
[student@desktopX ~]$ ls -l
total 15
drwxr-xr-x. 2 student student 4096 Feb 7 14:02 Desktop
drwxr-xr-x. 2 student student 4096 Jan 9 15:00 Documents
drwxr-xr-x. 3 student student 4096 Jan 9 15:00 Downloads
drwxr-xr-x. 2 student student 4096 Jan 9 15:00 Music
drwxr-xr-x. 2 student student 4096 Jan 9 15:00 Pictures
drwxr-xr-x. 2 student student 4096 Jan 9 15:00 Public
drwxr-xr-x. 2 student student 4096 Jan 9 15:00 Templates
drwxr-xr-x. 2 student student 4096 Jan 9 15:00 Videos
[student@desktopX ~]$ ls -la
total 15
drwx------. 16 student student 4096 Feb 8 16:15 .
drwxr-xr-x. 6 root root 4096 Feb 8 16:13 ..
-rw-------. 1 student student 22664 Feb 8 00:37 .bash_history
-rw-r--r--. 1 student student 18 Jul 9 2013 .bash_logout
-rw-r--r--. 1 student student 176 Jul 9 2013 .bash_profile
-rw-r--r--. 1 student student 124 Jul 9 2013 .bashrc
drwxr-xr-x. 4 student student 4096 Jan 20 14:02 .cache
drwxr-xr-x. 8 student student 4096 Feb 5 11:45 .config
drwxr-xr-x. 2 student student 4096 Feb 7 14:02 Desktop
drwxr-xr-x. 2 student student 4096 Jan 9 15:00 Documents
drwxr-xr-x. 3 student student 4096 Jan 25 20:48 Downloads
drwxr-xr-x. 11 student student 4096 Feb 6 13:07 .gnome2
drwx------. 2 student student 4096 Jan 20 14:02 .gnome2_private
-rw-------. 1 student student 15190 Feb 8 09:49 .ICEauthority
drwxr-xr-x. 3 student student 4096 Jan 9 15:00 .local
drwxr-xr-x. 2 student student 4096 Jan 9 15:00 Music
drwxr-xr-x. 2 student student 4096 Jan 9 15:00 Pictures
drwxr-xr-x. 2 student student 4096 Jan 9 15:00 Public
drwxr-xr-x. 2 student student 4096 Jan 9 15:00 Templates
drwxr-xr-x. 2 student student 4096 Jan 9 15:00 Videos
[student@desktopX ~]$

Los dos directorios especiales que están en la parte superior del listado se refieren al directorio
actual (.) y al directorio principal (..). Estos directorios especiales existen en cada directorio del
sistema. Sus beneficios serán aparentes cuando se practiquen los comandos de administración de
archivos.

Importante

Los nombres de archivo que comienzan con un punto (.) indican archivos ocultos de la vista normal
con ls y otros comandos. Esta no es una característica de seguridad. Los archivos ocultos evitan
que los archivos de configuración necesarios del usuario llenen los directorios principales. Existen
muchos comandos que procesan archivos ocultos solo con opciones de línea de comandos
específicas y previenen que la configuración de un usuario se copie por accidente en otros
directorios o usuarios.

Para proteger los contenidos de un archivo y que no sea visualizado en forma inadecuada se
necesitan permisos de archivo.
[student@desktopX ~]$ ls -R
.:
Desktop Documents Downloads Music Pictures Public Templates Videos

./Desktop:

./Documents:
thesis_chapter1.odf thesis_chapter2.odf

./Downloads:

./Music:

./Pictures:

./Public:

./Templates:

./Videos:
blockbuster1.ogg blockbuster2.ogg
[student@desktopX ~]$

El comando cd tiene muchas opciones. Muy pocas son tan útiles como para justificar que se
practiquen por anticipado y se usen con cierta frecuencia. El comando cd - cambia el directorio al
directorio donde estaba el usuario antes de estar en el directorio actual. Observe cómo este
usuario aprovecha este comportamiento para alternar entre dos directorios; esta opción es
práctica cuando se procesa una serie de tareas similares.
[student@desktopX ~]$ cd Videos
[student@desktopX Videos]$ pwd
/home/student/Videos
[student@desktopX Videos]$ cd /home/student/Documents
[student@desktopX Documents]$ pwd
/home/student/Documents
[student@desktopX Documents]$ cd -
[student@desktopX Videos]$ pwd
/home/student/Videos
[student@desktopX Videos]$ cd -
[student@desktopX Documents]$ pwd
/home/student/Documents
[student@desktopX Documents]$ cd -
[student@desktopX Videos]$ pwd
/home/student/Videos
[student@desktopX Videos]$ cd
[student@desktopX ~]$

El comando cd .. usa el directorio oculto .. para ascender un nivel hasta el directorio principal, sin
necesidad de conocer el nombre exacto del directorio de inicio. El otro directorio oculto (.)
especifica el directorio actual en los comandos en que la ubicación actual es el argumento de
origen o destino y se evita la necesidad de escribir el nombre de la ruta absoluta del directorio.

[student@desktopX Videos]$ pwd


/home/student/Videos
[student@desktopX Videos]$ cd .
[student@desktopX Videos]$ pwd
/home/student/Videos
[student@desktopX Videos]$ cd ..
[student@desktopX ~]$ pwd
/home/student
[student@desktopX ~]$ cd ..
[student@desktopX home]$ pwd
/home
[student@desktopX home]$ cd ..
[student@desktopX /]$ pwd
/
[student@desktopX /]$ cd
[student@desktopX ~]$ pwd
/home/student
[student@desktopX ~]$

Referencias

info libc 'file name resolution' (Manual de referencia de biblioteca de GNU C)

 Sección 11.2.2: Resolución de nombre de archivo

Páginas de manual bash(1), cd(1), ls(1), pwd(1), unicode(7), y utf-8(7)


2.4 Práctica: Ubicación de archivos y directorios

Establezca una coincidencia entre los siguientes elementos y sus equivalentes de la tabla.

Arrastre y suelte los elementos en la celda junto a la respuesta correcta. Cada celda debe contener
una respuesta. Si usted desea modificar una respuesta, arrástrela a otra ubicación, o haga clic en
Restablecer para que la evaluación regrese a su configuración inicial.

Una vez que haya finalizado el cuestionario, haga clic en Check (verificar). Las respuestas correctas
tendrán un fondo azul y las respuestas incorrectas estarán tachadas. Si desea intentar de nuevo,
haga clic en Restablecer. Nota: Si tiene problemas para que la evaluación funcione por segunda
vez, intente actualizar el explorador. Haga clic en Mostrar Solución para ver todas las respuestas
correctas.

Acción que se debe completar Comando

Listar el directorio de inicio del usuario actual (formato extenso) en la


ls -l ~
sintaxis más simple, cuando no sea la ubicación actual.

Regrese al directorio de inicio del usuario actual. cd

Determine el nombre de la ruta absoluta de la ubicación actual. pwd

Regrese al directorio de trabajo más anterior. cd -

Ascienda dos niveles desde la ubicación actual. cd ../..

Listar la ubicación actual (formato extenso) con los archivos ocultos. ls -al

Avance hasta la ubicación de los archivos binarios desde cualquier


cd /bin
ubicación.

Ascienda hasta el directorio de inicio de la ubicación actual. cd ..

Avance hasta la ubicación de los archivos binarios desde el directorio root. cd bin
2.5 Administración de archivos con las herramientas de línea de comandos

Objetivos

Tras finalizar esta sección, los estudiantes deberían poder crear, copiar, vincular, desplazar y
eliminar archivos y subdirectorios en varios directorios.

Administración de archivos con las herramientas de línea de comandos

La administración de archivos implica la creación, la eliminación, el copiado y el desplazamiento de


archivos. Además, los directorios pueden crearse, eliminarse, copiarse y desplazarse para
organizar los archivos en forma lógica. Cuando se trabaja en la línea de comandos, la
administración de archivos requiere el conocimiento del directorio de trabajo actual para elegir
una sintaxis de ruta absoluta o relativa como la opción más eficiente para la tarea inmediata.

Comandos de administración de archivos

Actividad Fuente única (nota) Varias fuentes (nota)

Copiar
cp file1 file2 cp file1 file2 file3 dir (4)
archivo

Desplazar
mv file1 file2 (1) mv file1 file2 file3 dir (4)
archivos

Eliminar
rm file1 rm -f file1 file2 file3 (5)
archivo

Crear
mkdir dir mkdir -p par1/par2/dir (6)
directorio

Copiar
cp -r dir1 dir2 (2) cp -r dir1 dir2 dir3 dir4 (4)
directorio

Desplazar
mv dir1 dir2 (3) mv dir1 dir2 dir3 dir4 (4)
directorio

Eliminar
rm -r dir1 (2) rm -rf dir1 dir2 dir3 (5)
directorio
Nota:
(1)
El resultado es un nombre nuevo.

(2)
La opción "recursive" se requiere para procesar un
directorio fuente.

(3)
Si dir2 existe, el resultado es un movimiento. Si dir2 no
existe, es resultado es un nombre nuevo.

(4)
El último argumento debe ser un directorio.

(5)
Tenga precaución con la opción "force"; no se le
pedirá que confirme su acción.

(6)
Tenga precaución con la opción "create parent"; no se
detectan errores de escritura.

Creación de directorios
El comando mkdir crea uno o más directorios o subdirectorios y genera errores si ya existe el
nombre del archivo o cuando se intenta crear un directorio en un directorio de inicio que no existe.
La opción -p parent crea directorios de inicio faltantes para el destino solicitado. Tenga cuidado
cuando use mkdir -p ya que los errores de ortografía accidentales generan directorios involuntarios
sin activar mensajes de error.

En el siguiente ejemplo, un usuario intenta usar mkdir para crear un subdirectorio denominado
Watched en el directorio existente Videos, pero escribe mal el nombre del directorio.
[student@desktopX ~]$ mkdir Video/Watched
mkdir: cannot create directory `Video/Watched': No such file or directory

mkdir generó un error porque Videos se escribió mal y el directorio Video no existe. Si el usuario
utilizara mkdir con la opción -p, no habría ningún error y el usuario tendría dos directorios, Videos
y Video, y el subdirectorio Watched se crearía en el lugar equivocado.
[student@desktopX ~]$ mkdir Videos/Watched
[student@desktopX ~]$ cd Documents
[student@desktopX Documents]$ mkdir ProjectX ProjectY
[student@desktopX Documents]$ mkdir -p Thesis/Chapter1 Thesis/Chapter2 Thesis/Chapter3
[student@desktopX Documents]$ cd
[student@desktopX ~]$ ls -R Videos Documents
Documents:
ProjectX ProjectY Thesis thesis_chapter1.odf thesis_chapter2.odf

Documents/ProjectX:

Documents/ProjectY:

Documents/Thesis:
Chapter1 Chapter2 Chapter3

Documents/Thesis/Chapter1:

Documents/Thesis/Chapter2:

Documents/Thesis/Chapter3:

Videos:
blockbuster1.ogg blockbuster2.ogg Watched

Videos/Watched:

[student@desktopX ~]$

El último mkdir creó tres subdirectorios de ChapterN con un comando. La opción -p parent creó el
directorio de inicio faltante Thesis.

Copia de archivos
El comando cp copia uno o más archivos para que se conviertan en archivos nuevos e
independientes. La sintaxis permite copiar un archivo existente en un archivo nuevo en un directorio
actual o en otro directorio, o copiar varios archivos en otro directorio. En cualquier destino, los
nombres de los archivos nuevos deben ser únicos. Si el nombre del archivo nuevo no es único, el
comando de copia no sobrescribirá el archivo existente.
[student@desktopX ~]$ cd Videos
[student@desktopX Videos]$ cp blockbuster1.ogg blockbuster3.ogg
[student@desktopX Videos]$ ls -l
total 0
-rw-rw-r--. 1 student student 0 Feb 8 16:23 blockbuster1.ogg
-rw-rw-r--. 1 student student 0 Feb 8 16:24 blockbuster2.ogg
-rw-rw-r--. 1 student student 0 Feb 8 19:02 blockbuster3.ogg
drwxrwxr-x. 2 student student 4096 Feb 8 23:35 Watched
[student@desktopX Videos]$

Cuando se copian varios archivos con un comando, el último argumento debe ser un directorio. Los
archivos copiados conservan su nombre original en el directorio nuevo. Es probable que se
sobrescriban los nombres de archivo con conflicto que existan en el destino. Para evitar que los
usuarios sobrescriban directorios con contenido, existen varios comandos cp de archivo que omiten
directorios especificados como origen. Para poder copiar directorios que no están vacíos, es decir
con contenido, se requiere la opción -r recursive.
[student@desktopX Videos]$ cd ../Documents
[student@desktopX Documents]$ cp thesis_chapter1.odf thesis_chapter2.odf Thesis ProjectX
cp: omitting directory `Thesis'
[student@desktopX Documents]$ cp -r Thesis ProjectX
[student@desktopX Documents]$ cp thesis_chapter2.odf Thesis/Chapter2/
[student@desktopX Documents]$ ls -R
.:
ProjectX ProjectY Thesis thesis_chapter1.odf thesis_chapter2.odf

./ProjectX:
Thesis thesis_chapter1.odf thesis_chapter2.odf

./ProjectX/Thesis:

./ProjectY:

./Thesis:
Chapter1 Chapter2 Chapter3

./Thesis/Chapter1:

./Thesis/Chapter2:
thesis_chapter2.odf

./Thesis/Chapter3:
[student@desktopX Documents]$

En el primer comando cp, Thesis no pudo copiar, pero sí lo hicieronthesis_chapter1.odf y


thesis_chapter2.odf. Con la opción -r recursive, se pudo copiar Thesis.

Desplazamiento de archivos
El comando mv cambia el nombre a los archivos en el mismo directorio o reubica archivos en un
directorio nuevo. Los contenidos del archivo se conservan sin modificaciones. Los archivos que se
desplazan hacia un sistema de archivos diferente requieren de la creación de un archivo nuevo
mediante la copia del archivo de origen y, a continuación, la eliminación de dicho archivo. A pesar
de que, por lo general, los archivos grandes son transparentes para el usuario, pueden demorar
mucho en desplazarse.
[student@desktopX Videos]$ cd ../Documents
[student@desktopX Documents]$ ls -l
total 0
-rw-rw-r--. 1 student student 0 Feb 8 16:24 thesis_chapter1.odf
-rw-rw-r--. 1 student student 0 Feb 8 16:24 thesis_chapter2.odf
[student@desktopX Documents]$ mv thesis_chapter2.odf thesis_chapter2_reviewed.odf
[student@desktopX Documents]$ mv thesis_chapter1.odf Thesis/Chapter1
[student@desktopX Documents]$ ls -lR
.:
total 16
drwxrwxr-x. 2 student student 4096 Feb 11 11:58 ProjectX
drwxrwxr-x. 2 student student 4096 Feb 11 11:55 ProjectY
drwxrwxr-x. 5 student student 4096 Feb 11 11:56 Thesis
-rw-rw-r--. 1 student student 0 Feb 11 11:54 thesis_chapter2_reviewed.odf

./ProjectX:
total 0
-rw-rw-r--. 1 student student 0 Feb 11 11:58 thesis_chapter1.odf
-rw-rw-r--. 1 student student 0 Feb 11 11:58 thesis_chapter2.odf

./ProjectX/Thesis:
total 0
./ProjectY:
total 0

./Thesis:
total 12
drwxrwxr-x. 2 student student 4096 Feb 11 11:59 Chapter1
drwxrwxr-x. 2 student student 4096 Feb 11 11:56 Chapter2
drwxrwxr-x. 2 student student 4096 Feb 11 11:56 Chapter3

./Thesis/Chapter1:
total 0
-rw-rw-r--. 1 student student 0 Feb 11 11:54 thesis_chapter1.odf

./Thesis/Chapter2:
total 0
-rw-rw-r--. 1 student student 0 Feb 11 11:54 thesis_chapter2.odf

./Thesis/Chapter3:
total 0
[student@desktopX Documents]$

El primer comando mv es un ejemplo de cómo cambiarle el nombre a un archivo. El segundo


provoca que el archivo sea reubicado en otro directorio.

Eliminación de archivos y directorios. La sintaxis predeterminada para rm elimina archivos, pero no


directorios. La eliminación de un directorio y, potencialmente, de muchos subdirectorios y archivos
que estén en él, requiere de la opción-r recursive. No existe una función de deshacer la eliminación
de línea de comandos; ni tampoco una papelera de reciclaje desde donde se pueda restaurar la
eliminación.
[student@desktopX Documents]$ pwd
/home/student/Documents
[student@desktopX Documents]$ rm thesis_chapter2_reviewed.odf
[student@desktopX Documents]$ rm Thesis/Chapter1
rm: cannot remove `Thesis/Chapter1': Is a directory
[student@desktopX Documents]$ rm -r Thesis/Chapter1
[student@desktopX Documents]$ ls -l Thesis
total 8
drwxrwxr-x. 2 student student 4096 Feb 11 12:47 Chapter2
drwxrwxr-x. 2 student student 4096 Feb 11 12:48 Chapter3
[student@desktopX Documents]$ rm -ri Thesis
rm: descend into directory `Thesis'? y
rm: descend into directory `Thesis/Chapter2'? y
rm: remove regular empty file `Thesis/Chapter2/thesis_chapter2.odf'? y
rm: remove directory `Thesis/Chapter2'? y
rm: remove directory `Thesis/Chapter3'? y
rm: remove directory `Thesis'? y
[student@desktopX Documents]$

Luego de que rm no pudo eliminar el directorio Chapter1, la opción -r recursive pudo hacerlo en
forma correcta. El último comando rm analizó primero cada subdirectorio y eliminó en forma
individual los archivos que contenía antes de eliminar cada directorio que ahora está vacío. El uso
de -i pide la confirmación para cada eliminación de forma interactiva. Esto es básicamente lo
opuesto de -f, que fuerza la eliminación sin solicitar confirmación al usuario.
El comando rmdir elimina directorios solo si están vacíos. Los directorios eliminados no pueden
recuperarse.
[student@desktopX Documents]$ pwd
/home/student/Documents
[student@desktopX Documents]$ rmdir ProjectY
[student@desktopX Documents]$ rmdir ProjectX
rmdir: failed to remove `ProjectX': Directory not empty
[student@desktopX Documents]$ rm -r ProjectX
[student@desktopX Documents]$ ls -lR
.:
total 0
[student@desktopX Documents]$

El comando rmdir no pudo eliminar ProjectX que no estaba vacío, pero rm -r pudo hacerlo en forma
correcta.

Referencias

páginas de manual cp(1), mkdir(1), mv(1), rm(1) y rmdir(1)


2.6 Práctica: Administración de archivo de línea de comandos

En este ejercicio de laboratorio, practicará las técnicas eficientes para crear y organizar archivos con
directorios, copias de archivos y enlaces.

Resultados:
Los estudiantes practicarán cómo crear, reordenar y eliminar archivos.

Inicie sesión en su cuenta de estudiante en serverX. Comience en su directorio de inicio.

1. En el directorio de inicio, cree conjuntos de archivos de práctica vacíos para usar durante el
resto de este ejercicio de laboratorio. Si el comando pensado no se reconoce de inmediato,
se espera que los estudiantes usen la solución orientada para ver y practicar cómo se
resuelve la tarea. Use la opción completar con Tab de la shell y complete los nombres de
ruta con más facilidad.

Cree seis archivos con nombres como songX.mp3.

Cree seis archivos con nombres como snapX.jpg.

Cree seis archivos con nombres como filmX.avi.

En cada conjunto, reemplace la X con los números del 1 al 6.

[student@serverX ~]$ touch song1.mp3 song2.mp3 song3.mp3 song4.mp3 song5.mp3 song6.mp3


[student@serverX ~]$ touch snap1.jpg snap2.jpg snap3.jpg snap4.jpg snap5.jpg snap6.jpg
[student@serverX ~]$ touch film1.avi film2.avi film3.avi film4.avi film5.avi film6.avi
[student@serverX ~]$ ls -l

2. Desde el directorio de inicio, desplace los archivos de canciones en el subdirectorio Música,


los archivos de instantáneas en el subdirectorio Imágenes y los archivos de películas en el
subdirectorio Videos.

Cuando distribuya archivos desde una ubicación hacia muchas ubicaciones, primero cambie el
directorio que contiene los archivos de origen. Use la sintaxis de ruta más simple, absoluta o relativa,
para llegar al destino de cada tarea de administración de archivos.

[student@serverX ~]$ mv song1.mp3 song2.mp3 song3.mp3 song4.mp3 song5.mp3 song6.mp3 Music


[student@serverX ~]$ mv snap1.jpg snap2.jpg snap3.jpg snap4.jpg snap5.jpg snap6.jpg
Pictures
[student@serverX ~]$ mv film1.avi film2.avi film3.avi film4.avi film5.avi film6.avi
Videos
[student@serverX ~]$ ls -l Music Pictures Videos
3. En su directorio de inicio, cree tres subdirectorios para organizar los archivos en proyectos.
Llame a estos directorios amigos, familia y trabajo. Cree los tres directorios con un
comando.

Usará estos directorios para reorganizar los archivos en proyectos.

[student@serverX ~]$ mkdir friends family work


[student@serverX ~]$ ls -l

4. Ubicará algunos de los archivos nuevos en directorios de proyectos para familia y amigos.
Use todos los comandos que necesite. En este ejemplo, no tiene que usar un solo comando.
Para cada proyecto, primero cambie el directorio de proyecto y, a continuación, copie los
archivos de origen en este directorio. Las copias se generan porque conservará los originales
después de entregar estos proyectos a familiares y amigos.

Copie los archivos (de todo tipo) que tengan los números 1 y 2 en la carpeta de amigos.

Copie los archivos (de todo tipo) que tengan los números 3 y 4 en la carpeta de familia.

Cuando recopile archivos de varias ubicaciones en una ubicación, cambie el directorio que
contendrá los archivos de destino. Use la sintaxis de ruta más simple, absoluta o relativa, para llegar
al origen de cada tarea de administración de archivos.

[student@serverX ~]$ cd friends


[student@serverX friends]$ cp ~/Music/song1.mp3 ~/Music/song2.mp3 ~/Pictures/snap1.jpg
~/Pictures/snap2.jpg ~/Videos/film1.avi ~/Videos/film2.avi .
[student@serverX friends]$ ls -l
[student@serverX friends]$ cd ../family
[student@serverX family]$ cp ~/Music/song3.mp3 ~/Music/song4.mp3 ~/Pictures/snap3.jpg
~/Pictures/snap4.jpg ~/Videos/film3.avi ~/Videos/film4.avi .
[student@serverX family]$ ls -l

5. Para su proyecto de trabajo, creará copias adicionales.


[student@serverX family]$ cd ../work
[student@serverX work]$ cp ~/Music/song5.mp3 ~/Music/song6.mp3 ~/Pictures/snap5.jpg
~/Pictures/snap6.jpg ~/Videos/film5.avi ~/Videos/film6.avi .
[student@serverX work]$ ls -l

6. Ahora, los proyectos están listos. Es momento de borrar los proyectos.

Cambie a su directorio de inicio. Intente eliminar tanto el proyecto de familia como el de amigos
con un solo comando rmdir.
[student@serverX work]$ cd
[student@serverX ~]$ rmdir family friends
rmdir: failed to remove `family': Directory not empty
rmdir: failed to remove `friends': Directory not empty

El uso del comando rmdir debería generar un error ya que ambos directorios no están vacíos.

7. Use otro comando que pueda eliminar correctamente tanto la carpeta de familia como la
de amigos.

[student@serverX ~]$ rm -r family friends


[student@serverX ~]$ ls -l

8. Elimine todos los archivos del proyecto de trabajo, pero no elimine el directorio de trabajo.

[student@serverX ~]$ cd work


[student@serverX work]$ rm song5.mp3 song6.mp3 snap5.jpg snap6.jpg film5.avi film6.avi
[student@serverX work]$ ls -l

9. Por último, desde el directorio de inicio, use el comando rmdir para eliminar el directorio
de trabajo. El comando debería poder completar la acción sin errores ahora que está vacío.

[student@serverX work]$ cd
[student@serverX ~]$ rmdir work
[student@serverX ~]$ ls -l
2.7 Coincidencia de nombres de archivo mediante el uso de expansión de nombre de ruta

Objetivos

Tras finalizar esta sección, los estudiantes deberían poder usar metacaracteres y técnicas de
expansión para mejorar la eficiencia de procesamiento de administración de archivos.

Coincidencia de nombres de archivo mediante el uso de expansión de nombre de ruta

La shell Bash tiene una capacidad de coincidencia de nombre de ruta que, históricamente, se llamó
globbing, que es la forma abreviada del programa de expansión de ruta de archivo del “comando
global” de las primeras versiones de UNIX. La función globbing de Bash, que comúnmente se
denomina coincidencia de patrón o “comodines”, facilita la administración de grandes cantidades
de archivos. Si se usan los metacaracteres que se “expanden” para establecer una coincidencia
entre los archivos y los nombres de ruta que se buscan, los comandos trabajan en un conjunto de
archivos orientado de una vez.

Coincidencia del patrón


Globbing es una operación de análisis de comandos de la shell que expande un patrón de comodín
en una lista de nombres de ruta coincidentes. Los metacaracteres de la línea de comandos se
reemplazan por la lista de coincidencia antes de la ejecución del comando. Los patrones, en
especial las clases de carácter entre corchetes, que no ofrecen coincidencias, muestran la solicitud
de patrón original como texto literal. Los siguientes son metacaracteres y clases de patrón de uso
frecuente.

Patrón Coincidencias

* Cualquier secuencia de cero o más caracteres.

? Cualquier carácter individual.

~ El directorio de inicio del usuario actual.

~username Directorio de inicio del username del usuario.

~+ El directorio de trabajo actual.

~- El directorio de trabajo anterior.

[abc...] Cualquier carácter en la clase incluida.

[!abc...] Cualquier carácter que no esté incluido en la clase.

[^abc...] Cualquier carácter que no esté incluido en la clase.

[[:alpha:]] Cualquier carácter alfabético.(1)


Patrón Coincidencias

[[:lower:]] Cualquier carácter en minúsculas.(1)

[[:upper:]] Cualquier carácter en mayúscula.(1)

[[:alnum:]] Cualquier dígito o carácter alfabético.(1)

[[:punct:]] Cualquier carácter imprimible que no sea un espacio o alfanumérico.(1)

[[:digit:]] Cualquier dígito, de 0 a 9.(1)

Cualquier carácter de espacio en blanco; puede incluir tabulaciones,


[[:space:]] renglón nuevo, retornos de carro y avances de página, así como el
espacio.(1)

(1)
clase de carácter POSIX establecido previamente; se adapta a la región
Nota
actual.

Un conjunto de archivos de muestra sirve para demostrar la expansión.


[student@desktopX ~]$ mkdir glob; cd glob
[student@desktopX glob]$ touch alfa bravo charlie delta echo able baker cast dog easy
[student@desktopX glob]$ ls
able alfa baker bravo cast charlie delta dog easy echo
[student@desktopX glob]$

Primero, coincidencias de patrón simple que usa * y ?.


[student@desktopX glob]$ ls a*
able alfa
[student@desktopX glob]$ ls *a*
able alfa baker bravo cast charlie delta easy
[student@desktopX glob]$ ls [ac]*
able alfa cast charlie
[student@desktopX glob]$ ls ????
able alfa cast easy echo
[student@desktopX glob]$ ls ?????
baker bravo delta
[student@desktopX glob]$

Expansión de tilde
El carácter del tilde (~), cuando está seguido de una barra separadora, coincide con el directorio de
inicio del usuario actual. Si está seguido por una secuencia de caracteres hasta la barra, se
interpretará como un nombre de usuario, en caso de que uno coincida. Si ningún nombre de
usuario coincide, aparecerá el tilde actual seguido de la secuencia de caracteres.
[student@desktopX glob]$ ls ~/glob
able alfa baker bravo cast charlie delta dog easy echo
[student@desktopX glob]$ echo ~/glob
/home/student/glob
[student@desktopX glob]$

Expansión de llaves
La expansión de llaves se usa para generar secuencias discrecionales de caracteres. Las llaves
contienen una lista de secuencias, o una expresión de secuencias, separadas por comas. El
resultado incluye el texto que antecede o que sigue a la definición de llaves. Las expansiones de
llaves deben estar anidadas, una dentro de la otra.
[student@desktopX glob]$ echo {Sunday,Monday,Tuesday,Wednesday}.log
Sunday.log Monday.log Tuesday.log Wednesday.log
[student@desktopX glob]$ echo file{1..3}.txt
file1.txt file2.txt file3.txt
[student@desktopX glob]$ echo file{a..c}.txt
filea.txt fileb.txt filec.txt
[student@desktopX glob]$ echo file{a,b}{1,2}.txt
filea1.txt filea2.txt fileb1.txt fileb2.txt
[student@desktopX glob]$ echo file{a{1,2},b,c}.txt
filea1.txt filea2.txt fileb.txt filec.txt
[student@desktopX glob]$

Sustitución de comandos
La sustitución de comandos permite obtener un comando para reemplazar el comando mismo. La
sustitución de comandos se produce cuando un comando está encerrado entre un signo de dolar
al principio y paréntesis, $(comando), o con acento grave, `comando`. La forma acento grave es
más antigua y tiene dos desventajas: 1) el acento grave puede confundirse fácilmente a la vista
con las comillas simples, y 2) el acento grave no puede anidarse dentro de los acentos graves. La
forma $(comando) puede anidar varias expansiones de comando dentro de cada una.
[student@desktopX glob]$ echo Today is `date +%A`.
Today is Wednesday.
[student@desktopX glob]$ echo The time is $(date +%M) minutes past $(date +%l%p).
The time is 26 minutes past 11AM.
[student@desktopX glob]$

Evitar la expansión de argumentos


Muchos caracteres tienen un significado especial en la shell Bash. Para ignorar los significados
especiales del metacarácter, se usa la cita y el escape para evitar la expansión de la shell. La barra
invertida (\) es un carácter de escape en Bash y protege al carácter individual que sigue de que se
interprete de manera especial. Para proteger las secuencias de carácter más extensas, se usan
comillas simples (') o dobles (") para encerrar las secuencias.

Use comillas dobles para suprimir el globbing y la expansión de la shell, pero permite la sustitución
de comandos y variable. A nivel conceptual, la sustitución de variable es idéntica a la sustitución
de comandos, pero puede usar sintaxis de llaves opcional.
[student@desktopX glob]$ host=$(hostname -s); echo $host
desktopX
[student@desktopX glob]$ echo "***** hostname is ${host} *****"
***** hostname is desktopX *****
[student@desktopX glob]$ echo Your username variable is \$USER.
Your username variable is $USER.
[student@desktopX glob]$

Use comillas simples para interpretar todo el texto literalmente. Observe la diferencia, tanto en la
pantalla como en el teclado, entre las comillas simples (') y el acento grave de sustitución de
comando (`). Además de suprimir el globbing y la expansión de la shell, las comillas dirigen a la
shell para que también suprima la sustitución de comando y variable. El signo de interrogación es
el metacarácter que también necesita protección para evitar la expansión.
[student@desktopX glob]$ echo "Will variable $host evaluate to $(hostname -s)?"
Will variable desktopX evaluate to desktopX?
[student@desktopX glob]$ echo 'Will variable $host evaluate to $(hostname -s)?'
Will variable $host evaluate to $(hostname -s)?
[student@desktopX glob]$

Referencias

Páginas de manual bash(1), cd(1), glob(7), isalpha(3), ls(1), path_resolution(7) y pwd(1)


2.8 Práctica: Expansión de PATH Name

Establezca una coincidencia entre los siguientes elementos y sus equivalentes de la tabla.

Arrastre y suelte los elementos en la celda junto a la respuesta correcta. Cada celda debe contener
una respuesta. Si usted desea modificar una respuesta, arrástrela a otra ubicación, o haga clic en
Restablecer para que la evaluación regrese a su configuración inicial.

Una vez que haya finalizado el cuestionario, haga clic en Check (verificar). Las respuestas correctas
tendrán un fondo azul y las respuestas incorrectas estarán tachadas. Si desea intentar de nuevo,
haga clic en Restablecer. Nota: Si tiene problemas para que la evaluación funcione por segunda
vez, intente actualizar el explorador. Haga clic en Mostrar Solución para ver todas las respuestas
correctas.

Coincidencia solicitada que se debe encontrar Patrones

Solo nombres de archivos que comienzan con "b" b*

Solo nombres de archivos que terminan con "b" *b

Solo nombres de archivos que contienen una "b" *b*

Solo nombres de archivos donde el primer carácter no es "b" [!b]*

Solo nombres de archivos que tengan al menos 3 caracteres de largo ???*

Solo nombres de archivos que contengan un número *[[:digit:]]*

Solo nombres de archivos que comienzan con una letra mayúscula [[:upper:]]*
2.9 Ejercicio de laboratorio: Administración de archivos con expansión de shell

En este ejercicio de laboratorio, creará, moverá y eliminará archivos y carpetas usando una
variedad de atajos correspondientes a los nombres de archivos.

Resultados:
Familiaridad y práctica con muchas formas de comodines para localizar y usar archivos.

Realice los siguientes pasos en serverX, a menos que se le indique lo contrario. Inicie sesión como
student y comience en el directorio de inicio.

1. Para comenzar, cree conjuntos de archivos de práctica vacíos para usar en este
laboratorio. Si no se reconoce inmediatamente un atajo deseado de ampliación de la shell,
se espera que los estudiantes usen la solución para aprender y practicar. Utilice la
terminación (completado) del tabulador shell para localizar los nombres de ruta de
archivos fácilmente.

Cree un total de 12 archivos con nombres tv_seasonX_episodeY.ogg. Reemplace X con el número


de temporada e Y con el episodio de esa temporada, para dos temporadas de seis episodios cada
una.
[student@serverX ~]$ touch tv_season{1..2}_episode{1..6}.ogg
[student@serverX ~]$ ls -l

2. Como autor de una serie exitosa de novelas de misterio, los capítulos de su próximo
bestseller se están editando para publicarlos. Cree un total de ocho archivos con nombres
mystery_chapterX.odf. Reemplace la X con los números del 1 al 8.
[student@serverX ~]$ touch mystery_chapter{1..8}.odf
[student@serverX ~]$ ls -l

3. Para organizar los episodios de TV, cree dos subdirectorios denominados season1 y
season2 en el directorio Videos existente. Use solamente un comando.
[student@serverX ~]$ mkdir Videos/season{1..2}
[student@serverX ~]$ ls -lR

4. Trasladar los episodios de TV adecuados a los subdirectorios de temporadas. Use solo dos
comandos, especificando destinos con la sintaxis relativa.
[student@serverX ~]$ mv tv_season1* Videos/season1
[student@serverX ~]$ mv tv_season2* Videos/season2
[student@serverX ~]$ ls -lR
5. Para organizar los capítulos del libro de misterios, cree una jerarquía de directorios de dos
niveles con un comando. Cree my_bestseller en el directorio existente Documents y
chapters en el directorio my_bestseller.
[student@serverX ~]$ mkdir -p Documents/my_bestseller/chapters
[student@serverX ~]$ ls -lR

6. Con un comando, cree más subdirectorios directamente en el directorio my_bestseller.


Nombre a estos subdirectorios editor, plot_change y vacation. La opción create parent no
es necesaria porque el directorio principal my_bestseller ya existe.
[student@serverX ~]$ mkdir Documents/my_bestseller/{editor,plot_change,vacation}
[student@serverX ~]$ ls -lR

7. Cambie al directorio chapters. Use el atajo del directorio de inicio para especificar los
archivos de recursos, mueva todos los capítulos del libro al directorio chapters, que ahora
es el directorio actual. ¿Cuál es la sintaxis más simple para especificar el directorio de
destino?
[student@serverX ~]$ cd Documents/my_bestseller/chapters
[student@serverX chapters]$ mv ~/mystery_chapter* .
[student@serverX chapters]$ ls -l

8. Los primeros dos capítulos se envían al editor para la revisión. Para recordar no modificar
estos capítulos durante la revisión, traslade solamente estos dos capítulos al directorio
editor. Use la sintaxis relativa comenzando desde el subdirectorio chapters.
[student@serverX chapters]$ mv mystery_chapter1.odf mystery_chapter2.odf ../editor
[student@serverX chapters]$ ls -l
[student@serverX chapters]$ ls -l ../editor

9. Los capítulos 7 y 8 se escribirán mientras esté de vacaciones. Mueva los archivos desde
chapters hacia vacation. Use un comando sin caracteres comodines.
[student@serverX chapters]$ mv mystery_chapter7.odf mystery_chapter8.odf ../vacation
[student@serverX chapters]$ ls -l
[student@serverX chapters]$ ls -l ../vacation

10. Con un comando, cambie el directorio de trabajo para la ubicación de dos episodios de TV
de la temporada 2 y luego copie el primer episodio de la temporada en el directorio
vacation.
[student@serverX chapters]$ cd ~/Videos/season2
[student@serverX season2]$ cp tv_season2_episode1.ogg ~/Documents/my_bestseller/vacation
11. Con un comando, cambie el directorio de trabajo a vacation, luego detalle sus archivos.
También se necesita el episodio 2. Vuelva al directorio season2 usando el atajo directorio
de trabajo anterior. Este paso dará resultado si se logró el último cambio de directorio con
un comando . Copie el archivo del episodio 2 en vacation. Vuelva a vacation usando el
atajo nuevamente.
[student@serverX season2]$ cd ~/Documents/my_bestseller/vacation
[student@serverX vacation]$ ls -l
[student@serverX vacation]$ cd -
[student@serverX season2]$ cp tv_season2_episode2.ogg ~/Documents/my_bestseller/vacation
[student@serverX vacation]$ cd -
[student@serverX vacation]$ ls -l

12. Es posible que los capítulos 5 y 6 necesiten un cambio de argumento. Para evitar que estos
cambios modifiquen los archivos originales, copie ambos archivos en plot_change. Mueva
un directorio al directorio principal de vacation, luego use un comando desde allí.
[student@serverX vacation]$ cd ..
[student@serverX my_bestseller]$ cp chapters/mystery_chapter[56].odf plot_change
[student@serverX my_bestseller]$ ls -l chapters
[student@serverX my_bestseller]$ ls -l plot_change

13. Para realizar un seguimiento de los cambios, haga tres copias de seguridad del capítulo 5.
Cambie al directorio plot_change. Copie mystery_chapter5.odf como un nombre de
archivo nuevo para incluir la fecha completa (años-mes-día). Realice otra copia anexando
el sello de tiempo actual (como el número de segundos desde epoch) para asegurar un
nombre de archivo único. También haga una copia anexando el usuario actual ($USER) al
nombre del archivo. Consulte la solución para la sintaxis de todo lo que no esté seguro
(como qué argumentos pasar al comando date).
[student@serverX my_bestseller]$ cd plot_change
[student@serverX plot_change]$ cp mystery_chapter5.odf mystery_chapter5_$(date +%F).odf
[student@serverX plot_change]$ cp mystery_chapter5.odf mystery_chapter5_$(date +%s).odf
[student@serverX plot_change]$ cp mystery_chapter5.odf mystery_chapter5_$USER.odf
[student@serverX plot_change]$ ls -l

Observe que también podríamos hacer las mismas copias de seguridad de los archivos del capítulo
6.
14. Los cambios de argumento no fueron exitosos. Elimine el directorio plot_change. Primero,
elimine todos los archivos en el directorio plot_change. Cambie el directorio un nivel
arriba debido a que el directorio no se puede eliminar mientras sea el directorio de
trabajo. Para eliminar el directorio usando el comando rm sin la opción recursive. El
intento debe fallar. Ahora, use comando rmdir, que será correcto.
[student@serverX plot_change]$ rm mystery*
[student@serverX plot_change]$ cd ..
[student@serverX my_bestseller]$ rm plot_change
rm: cannot remove 'plot_change': Is a directory
[student@serverX my_bestseller]$ rmdir plot_change
[student@serverX my_bestseller]$ ls -l

15. Cuando finalicen las vacaciones, el directorio vacation ya no será necesario. Elimínelo
usando el comando rm con la opción recursive.

Una vez que haya finalizado, regrese al directorio de inicio.


[student@serverX my_bestseller]$ rm -r vacation
[student@serverX my_bestseller]$ ls -l
[student@serverX my_bestseller]$ cd

También podría gustarte