Articles

Trabajar Con Archivos y Directorios

Descripción

Enseñanza: 30 min
Ejercicios: 20 min
Preguntas

  • ¿Cómo puedo crear, copiar y eliminar archivos y directorios?

  • ¿Cómo puedo editar los archivos?

Objetivos

  • Crear una jerarquía de directorios que coincide con un diagrama.

  • Cree archivos en esa jerarquía utilizando un editor o copiando y renombrando archivos existentes.

  • Eliminar, copiar y mover archivos y/o directorios.

la Creación de directorios

ahora sabemos cómo explorar archivos y directorios,pero ¿cómo podemos crear en el primer lugar?

Paso uno: vea dónde estamos y lo que ya tenemos

Volvamos a nuestro directorio data-shell en el escritorio y use ls -F para ver lo que contiene:

$ pwd
/Users/nelle/Desktop/data-shell
$ ls -F
creatures/ data/ molecules/ north-pacific-gyre/ notes.txt pizza.cfg solar.pdf writing/

Crear un directorio

Vamos a crear un nuevo directorio llamado thesis mediante el comando mkdir thesis(que no tiene salida):

$ mkdir thesis

Como se puede adivinar por su nombre,mkdir significa ‘marca el directorio’.Dado que thesis es la ruta relativa (p. ej. no tiene un slash, como /what/ever/thesis),el nuevo directorio es creado en el directorio de trabajo actual:

$ ls -F
creatures/ data/ molecules/ north-pacific-gyre/ notes.txt pizza.cfg solar.pdf thesis/ writing/

Ya hemos creado el thesis el directorio, no hay nada en él todavía:

$ ls -F thesis

tenga en cuenta que mkdir no se limita a la creación de único directorios de una en una. El -p opción permite mkdir para crear un directorio con el número de subdirectorios anidados en una sola operación:

$ mkdir -p thesis/chapter_1/section_1/subsection_1

El -R la opción ls comando mostrará la lista de todos los subdirectorios anidados dentro de un directorio. Usemos ls -FR para listar recursivamente la nueva jerarquía de directorios que acabamos de crear debajo del directorio thesis :

$ ls -FR thesischapter_1/thesis/chapter_1:section_1/thesis/chapter_1/section_1:subsection_1/thesis/chapter_1/section_1/subsection_1:

Dos formas de hacer lo mismo

Usar el shell para crear un directorio no es diferente de usar un explorador de archivos.Si abre el directorio actual utilizando el explorador de archivos gráfico de su sistema operativo, el directorio thesis también aparecerá allí.Mientras que el shell y el explorador de archivos son dos formas diferentes de interactuar con los archivos,los archivos y directorios son los mismos.

Buenos nombres para archivos y directorios

Los nombres complicados de archivos y directorios pueden hacer que su vida sea difícil cuando trabaja en la línea de comandos. Aquí proporcionamos algunos consejos útiles para los nombres de sus archivos.

  1. No uses espacios.

    Los espacios pueden hacer que un nombre sea más significativo, pero dado que los espacios se usan para separar argumentos en la línea de comandos, es mejor evitarlos en los nombres de archivos y directorios.Puede usar - o _ en su lugar (p. ej. north-pacific-gyre/ en vez de north pacific gyre/).

  2. No comience el nombre con -(guión).Los comandos

    tratan los nombres que comienzan con- como opciones.

  3. Palo con letras, números, . (período o «full stop»), - (guión) y _ (guión bajo).

    Muchos otros caracteres tienen significados especiales en la línea de comandos.Aprenderemos sobre algunos de ellos durante esta lección.Hay caracteres especiales que pueden hacer que su comando no funcione como se esperaba e incluso puede resultar en la pérdida de datos.

Si necesita hacer referencia a nombres de archivos o directorios que tienen espacios u otros caracteres especiales, debe rodear el nombre entre comillas ("").

Crear un archivo de texto

Cambiemos nuestro directorio de trabajo a thesis usando cd, luego ejecute un editor de texto llamado Nano para crear un archivo llamado draft.txt:

$ cd thesis$ nano draft.txt

Qué Editor?

Cuando decimos, ‘nano es un editor de texto ‘realmente queremos decir ‘texto’: funciona canónicamente con datos de caracteres simples, no tablas, imágenes o cualquier otro medio amigable con las personas. Lo usamos en ejemplos porque es uno de los últimos editores de texto complejos. Sin embargo, debido a este rasgo, puede que no sea lo suficientemente potente o flexible para el trabajo que necesita hacer después de este taller. En sistemas Unix (como Linux y macOS),muchos programadores usan Emacs orVim (los cuales requieren más tiempo para aprender),o un editor gráfico como Gedit. En Windows, es posible que desee utilizar Bloc de notas++. Windows también tiene un editor integrado llamado notepad que se puede ejecutar desde la línea de comandos en el mismo camino como nano para los propósitos de esta lección.

No importa qué editor utilices, necesitarás saber dónde busca y guarda los archivos. Si lo inicias desde el shell, (probablemente)usará tu directorio de trabajo actual como su ubicación predeterminada. Si utiliza el menú inicio de su computadora, es posible que desee guardar los archivos en el directorio de documentos de escritorio. Puede cambiar esto navegando a otro directorio la primera vez que ‘Guardar como Save’

Escribamos algunas líneas de texto.Una vez que estemos satisfechos con nuestro texto, podemos presionar Ctrl+O(presionar la tecla Ctrl o Control y, mientras lo mantenemos hacia abajo, presionar la tecla O) para escribir nuestros datos en el disco(se nos preguntará en qué archivo queremos guardar esto:presionar Return para aceptar el valor predeterminado sugerido de draft.txt).

captura de pantalla del editor de texto nano en acción

Una vez guardado nuestro archivo, podemos usar Ctrl+X para salir del editor y volver al shell.

Tecla Control, Ctrl o ^

La tecla Control también se llama tecla ‘Ctrl’. Hay varias maneras de describir el uso de la tecla de control. Por ejemplo, puede ver una instrucción para presionar la tecla Control y,mientras la mantiene pulsada, presionar la tecla X, descrita como cualquiera de:

  • Control-X
  • Control+X
  • Ctrl-X
  • Ctrl+X
  • ^X
  • C-x

En nano, a lo largo de la parte inferior de la pantalla verás ^G Get Help ^O WriteOut.Esto significa que usted puede usar Control-G para obtener ayuda e Control-O para guardar yourfile.

nano no deja de salida en la pantalla después de que sale,pero ls muestra ahora que hemos creado un archivo llamado draft.txt:

$ ls
draft.txt

la Creación de Archivos de una Manera Diferente

Hemos visto cómo crear archivos de texto usando la etiqueta nano editor.Ahora, prueba el siguiente comando:

$ touch my_file.txt
  1. ¿Qué hizo el touch comando hacer?Cuando observa su directorio actual utilizando el explorador de archivos GUI, ¿aparece el archivo?

  2. Use ls -l para inspeccionar los archivos. ¿Qué tamaño tiene my_file.txt?

  3. ¿Cuándo desea crear un archivo de esta manera?

Solución

  1. El touch comando genera un nuevo archivo llamado my_file.txt ensu directorio actual. Puede observar este archivo recién generado escribiendo ls en el indicador de línea de comandos. my_file.txt también se puede ver en el explorador de archivos de sugui.

  2. Cuando inspeccione el archivo con ls -l, tenga en cuenta que el tamaño demy_file.txt es de 0 bytes. En otras palabras, no contiene datos.Si abre my_file.txt usando su editor de texto, está en blanco.

  3. Algunos programas no generan archivos de salida por sí mismos, pero en lugar de eso requieren que ya se hayan generado archivos vacíos.Cuando se ejecuta el programa, busca un archivo existente para rellenar con su salida. El comando táctil le permite generar eficientemente un archivo de texto en blanco para ser utilizado por programas de este tipo.

¿Qué hay En Un Nombre?

Es posible que haya notado que todos los archivos de Nelle se llaman ‘algo dotsomething’, y en esta parte de la lección, siempre usamos la extensión.txt. Esto es solo una convención: podemos llamar a un archivo mythesis o casi cualquier otra cosa que queramos. Sin embargo, la mayoría de las personas usan nombres de dos partes la mayor parte del tiempo para ayudarles (y a sus programas) a distinguir diferentes tipos de archivos. La segunda parte de dicho nombre se llama extensión de nombre de archivo, e indica qué tipo de datos contiene el archivo: .txt indica un archivo de texto sin formato, .pdfindica un documento PDF, .cfg es un archivo de configuración lleno de parámetros para algún programa u otro, .png es una imagen PNG, y así sucesivamente.

Esto es solo una convención, aunque importante. Los archivos de containbytes: depende de nosotros y de nuestros programas interpretar esos bytes de acuerdo con las reglas para archivos de texto sin formato, documentos PDF, archivos de configuración, imágenes, etc.

Nombrar una imagen PNG de una ballena comowhale.mp3 no se convierte mágicamente en una grabación de canto de ballena, aunque puede deberse a que el sistema operativo intente abrirla con un reproductor de música cuando alguien haga doble clic en ella.

Mover archivos y directorios

Volver al directorio data-shell,

cd ~/Desktop/data-shell/

En nuestrotenemos un archivodraft.txt que no es un nombre particularmente informativo,así que cambiemos el nombre del archivo usando mv, que es la abreviatura de ‘move’:

$ mv thesis/draft.txt thesis/quotes.txt

El primer argumento le dice a mv lo que estamos ‘moviendo’,mientras que el segundo es a dónde debemos ir.En este caso, estamos moviendo thesis/draft.txt a thesis/quotes.txt,que tiene el mismo efecto que cambiar el nombre del archivo.Por supuesto,ls nos muestra que thesis ahora contiene un archivo llamado quotes.txt:

$ ls thesis
quotes.txt

Hay que tener cuidado al especificar el nombre del archivo de destino, ya quemv sobrescribirá cualquier archivo existente con el mismo nombre, lo que podría conducir a la pérdida de datos. Una opción adicional, mv -i(o mv --interactive),se puede usar para hacer que mv le pida confirmación antes de sobrescribir.

Tenga en cuenta quemv también funciona en directorios.

Movamosquotes.txt al directorio de trabajo actual.Usamos mv una vez más,pero esta vez usaremos solo el nombre de un directorio como segundo argumento para decirle a mv que queremos mantener el nombre del archivo, pero colocarlo en un lugar nuevo.(Esta es la razón por la que el comando se llama ‘mover’.)En este caso, el nombre de directorio que usamos es el nombre de directorio especial . que mencionamos anteriormente.

$ mv thesis/quotes.txt .

El efecto es mover el archivo desde el directorio en el que estaba en el directorio de trabajo actual.ls ahora nos muestra que el thesis está vacío:

$ ls thesis

Además, ells con un nombre de archivo o directorio como argumento sólo muestra que el archivo o directorio.Podemos utilizar esto para ver que quotes.txt sigue en nuestro directorio actual:

$ ls quotes.txt
quotes.txt

Mover Archivos a una nueva carpeta

Después de la ejecución de los siguientes comandos,Jamie se da cuenta de que ella ponga los archivos sucrose.dat y maltose.dat en la carpeta equivocada. Los archivos deberían haberse colocado en la carpeta raw.

$ ls -F analyzed/ raw/$ ls -F analyzedfructose.dat glucose.dat maltose.dat sucrose.dat$ cd analyzed

Llene los espacios en blanco para mover estos archivos a la etiqueta raw/ carpeta(es decir, el que ella se olvidó de poner en)

$ mv sucrose.dat maltose.dat ____/____

Solución

$ mv sucrose.dat maltose.dat ../raw

Recordemos que el .. hace referencia al directorio padre (es decir, uno por encima del directorio actual)y que . hace referencia al directorio actual.

Copiar archivos y directorios

El cp comando funciona muy parecido a mv,salvo que se copia un archivo en lugar de moverlo.Podemos comprobar que hizo lo correcto usando ls con dos rutas como argumentos, como la mayoría de los comandos Unix,ls se pueden dar varias rutas a la vez:

$ cp quotes.txt thesis/quotations.txt$ ls quotes.txt thesis/quotations.txt
quotes.txt thesis/quotations.txt

también podemos copiar un directorio y todo su contenido mediante el uso de therecursive opción -r,por ejemplo, copia de seguridad de un directorio:

$ cp -r thesis thesis_backup

podemos comprobar el resultado de la lista el contenido de la etiqueta thesis y thesis_backup directorio:

$ ls thesis thesis_backup
thesis:quotations.txtthesis_backup:quotations.txt

Cambiar el nombre de los archivos

creó un archivo de texto sin formato en su directorio actual para contener una lista de las pruebas estadísticas que necesitará hacer para analizar sus datos, y lo nombró: statstics.txt

¡Después de crear y guardar este archivo, se da cuenta de que escribió mal el nombre del archivo! Desea corregir el error, ¿cuál de los siguientes comandos podría usar para hacerlo?

  1. cp statstics.txt statistics.txt
  2. mv statstics.txt statistics.txt
  3. mv statstics.txt .
  4. cp statstics.txt .

Solución

  1. No. Si bien esto crearía un archivo con el nombre correcto, el archivo con nombre incorrecto todavía existe en el directorio y tendría que eliminarse.
  2. Sí, esto funcionaría para cambiar el nombre del archivo.
  3. No, el punto(.) indica dónde mover el archivo, pero no proporciona un nombre de archivo nuevo; no se pueden crear nombres de archivo idénticos.
  4. No, el punto(.) indica dónde copiar el archivo, pero no proporciona un nombre de archivo nuevo; no se pueden crear nombres de archivo idénticos.

Mover y Copiar

¿Cuál es la salida de la etiqueta de cierre ls comando en la secuencia que se muestra a continuación?

$ pwd
/Users/jamie/data
$ ls
proteins.dat
$ mkdir recombined$ mv proteins.dat recombined/$ cp recombined/proteins.dat ../proteins-saved.dat$ ls
  1. proteins-saved.dat recombined
  2. recombined
  3. proteins.dat recombined
  4. proteins-saved.dat

Solution

We start in the /Users/jamie/data directory, and create a new folder called recombined.La segunda línea se mueve (mv) en el archivo proteins.dat a la nueva carpeta (recombined).La tercera línea hace una copia del archivo que acabamos de mover. La parte difícil aquí es donde se copió el archivo. Recuerde que .. significa «subir un nivel», por lo que el archivo copiado ahora está en /Users/jamie.Observe que .. se interpreta con respecto a la actual workingdirectory, no con respecto a la ubicación del archivo que se está copiando.Por lo tanto, lo único que se mostrará usando ls (in /Users/jamie/data) es la carpeta recombinada.

  1. No, véase la explicación anterior. proteins-saved.dat se encuentra en /Users/jamie
  2. No, ver explicación arriba. proteins.dat se encuentra en /Users/jamie/data/recombined
  3. No, ver explicación arriba. proteins-saved.dat se encuentra en /Users/jamie

Eliminar archivos y directorios

Volver a la etiqueta data-shell el directorio,vamos a arreglar este directorio mediante la eliminación de la etiqueta quotes.txt archivo que hemos creado.El comando Unix que usaremos para esto es rm (corto para «quitar»):

$ rm quotes.txt

podemos confirmar que el archivo se ha ido utilizando ls:

$ ls quotes.txt
ls: cannot access 'quotes.txt': No such file or directory

Eliminar para Siempre

El shell de Unix no tiene una papelera de reciclaje que podemos recuperar deletedfiles de (aunque la mayoría de las interfaces gráficas para Unix hacer). En su lugar, cuando eliminamos archivos, se desvinculan del sistema de archivos para que su espacio de almacenamiento en el disco pueda reciclarse. Existen herramientas para encontrar y recuperar archivos eliminados, pero no hay garantía de que funcionen en ninguna situación en particular, ya que la computadora puede reciclar el espacio en disco del archivo de inmediato.

Usando rm de forma segura

¿Qué sucede cuando ejecutamos rm -i thesis_backup/quotations.txt?¿Por qué querríamos esta protección cuando usamos rm?

Solución

$ rm: remove regular file 'thesis_backup/quotations.txt'? y

El -i opción preguntar antes de (cada) eliminación (uso Y para confirmar la eliminación o N para guardar el archivo).El shell de Unix no tiene una papelera, por lo que todos los archivos eliminados desaparecerán forever.By usando la opción -i, tenemos la oportunidad de comprobar que solo eliminamos los archivos que queremos eliminar.

Si tratamos de eliminar el thesis directorio rm thesis,se obtiene un mensaje de error:

$ rm thesis
rm: cannot remove `thesis': Is a directory

Esto sucede porque rm por defecto, sólo funciona en los archivos, no de los directorios.

rm puede eliminar un directorio y todo su contenido si usamos la opción de recuperación -r, y lo hará sin ninguna solicitud de confirmación:

$ rm -r thesis

Dado que no hay forma de recuperar archivos borrados usando el shell,rm -rdebe usarse con gran precaución (puede considerar agregar la opción interactiva rm -r -i).

Operaciones con varios archivos y directorios

A menudo es necesario copiar o mover varios archivos a la vez. Esto se puede hacer proporcionando una lista de nombres de archivo individuales, o especificando un patrón de nombres usando comodines.

Copiar con varios nombres de archivo

Para este ejercicio, puede probar los comandos en el directorio data-shell/data.

En el ejemplo siguiente, ¿qué hace cp cuando se le dan varios nombres de archivo y un nombre de directorio?

$ mkdir backup$ cp amino-acids.txt animals.txt backup/

En el ejemplo de abajo, ¿qué significa cp hacer cuando se administra tres o más nombres de archivo?

$ ls -F
amino-acids.txt animals.txt backup/ elements/ morse.txt pdb/ planets.txt salmon.txt sunspot.txt
$ cp amino-acids.txt animals.txt morse.txt

Solución

Si se administra más de un nombre de archivo seguido por un nombre de directorio (es decir, el directorio de destino debe el último argumento), cp copias de los archivos para el nombre de directorio.

Si se le dan tres nombres de archivo, cp arroja un error como el de abajo, porque está esperando un directoryname como último argumento.

cp: target ‘morse.txt’ is not a directory

Using wildcards for accessing multiple files at once

Wildcards

* is a wildcard, which matches zero or more characters.Let’s consider the data-shell/molecules directory:*.pdb matches ethane.pdbpropane.pdb, and everyfile that ends with ‘.pdb’. Por otro lado, p*.pdb solo coincide conpentane.pdb y propane.pdb, porque la ‘p’ en la parte frontal solo coincide con los nombres de archivo que comienzan con la letra ‘p’.

? también es un comodín, pero no coincide exactamente un carácter.Así ?ethane.pdb podría coincidir con el methane.pdb mientras*ethane.pdb coincide con los dos ethane.pdb y methane.pdb.

Los comodines se pueden usar en combinación con los demás.g. ???ane.pdb partidos de tres caracteres seguido de ane.pdb,dando cubane.pdb ethane.pdb octane.pdb.

Cuando el shell ve un comodín, lo expande para crear una lista de nombres de archivo coincidentes antes de ejecutar el comando para el que se solicitó. Como excepción, si una expresión comodín no coincide con ningún archivo, Bash pasará la expresión como argumento a los comandos como es. Por ejemplo, escribir ls *.pdf en el directorio molecules(que solo contiene archivos con nombres que terminan con .pdb) da como resultado un mensaje de error de que no hay ningún archivo llamado *.pdf.Sin embargo, generalmente los comandos como wc y ls ven las listas de nombres de archivo que coinciden con estas expresiones, pero no los comodines en sí. Es el shell, no los otros programas, el que trata con comodines expandidos, y este es otro ejemplo de diseño ortogonal.

Lista de nombres de archivo que coinciden con un patrón

Cuando se ejecuta en el directorio molecules, que ls ¿producirá esta salida?

ethane.pdb methane.pdb

  1. ls *t*ane.pdb
  2. ls *t?ne.*
  3. ls *t??ne.pdb
  4. ls ethane.*

Solution

The solution is

shows all files whose names contain zero or more characters (*) followed by the letter t, then zero or more characters (*) followed by ane.pdb. Esto da ethane.pdb methane.pdb octane.pdb pentane.pdb.

muestra todos los archivos cuyos nombres comienzan con cero o más caracteres (*), seguido por la letra t, entonces un solo carácter (?), entonces ne. seguido por cero o más caracteres (*). Esto nos dará octane.pdb y pentane.pdb pero no coincide con lo que termina en thane.pdb.

corrige los problemas de la opción 2, por la coincidencia de dos caracteres (??) entre t y ne. Esta es la solución.

sólo muestra los archivos empezando con ethane..

Más información sobre comodines

Sam tiene un directorio que contiene datos de calibración, conjuntos de datos y descripciones de los conjuntos de datos:

.├── 2015-10-23-calibration.txt├── 2015-10-23-dataset1.txt├── 2015-10-23-dataset2.txt├── 2015-10-23-dataset_overview.txt├── 2015-10-26-calibration.txt├── 2015-10-26-dataset1.txt├── 2015-10-26-dataset2.txt├── 2015-10-26-dataset_overview.txt├── 2015-11-23-calibration.txt├── 2015-11-23-dataset1.txt├── 2015-11-23-dataset2.txt├── 2015-11-23-dataset_overview.txt├── backup│ ├── calibration│ └── datasets└── send_to_bob ├── all_datasets_created_on_a_23rd └── all_november_files

Antes de salir a otra excursión, quiere hacer una copia de seguridad de sus datos y enviar algunos conjuntos de datos a su colega Bob. Sam utiliza los siguientes comandos para realizar el trabajo:

$ cp *dataset* backup/datasets$ cp ____calibration____ backup/calibration$ cp 2015-____-____ send_to_bob/all_november_files/$ cp ____ send_to_bob/all_datasets_created_on_a_23rd/

Ayuda a Sam rellenando los espacios en blanco.

La estructura de directorio resultante debería tener este aspecto

.├── 2015-10-23-calibration.txt├── 2015-10-23-dataset1.txt├── 2015-10-23-dataset2.txt├── 2015-10-23-dataset_overview.txt├── 2015-10-26-calibration.txt├── 2015-10-26-dataset1.txt├── 2015-10-26-dataset2.txt├── 2015-10-26-dataset_overview.txt├── 2015-11-23-calibration.txt├── 2015-11-23-dataset1.txt├── 2015-11-23-dataset2.txt├── 2015-11-23-dataset_overview.txt├── backup│ ├── calibration│ │ ├── 2015-10-23-calibration.txt│ │ ├── 2015-10-26-calibration.txt│ │ └── 2015-11-23-calibration.txt│ └── datasets│ ├── 2015-10-23-dataset1.txt│ ├── 2015-10-23-dataset2.txt│ ├── 2015-10-23-dataset_overview.txt│ ├── 2015-10-26-dataset1.txt│ ├── 2015-10-26-dataset2.txt│ ├── 2015-10-26-dataset_overview.txt│ ├── 2015-11-23-dataset1.txt│ ├── 2015-11-23-dataset2.txt│ └── 2015-11-23-dataset_overview.txt└── send_to_bob ├── all_datasets_created_on_a_23rd │ ├── 2015-10-23-dataset1.txt │ ├── 2015-10-23-dataset2.txt │ ├── 2015-10-23-dataset_overview.txt │ ├── 2015-11-23-dataset1.txt │ ├── 2015-11-23-dataset2.txt │ └── 2015-11-23-dataset_overview.txt └── all_november_files ├── 2015-11-23-calibration.txt ├── 2015-11-23-dataset1.txt ├── 2015-11-23-dataset2.txt └── 2015-11-23-dataset_overview.txt

Solución

$ cp *calibration.txt backup/calibration$ cp 2015-11-* send_to_bob/all_november_files/$ cp *-23-dataset* send_to_bob/all_datasets_created_on_a_23rd/

la Organización de Directorios y Archivos

Jamie está trabajando en un proyecto y ve que sus archivos no están muy bien organizadas:

$ ls -F
analyzed/ fructose.dat raw/ sucrose.dat

El fructose.dat y sucrose.dat archivos de contener la salida de su dataanalysis. ¿Qué comando(s) cubierto (s) en esta lección necesita ejecutar para que los comandos a continuación produzcan la salida mostrada?

$ ls -F
analyzed/ raw/
$ ls analyzed
fructose.dat sucrose.dat

Solution

mv *.dat analyzed

Jamie needs to move her files fructose.dat and sucrose.dat to the analyzed directory.The shell will expand *.dat to match all .dat files in the current directory.The mv command then moves the list of .archivos dat al directorio ‘analizado’.

Reproduzca una estructura de carpetas

Está comenzando un nuevo experimento y desea duplicar la estructura de directoristruction de su experimento anterior para poder agregar nuevos datos.

Suponga que el experimento anterior está en una carpeta llamada ‘2016-05-18’,que contiene una carpeta data que a su vez contiene carpetas llamadas raw yprocessed que contienen archivos de datos. El objetivo es copiar la estructura de carpetas de la carpeta 2016-05-18-data en una carpeta llamada 2016-05-20para que su estructura de directorios final se vea así:

2016-05-20/└── data ├── processed └── raw

Cuál de los siguientes comandos ¿lograría este objetivo?¿Qué harían los otros comandos?

$ mkdir 2016-05-20$ mkdir 2016-05-20/data$ mkdir 2016-05-20/data/processed$ mkdir 2016-05-20/data/raw
$ mkdir 2016-05-20$ cd 2016-05-20$ mkdir data$ cd data$ mkdir raw processed
$ mkdir 2016-05-20/data/raw$ mkdir 2016-05-20/data/processed
$ mkdir -p 2016-05-20/data/raw$ mkdir -p 2016-05-20/data/processed
$ mkdir 2016-05-20$ cd 2016-05-20$ mkdir data$ mkdir raw processed

Solución

Los dos primeros conjuntos de comandos de lograr este objetivo.El primer conjunto utiliza rutas relativas para crear el directorio de nivel superior antes de los subdirectorios.

El tercer conjunto de comandos dará un error porque el comportamiento predeterminado de mkdir no creará una subdirectora de un directorio inexistente: las carpetas de nivel intermedio deben crearse primero.

El cuarto conjunto de comandos logra este objetivo. Recuerde, la opción -p, seguida de una ruta de uno o más directorios, hará que mkdir cree cualquier subdirectorio intermedio según sea necesario.

El conjunto final de comandos genera los directorios’ raw ‘y’ processed ‘al mismo nivel que el directorio’ data’.

Puntos Clave

  • cp copia un archivo.

  • mkdir crea un nuevo directorio.

  • mv mueve (cambia el nombre) un archivo o directorio.

  • rm elimina (borra) un archivo.

  • *coincide con cero o más caracteres en un nombre de archivo, por lo que*.txtcoincide con todos los archivos que terminan en.txt.

  • ? coincide con cualquier carácter en un nombre de archivo, por lo que ?.txt partidos de a.txt, pero no any.txt.

  • el Uso de la tecla de Control puede ser descrita de muchas maneras, incluyendo Ctrl-XControl-X y ^X.

  • El shell no tiene una papelera de reciclaje: una vez que algo se borra, realmente desaparece.

  • La mayoría de los nombres de los archivos son something.extension. La extensión no es necesaria y no garantiza nada, pero normalmente se usa para indicar el tipo de datos en el archivo.

  • Dependiendo del tipo de trabajo que realice, es posible que necesite un editor de texto más potente que Nano.