Trabajar Con Archivos y Directorios
Descripción
Enseñanza: 30 min
Ejercicios: 20 minPreguntas
¿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.
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 denorth pacific gyre/
).No comience el nombre con
-
(guión).Los comandostratan los nombres que comienzan con
-
como opciones.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 llamadonotepad
que se puede ejecutar desde la línea de comandos en el mismo camino comonano
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
).
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 usarControl-G
para obtener ayuda eControl-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
¿Qué hizo el
touch
comando hacer?Cuando observa su directorio actual utilizando el explorador de archivos GUI, ¿aparece el archivo?Use
ls -l
para inspeccionar los archivos. ¿Qué tamaño tienemy_file.txt
?¿Cuándo desea crear un archivo de esta manera?
Solución
El
touch
comando genera un nuevo archivo llamadomy_file.txt
ensu directorio actual. Puede observar este archivo recién generado escribiendols
en el indicador de línea de comandos.my_file.txt
también se puede ver en el explorador de archivos de sugui.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 abremy_file.txt
usando su editor de texto, está en blanco.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 archivomythesis
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,.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 como
whale.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
ymaltose.dat
en la carpeta equivocada. Los archivos deberían haberse colocado en la carpetaraw
.$ 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?
cp statstics.txt statistics.txt
mv statstics.txt statistics.txt
mv statstics.txt .
cp statstics.txt .
Solución
- 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.
- Sí, esto funcionaría para cambiar el nombre del archivo.
- 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.
- 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
proteins-saved.dat recombined
recombined
proteins.dat recombined
proteins-saved.dat
Solution
We start in the
/Users/jamie/data
directory, and create a new folder calledrecombined
.La segunda línea se mueve (mv
) en el archivoproteins.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.
- No, véase la explicación anterior.
proteins-saved.dat
se encuentra en/Users/jamie
- Sí
- No, ver explicación arriba.
proteins.dat
se encuentra en/Users/jamie/data/recombined
- 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 usamosrm
?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 -r
debe 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 thedata-shell/molecules
directory:*.pdb
matchesethane.pdb
propane.pdb
, and everyfile that ends with ‘.pdb’. Por otro lado,p*.pdb
solo coincide conpentane.pdb
ypropane.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 elmethane.pdb
mientras*ethane.pdb
coincide con los dosethane.pdb
ymethane.pdb
.Los comodines se pueden usar en combinación con los demás.g.
???ane.pdb
partidos de tres caracteres seguido deane.pdb
,dandocubane.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 directoriomolecules
(que solo contiene archivos con nombres que terminan con.pdb
) da como resultado un mensaje de error de que no hay ningún archivo llamadowc
yls
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
, quels
¿producirá esta salida?
ethane.pdb methane.pdb
ls *t*ane.pdb
ls *t?ne.*
ls *t??ne.pdb
ls ethane.*
Solution
The solution is
shows all files whose names contain zero or more characters (
*
) followed by the lettert
, then zero or more characters (*
) followed byane.pdb
. Esto daethane.pdb methane.pdb octane.pdb pentane.pdb
.
muestra todos los archivos cuyos nombres comienzan con cero o más caracteres (
*
), seguido por la letrat
, entonces un solo carácter (?
), entoncesne.
seguido por cero o más caracteres (*
). Esto nos daráoctane.pdb
ypentane.pdb
pero no coincide con lo que termina enthane.pdb
.
corrige los problemas de la opción 2, por la coincidencia de dos caracteres (
??
) entret
yne
. 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
ysucrose.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
andsucrose.dat
to theanalyzed
directory.The shell will expand *.dat to match all .dat files in the current directory.Themv
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 llamadasraw
yprocessed
que contienen archivos de datos. El objetivo es copiar la estructura de carpetas de la carpeta2016-05-18-data
en una carpeta llamada2016-05-20
para 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á quemkdir
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*.txt
coincide con todos los archivos que terminan en.txt
.
?
coincide con cualquier carácter en un nombre de archivo, por lo que?.txt
partidos dea.txt
, pero noany.txt
.el Uso de la tecla de Control puede ser descrita de muchas maneras, incluyendo
Ctrl-X
Control-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.
Leave a Reply