La línea de comandos es una forma de controlar una computadora sin una GUI. En esta unidad, aprenderemos los comandos básicos para interactuar con nuestra computadora.
Conclusiones principales
- Los alumnos se moverán por la computadora con comandos.
- Los alumnos crearán, moverán, copiarán y borrarán archivos y carpetas.
¿Qué es la línea de comandos?
La mayoría de los usuarios utilizan una Interfaz gráfica de usuario (GUI) para interactuar con la computadora. Por lo general, las GUI dependen de un mouse o una interfaz táctil para manipular ventanas con íconos, botones, barras de desplazamiento, etcétera.
La línea de comandos es una vista alternativa de la computadora. A veces se conoce como terminal, shell o interfaz de texto, y la línea de comandos es la siguiente:
- Una forma de interactuar con un programa informático en el que el usuario escribe comandos, p. ej.:
open README.txt
- Una forma de navegar y operar tu computadora sin usar el mouse.
- Una forma no gráfica de crear, leer, actualizar y borrar tus archivos y directorios, p. ej.:
mv README.txt readme.txt
La GUI y la línea de comandos están mirando lo mismo. Son diferentes maneras de interactuar con la computadora.
¿Cuándo usamos la línea de comandos?
A menudo, los desarrolladores prefieren las interfaces de línea de comandos:
- Proporcionan un medio más conciso para controlar un programa o sistema operativo. ¿Por qué? Porque todo sucede en la misma ventana y, con práctica, implica menos esfuerzo que encontrar y manipular elementos con un mouse.
- Exponen fácilmente opciones para controlar un comando. ¿Por qué? Los menús de las GUI proporcionan muy pocas opciones. En la línea de comandos, hay cientos de comandos, y algunos caracteres agregados a un comando pueden hacer que se ejecuten de muchas formas, p. ej.,
ls
Archivos de lista básicosls -a
Enumera todos los archivos, incluidos los ocultos normalmente.ls -l
Lista larga, en la que se muestra información sobre cada archivols -R
Recurrente, enumera los contenidos de los directoriosls -la
Mostrar una lista larga de todos los archivos- Facilitan la acción en muchos archivos de una manera compleja.
for i in *.png; do pngtogif $i `echo $i | sed s/png/gif/`; done
- Proporcionan un medio para programar el sistema operativo (programas de shell). Por ejemplo, un ejemplo de programa de shell muy simple diseñado para modificar imágenes con nombres de archivo que terminan en
.png
.
Línea de comandos en acción
Partes de los comandos de la línea de comandos
Todos los comandos tienen tres partes:
- El comando (o la utilidad) siempre está primero.
- Las marcas son opcionales, según la utilidad que usen. Las marcas siempre comienzan con un signo - (menos).
- Los argumentos son elementos para que el comando actúe sobre la información necesaria. Nombres de archivos a menudo.
Enmarcado
Contexto
La línea de comandos es una forma de controlar una computadora sin un mouse o una GUI (interfaz gráfica de usuario). Antes de que comenzara a crear máquinas con íconos y carpetas de Apple, solo se podía interactuar con la computadora por medio de la línea de comandos.
Como desarrollador, usamos la línea de comandos porque es mucho más rápida y potente que la GUI, por lo que no es necesario perder tiempo haciendo clic. La línea de comandos le permite realizar prácticamente cualquier interacción que tenga con la computadora.
Como la terminal es una interfaz mucho más sencilla, tiene una gran ventaja en comparación con la GUI cuando necesita conectarse de forma remota a una computadora mediante un vínculo de red. Esto es algo que los desarrolladores hacen con mucha frecuencia, por ejemplo, cuando viajan.
En esta lección, aprenderemos los comandos básicos para interactuar con nuestra computadora: crear archivos y directorios, mover carpetas, cambiar directorios y enumerar el contenido de una carpeta.
Objetivos de aprendizaje
Los alumnos podrán hacer lo siguiente:
- Usa Terminal para navegar por archivos y carpetas
- Muestra el contenido de una carpeta
- Crea archivos y carpetas en la línea de comandos
- Cómo mover archivos y carpetas
- Cómo copiar archivos y carpetas
- Borra archivos y carpetas
Comenzar
Accede a la terminal
Enmarcado y propósito de la sección
Terminal proporciona una interfaz de línea de comandos (CLI) al sistema operativo. Con ella, puedes ofrecer a tu computadora instrucciones directas basadas en texto.
Para hacerlo, necesitamos iniciar tu terminal según el sistema que usas.
Cuando se inicie la terminal, se iniciará en el directorio de página principal de tu computadora (el nombre que tenga la computadora). Tu directorio principal se indica con tildes ~
.
Cuando hablamos sobre el mundo dentro de la terminal, los directorios son lo mismo que las carpetas (a veces los llamaremos directorios).
Cambio de directorios
Enmarcado y propósito de la sección
Para hablar con nuestra computadora en la Terminal y decirle lo que queremos hacer, debemos hablar un lenguaje común. La línea de comandos comprende los comandos escritos en el lenguaje de programación Bash. Los comandos son acrónimos o abreviaturas de palabras en inglés.
Imprimir el directorio de trabajo (pwd
)
Cuando navegas en la terminal, es importante que sepas dónde estás (también se traduce directamente en la vida real; si quieres llegar a algún lugar, primero tienes que conocer tu ubicación actual).
# See your current location - abbreviation for 'print working directory'
pwd
Muestra una lista de los archivos y directorios disponibles
Dentro del directorio de trabajo, es probable que haya varios archivos a los que puedas acceder. Por lo general, nos basamos en elementos visuales, como íconos, para indicarnos qué elementos están disponibles, pero sería difícil navegar por la computadora si estuviemos adivinando dónde se encontraban los archivos y las carpetas. En la línea de comandos, usaremos un comando específico para enumerar a qué podemos acceder desde cualquier directorio de trabajo o ubicación determinada.
Para ver qué archivos o carpetas están en el directorio actual, usa el comando ls
(abreviatura para obtener una lista) a fin de ver una lista del contenido.
# See files and folders in current location - abbreviation for 'list'
ls
Cambiar directorio de trabajo
Si necesita acceder a un archivo o directorio que no está en la lista, le recomendamos que cambie su directorio de trabajo para acceder a él con mayor facilidad.
La sintaxis que indica a la línea de comandos que te mueva a un directorio nuevo (también conocido como carpeta) es cd
seguida (en la misma línea) por la ruta de acceso a la carpeta nueva.
Si navegas a un directorio que se encuentra dentro del directorio en el que te encuentras (es decir, una subcarpeta de tu directorio de trabajo), usa el comando cd
seguido del nombre de la carpeta.
# Change your current working directory (current location)
# Abbreviation for 'change directory'
cd Documents
También puedes navegar a partir del directorio ~ de la página principal.
# Add a `~/` to begin from the home directory.
cd ~/Downloads
Si cambiaste de directorio, pero necesitas volver al directorio principal, puedes navegar directamente a la página principal con ~
o ..
para subir un nivel.
# Option 1: navigate directly to the home directory
cd ~
# Option 2: navigate back one level
cd ..
Ten en cuenta que cd ..
solo sube (o retrocede) un nivel, por lo que, si cambiaste de directorios tres veces (en tres niveles), tendrás que usar cd ..
tres veces para ir a casa, pero solo necesitarás usar cd ~
una vez.
Minidesafíos
- Usa
ls
para ver el contenido de tu directorio actual. - Regresa a tu directorio principal y usa
ls
para ver el contenido de tu carpeta principal. - Elige el nombre de una de las carpetas que se encuentran dentro del directorio principal y navega a esta carpeta nueva.
- Usa el comando list para ver el contenido.
Sugerencia profesional: Autocompletar con tab
Cuando cambies los directorios con el comando cd
, un solo error tipográfico impedirá que el comando se ejecute de forma correcta. Sin embargo, el uso de la clave tab
se completará con el nombre de cualquier directorio disponible dentro de tu directorio actual. Por lo tanto, en lugar de escribir cd Documents
, escribe solo cd Do
y presiona la tecla tab
, y la terminal completará automáticamente el comando cd Documents/
por ti (el /
al final es opcional, pero te permite saber que el destino es un directorio).
Este autocompletado no solo ahorra tiempo cuando funciona, sino que también proporciona información valiosa cuando no funciona. Si el botón de tabulación no se autocompleta, es probable que hayas creado uno de los siguientes tres problemas habituales:
- No se puede acceder al directorio al que deseas navegar desde tu directorio de trabajo actual.
- Hay dos directorios que tienen nombres de inicio similares (como
Documents
yDownloads
) y no proporcionaste la información suficiente para que la función Autocompletar sepa cuál deseas. Vuelve a presionartab
para ver una lista de los directorios que podrían coincidir con lo que escribiste. Luego, escribe un poco más (suficiente para que haya solo una coincidencia) y vuelve a presionartab
. - Ya incluiste un error tipográfico en la primera mitad de la palabra.
Mientras más pronto se acostumbre al uso de las pestañas para autocompletar sus comandos, más probable será que maneje situaciones frustrantes.
Directorios de elementos superiores y secundarios
Los directorios y los archivos pueden tener relaciones secundarias y superiores entre sí. Si directory_b
está dentro de directory_a
, directory_b
se denomina elemento secundario de directory_a
. directory_a
se conoce como el elemento superior de directory_b
. Si un tercer elemento, my_file
, está dentro de un directory_b
, se considera un elemento secundario de directory_b
y un nieto de directory_a
.
A menudo, estas relaciones se ilustran en foros con un diagrama de texto, como el siguiente:
directory_a/ directory_b/ my_file
Observa que los nombres de directorios terminan en /
, mientras que los nombres de archivos no. Por lo general, esta organización jerárquica se conoce como la estructura de árbol de un sistema de archivos.
Hermanos
Si hay varios archivos o carpetas en el mismo nivel, se conocen como elementos del mismo nivel. Ejemplo: Si file_b
y file_c
se encuentran dentro de directory_a
, son hermanos.
Ese diagrama de texto se vería así:
directory_a/ file_b file_c
Ten en cuenta que file_b
y file_c son elementos del mismo nivel con sangría.
Rutas de acceso de los archivos
Este es un diagrama de texto más complejo que muestra relaciones entre superior y secundario.
north_america/ united_states/ new_york/ new_york_city/ manhattan queens staten_island bronx brooklyn california/ mountain_view los_angeles illinois/ chicago mexico/ mexico_city
En este ejemplo, new_york_city/
es un nombre de directorio, pero también tiene una ruta de acceso que detalla cómo llegar allí: ~/north_america/united_states/new_york/new_york_city/
.
Para cambiar el directorio a new_york_city/,
, puedes navegar por los pasos con nombres o hasta un único comando en la ruta con la ruta de acceso.
# Option 1: in four steps, using directory names.
cd ~ # navigate home, where these folders are located
cd north_america/
cd united_states/
cd new_york/
cd new_york_city/
# Option 2: in one step, using the path.
cd ~/north_america/united_states/new_york/new_york_city/
Resumen de los comandos de navegación
# See your current location - abbreviation for 'print working directory'
pwd
# Change to a new location - abbreviation for 'change directory'
cd ~/Downloads
# Navigates into a child directory called `some_directory`
# Only works if `some_directory` is a child of the current directory
cd some_directory
# Navigates into the parent of the current directory
# `..` is shorthand for parent.
cd ..
# Will take you back home
cd
Minidesafíos
- Usa
pwd
para buscar la carpeta actual en la que te encuentras. - Cambia a otro directorio y confirma tu nueva ubicación.
- Vuelve a intentarlo y navega a otra carpeta. Usa los comandos nuevos para ver tu ubicación y los archivos que contiene.
Cómo crear archivos
Enmarcado y propósito de la sección
Como desarrolladores, tendremos que crear archivos con código. Para mantener esos archivos organizados, deberemos crear carpetas y directorios en los que podamos almacenarlos.
Ten en cuenta tu ubicación en la terminal antes de crear tus archivos y carpetas.
# See your current location.
pwd
Para crear un archivo, usa el comando touch
seguido del nombre.
# `touch` creates a new file.
touch style.css
Cuando cree archivos, agregue una extensión de archivo para especificar el tipo. Ejemplos de tipos de archivo:
- Se creó
.js
como un archivo JavaScript .html
crean un archivo HTML..css
crea un archivo CSS..md
crea un archivo de Markdown
Los nombres de archivo no deben incluir espacios.
# make a file - this will create a file in the current folder
touch my_text_file.txt
# make a file - this will create a file on the desktop
touch ~/Desktop/my_new_style_sheet.css
Cómo crear varios archivos
Puedes crear varios archivos a la vez incluyendo espacios entre cada uno de los nombres.
# make multiple files - this will create multiple files in the current folder
touch my_new_js_file.js my_new_html_file.html my_second_html_file.html
Crea directorios
Para crear un directorio o carpeta, usa el comando mkdir
: una abreviatura para "make directory"# make - seguido por el nombre de la carpeta.
# make a folder - this will create a directory in the current folder
mkdir my_new_folder
# make a folder - this will create a directory on your desktop
mkdir ~/Desktop/my_new_desktop_folder
Cómo crear varios directorios
Puedes crear varias carpetas a la vez incluyendo espacios entre cada uno de los nombres.
# make multiple folders - this will create multiple folders in the current
# directory
mkdir folder_one folder_two folder_three
Minidesafíos
- Crea un nuevo archivo.
- Crea algunos archivos en un comando.
- Crea un directorio nuevo.
- Cree algunos directorios más. Para ello, usa un solo comando.
- Con lo que sabes sobre navegar por directorios y crear archivos y carpetas, crea un "family_tree" en tu escritorio usando archivos y carpetas.
Mudanzas y copiados
Mover archivos
Enmarcado y propósito de la sección
Podemos mover un archivo o una carpeta en la línea de comandos, pero siempre debemos especificar tres cosas:
- Usamos el comando
mv
(abreviatura para move). - Sigue el comando de movimiento con el nombre del archivo o la carpeta que quieras mover.
- Sigue el nombre del archivo con el destino al que desees moverlo.
Por ejemplo, si tienes una estructura de archivos como la siguiente:
my_child_folder/ my_parent_folder/
Puedes ver que está organizada como deberían ser; son hermanos cuando deben ser padres e hijos. Usa este comando:
# move a directory - this will move the folder `my_child_folder` into the
# folder named `my_parent_folder` that is in the current folder
mv my_child_folder/ my_parent_folder/
La estructura resultante se verá de la siguiente manera:
my_parent_folder/ my_child_folder/
Estas son algunas otras variaciones del comando mv
:
# move a directory - this will move the folder `my_folder` into the file named
# `my_desktop_folder` that is located on the Desktop
mv my_folder ~/Desktop/my_desktop_folder
# move a file - this will move the file `my_file.txt` into the file named
# `my_folder` that is in the current folder
mv my_file.txt my_folder
# move a file - this will move the file `my_file.txt` into the file named
# `my_desktop_folder` that is located on the Desktop
mv my_file.txt ~/Desktop/my_desktop_folder
Advertencia: mv
también es el comando que cambia el nombre de un archivo con la sintaxis mv old_name new_name
. Esto significa que, si muevas un archivo a un directorio que no existe, o si escribes mal el destino, el archivo en sí se renombrará en lugar de moverse.
Minidesafíos
- Crea 5 archivos de texto (.txt).
- Crea un directorio nuevo.
- Mueve los 5 archivos que creaste a la carpeta.
- Crea una carpeta y mueve esta carpeta nueva dentro de otra.
Cómo copiar archivos
Enmarcado y propósito de la sección
A medida que compilamos nuestras apps web, tal vez quieras duplicar un archivo (si compilamos dos páginas web similares, quizás no quieras volver a empezar desde cero). La sintaxis del comando cp
(copia) es muy similar a la sintaxis mv
.
Cómo copiar un archivo
El comando de copia tiene tres partes:
- El comando
cp
(abreviatura para copiar) - El nombre del archivo que se copiará
- Es el nombre de la copia (si permanece en la misma carpeta) o la ubicación y el nombre (si se mueven a otra carpeta).
# Copy a file named `my_file.txt` to a file called `my_file_copy.txt`
# The copy will be located in your Documents folder.
cp my_file.txt ~/Documents/my_file_copy.txt
# Copy a file named `my_file.txt` to a file called `my_file_copy.txt`.
# Since no directory was specified, this will occur within the same folder.
cp my_file.txt my_file_copy.txt
Si quieres que la copia conserve el mismo nombre que la original, puedes especificar la ubicación de la copia sin un nombre de archivo.
# Copy a file named `my_file.txt` to your Documents folder.
# The destination ends with a directory, so the copy will have the same name.
cp my_file.txt ~/Documents/
Tener muchos archivos con el mismo nombre puede ser confuso, por lo que solo debes usar este método si sabes con certeza que es lo que necesitas.
Cómo copiar un directorio
Copiar una carpeta o directorio es un poco más complicado, ya que probablemente querrás copiar no solo la carpeta, sino también todo lo que contiene.
- El comando
cp -R
(abreviatura para copia recurrente): usa esta opción para carpetas vacías y no vacías. - El nombre de la fuente (la carpeta o el archivo que queremos mover)
- Es el nombre de la copia (si permanece en la misma carpeta) o la ubicación y el nombre (si se mueven a otra carpeta).
Advertencia: Al especificar el nombre de la copia, si el archivo o la carpeta no se crearon anteriormente, se crearán cuando realices la copia. Si el archivo se creó antes de ejecutar el comando "copy", se reemplazará el contenido existente, así que tenga cuidado.
# copy a directory named `my_folder` from your Desktop folder to a folder
# called `my_folder_copy` in your Documents folder
cp -R ~/Desktop/my_folder ~/Documents/my_folder_copy
# copy a file named `my_file.txt` from your Desktop folder to your Documents
# folder
cp -R my_folder my_folder_copy
Nota: El componente -R
de cp -R
se denomina marca. Las marcas siempre comienzan con un guion y se usan en combinación con comandos a fin de proporcionar instrucciones más específicas para ejecutar ese comando.
Minidesafíos
- Crea un archivo llamado
my_original.txt
- Haz una copia de
my_original.txt
llamada algo nuevo en la misma carpeta. - Crea un directorio nuevo.
- Haz una copia de ese directorio, pero asígnale otro nombre.
- Haz una copia del archivo que copiaste (del paso 2), pero guárdalo en el directorio copiado (del paso 4).
Cómo quitar archivos
Enmarcado y propósito de la sección
Podemos borrar archivos y carpetas en la línea de comandos, pero esta acción es permanente.
Cómo quitar un archivo
Para quitar un archivo, podemos usar el comando rm
(abreviatura para remove) seguido del nombre del archivo.
# delete a file in the working directory
rm unwanted_file.txt
# delete a file not in the working directory
rm ~/Desktop/unwanted_file.txt
Cómo quitar un directorio vacío
Para quitar un directorio vacío, podemos usar el comando rmdir
(abreviatura) para quitar directorio, seguido del nombre de la carpeta.
# delete an empty folder
rmdir empty_directory
# delete an empty folder
rmdir ~/Documents/my_files/empty_directory
Quita un directorio que no esté vacío
Para quitar una carpeta que no está vacía, debemos colocar una marca -R
, abreviatura de recursive, después del comando rm
, que le indica a la computadora que borre el contenido de la carpeta. Como acceso directo, algunos desarrolladores usan la marca -Rf
, que quita de manera forzosa todo (de lo contrario, es posible que recibas mensajes para borrar algunos de los archivos o las carpetas secundarias).
# delete a folder which contains other files or folders
rm -R directory_which_isnt_empty
# delete a folder which contains other files or folders
rm -R ~/Downloads/directory_which_isnt_empty
Advertencia: El uso del comando rm
no es similar a la papelera de reciclaje o la sección borrada de tu correo electrónico, ya que estos archivos no se pueden recuperar con facilidad. Ten mucho cuidado cuando borres archivos de esta manera.
Minidesafíos
- Crea 4 archivos.
- Borra 2 de los archivos.
- Crea una carpeta.
- Crea otra carpeta y crea un archivo dentro de esta carpeta.
- Borra ambos directorios.
Puede encontrar el código de este lab en la siguiente carpeta del repositorio de alumnos que descargó de GitHub: command-line/labs/around-the-world
Información general
Tu semestre en el exterior está a la vuelta de la esquina y es hora de comenzar a planificar tus viajes europeos...
Luego de tres meses de vida grave, te recomendamos que aproveches al máximo cada viaje del fin de semana.
Afortunadamente, no empiezas de cero y tus amigos te proporcionaron algunas de sus actividades favoritas de su semestre en el extranjero. Lamentablemente, algunos archivos se mezclaron...
No te preocupes, la magia de la línea de comandos te permitirá solucionarlos en un abrir y cerrar de ojos.
Tarea
Asegúrate de que cada ciudad esté en el país correcto y de que cada carpeta tenga los monumentos adecuados. Ten cuidado o podrías llegar a Ámsterdam buscando la Torre Eiffel.
Si estás REAL con confianza, oculta tu GUI y enfrenta este desafío directamente desde la línea de comandos. Debes permanecer en la carpeta general de todo el mundo mientras haces todo esto, lo que significa usar rutas de acceso absolutas cuando te refieres a carpetas y archivos.
Una vez que estés seguro de que todo está en el lugar correcto, es tu turno de tomar el comando de los próximos meses. Intercambia ideas sobre ciudades, países y monumentos nuevos que NECESITAS para verlos y agregarlos a tu árbol de archivos.
¡Felicitaciones! Aprendiste oficialmente a usar la computadora. ¿Estás listo para ir un paso más allá? Hablemos sobre las extensiones...
Extensiones
- Vuelve a mezclar todos los archivos y luego navegar a la ciudad que quieras. Reorganiza los archivos de nuevo mientras te alojas en esa ciudad.
- Prueba uno de los divertidos juegos de línea de comandos que aparecen a continuación
Terminus Game
Advanced Game (lista para Google) - ¿Eres fanático de Star Wars? Intenta ejecutar
telnet towel.blinkenlights.nl
en tu línea de comandos y presiona Intro... (ten en cuenta que, en las versiones recientes de MacOS, el comandotelnet
ya no está instalado de forma predeterminada; en este caso, el comandonc towel.blinkenlights.nl 23
se puede usar en su lugar).
Puede encontrar el código de este lab en la siguiente carpeta del repositorio de alumnos que descargó de GitHub: command-line/labs/bashing-away-repetition
¿Todo listo para evitar la repetición del uso diario de la línea de comandos? Genial, yo también.
Información general
Si hay algo que los programadores odian, se repite. Como informáticos, nuestro trabajo es hacer que la computadora haga la mayor parte de nuestro trabajo posible. Escribir secuencias de comandos de Bash nos ayudará a hacer que nuestro uso de la línea de comandos sea más eficiente.
En primer lugar, ¿qué es una secuencia de comandos de Bash?
GREAT. Afortunadamente, nuestro amigo Ryan Chadwick consiguió una respuesta en este excelente lugar para encontrar instructivos en la línea de comandos.
Una secuencia de comandos de Bash nos permite definir una serie de acciones que la computadora realizará sin necesidad de ingresar los comandos. Si una tarea específica se realiza con frecuencia o es repetitiva, una secuencia de comandos puede ser una herramienta útil.
¿No se repite? De eso se trata.
Instructivo
En primer lugar, para poder ejecutar tu secuencia de comandos, debes darle permiso a tu computadora. Para ello, ejecuta el siguiente comando:
chmod 755 myScript.sh
Es hora de escribir tu primer programa. Dirígete a tu myScript.sh
(consulta si puedes abrir el archivo desde la línea de comandos). Al final del archivo, agrega lo siguiente:
echo "Hello World"
Ahora, ejecute lo siguiente:
./myScript.sh
en la terminal. ** TA DA ** Deberías ver "Hello World" impreso en tu terminal.
Todo lo que escribas en la secuencia de comandos bash se ejecutará como si lo hubieras escrito en tu terminal. Veamos un ejemplo más antes de pasar a las extensiones. Primero crea un archivo para tu secuencia de comandos. Puedes llamarlo como desees, pero debería tener la extensión .sh
. Siguiente: Escribe chmod 755
, el nombre de la secuencia de comandos en la terminal y presiona Intro para asegurarte de que se ejecute. Cada vez que inicies una nueva secuencia de comandos bash, debes asegurarte de completar esos dos pasos.
Desafío de introducción
Ahora, intentemos escribir una secuencia de comandos que cree una carpeta nueva. ¿Qué comando sabemos que crea una carpeta nueva? Si estás pensando en una palabra que comienza con una m
y termina con kdir
, estás en el camino correcto. Escribe el comando que creará tu carpeta nueva y asígnale un nombre interesante en el archivo .sh
nuevo. Luego, ejecútalo en tu terminal.
Si funciona, continúa con los demás desafíos que se mencionan a continuación. Si aún te sientes un poco confundido, mira tu laboratorio mundial y piensa en cómo creaste nuevas carpetas de país y ciudad.
No temas usar el instructivo mencionado anteriormente y estar listo para mejorar tus habilidades de Google. Escribe y ejecuta secuencias de comandos que hagan lo siguiente:
Tareas principales
- Agrega un comando al archivo creado anteriormente que navegue a la carpeta que estás creando. (¿Qué comando usamos para cambiar los directorios?)
- Marca la fecha en el nombre de la nueva carpeta. Por ejemplo, tu programa debe crear una carpeta llamada
2017-12-07my_super_cool_folder
"
- Imprime "Mi directorio actual es: " seguido de tu directorio de trabajo. "Aquí hay una lista de todo lo que contiene este directorio. " seguido del contenido de tu directorio actual.
- Descubre cómo ingresar una secuencia de comandos de Bash y crea un archivo basado en esa string de entrada. El instructivo vinculado anteriormente en el lab tiene algunos ejemplos excelentes en la sección de variables para revisar.
- Solicítale al usuario su nombre y, luego, imprime & "Hola". Es un placer conocerte. Inserta su nombre aquí."
- Pídale al usuario más información y cree un mensaje personalizado para él.
CONTEXTO
La línea de comandos (o terminal) proporciona una interacción directa con el sistema operativo (SO) de la computadora, es decir, todo lo que hace la interfaz gráfica de usuario (GUI), pero mediante comandos de texto: desde la navegación, la creación de nuevos archivos hasta la ejecución de secuencias de comandos. La línea de comandos se usará para abrir archivos y, luego, iniciar el entorno de desarrollo cuando se use Google App Engine.
Línea de comandos en acción
Accede a la terminal
Acceso directo de Mac:
- Abre Destacados con Comando + espacio.
- Escribe Terminal en Foco de búsqueda.
Navega por la terminal
# See your current location - abbreviation for 'print working directory'.
pwd
# Change to a new location - abbreviation for 'change directory'.
cd /Users/jsmith/Downloads
# Navigate into a child directory called `some_directory`. This only works if
# `some_directory` is a child of the current directory.
cd some_directory
# Navigate into the parent of the current directory. `..` is shorthand for parent.
cd ..
# Return home.
cd
# Change directories to a folder called `my_folder` that is within the current
# directory.
cd my_folder ```
#### File Path Shorthand `~`
The `~` is generally short for "home". Home can be configured to mean different
things for different users and across different operating systems, but in the
example above, for a Mac user named "jsmith", the `~` is short for that user's
home directory: `/Users/jsmith`.
This means that `~/Downloads` and `/Users/jsmith/Downloads` are the same for
this user. But starting with a `~` allows us to specify absolute file paths
(agnostic of your current working directory, and starting at the root `/`)
without having to write out a full path each time.
### <a id="view"></a>Viewing the Contents of Folders
```bash
# See files and folders in current location - this is an abbreviation for 'list'.
ls
Cómo crear archivos
Cómo crear archivos
# Make a file - this will create a file in the current folder.
touch my_text_file.txt
# Make a file - this will create a file on the Desktop.
touch ~/Desktop/my_new_style_sheet.css
# Make multiple files - this will create multiple files in the current folder.
touch my_new_js_file.js my_new_html_file.html my_second_html_file.html
Cómo crear carpetas
# Make a folder - this will create a directory in the current folder.
mkdir my_new_folder
# Make a folder - this will create a directory on your Desktop.
mkdir ~/Desktop/my_new_desktop_folder
# Make multiple folders - this will create multiple folders in the current
# directory.
mkdir folder_one folder_two folder_three
Mover archivos
Mover archivos
# Move a file - this will move the file `my_file.txt` into the folder named
# `my_folder` that is in the current folder.
mv my_file.txt my_folder
# Note that this will rename the file instead of moving it if the destination
# folder does not yet exist. Read below for more details on renaming.
# Move a file - this will move the file `my_file.txt` into the folder named
# `my_desktop_folder` that is located on the Desktop.
mv my_file.txt ~/Desktop/my_desktop_folder
Moviendo carpetas
# Move a directory - this will move the folder `my_child_folder` into the
# folder named `my_parent_folder` that is in the current folder.
mv my_child_folder my_parent_folder
# Move a directory - this will move the folder `my_folder` into the folder
# named `my_desktop_folder` that is located on the Desktop.
mv my_folder ~/Desktop/my_desktop_folder
Mudanzas para renombrar
Ten en cuenta que mv
también es el mismo comando que se usa para cambiar el nombre de los archivos o las carpetas.
# Rename a file from `old_name.txt` to `new_name.txt`.
mv old_name.txt new_name.txt
Copiando archivos y carpetas
Cómo copiar archivos
# Copy a file named `my_file.txt` from your Desktop folder to your Documents
# folder.
cp ~/Desktop/my_file.txt ~/Documents
# Copy a file named `my_file.txt` to a file called `my_file_copy.txt` within
# the same folder.
cp my_file.txt my_file_copy.txt
Copiando carpetas
# Copy a directory named `my_folder` (and its contents) from your Desktop
# folder to a folder called `my_folder_copy` in your Documents folder.
cp -r ~/Desktop/my_folder ~/Documents/my_folder_copy
# Copy a directory named `my_folder` (and its contents) from the current
# working directory to a folder called `my_folder_copy` in the current working
# directory.
cp -r my_folder my_folder_copy
Borrando archivos
Cómo borrar archivos
# Delete a file in the current working directory.
rm unwanted_file.txt
# Delete a file using its exact location and name.
rm ~/Desktop/unwanted_file.txt
Borra carpetas
# Delete an empty folder.
rmdir empty_directory
# Delete a folder which contains other files or folders.
rm -r directory_which_isnt_empty
Sugerencias y trucos
- Practica con la línea de comandos, incluso cuando no lo creas necesario. Mejorarás con el tiempo.
- La clave
tab
completará automáticamente el nombre de tu archivo o carpeta (puede distinguir entre mayúsculas y minúsculas). - Si solo queda una carpeta o un archivo que coincida, se completará automáticamente.
- Si hay varios archivos o carpetas que coinciden, presiona Tab dos veces para ver una lista de las coincidencias restantes.
- La flecha hacia arriba o hacia abajo te llevará al historial de comandos para que no tengas que volver a escribir los comandos.
- Usa el comando
clear
para borrar la ventana de la terminal. Se mantendrá todo tu trabajo anterior; desplázate hacia arriba para verlo. - Usa
reset
para reiniciar la terminal. Esto no mantendrá el trabajo anterior en la pantalla, pero puede resolver varios problemas si la terminal comienza a comportarse de manera impredecible. - Presiona
option
+arrow
para mover el cursor por una palabra
Resumen de prácticas recomendadas
- Navega por la terminal con
cd
,cd ..
ocd <folder name>
. - Permite ver el contenido de las carpetas mediante
ls
. - Crea archivos con
touch
y carpetas conmkdir
. - Transfiere archivos y carpetas con
mv <item to move> <destination>
. - Copia archivos y carpetas con
cp <item to copy> <destination>
. - Borra archivos y carpetas con
rm <item to remove>
.
Question 1
¿Qué usarías para identificar tu directorio de trabajo actual?
pwd
ls
cd
mkdir
touch
Question 2
¿Cómo subirías dos niveles del directorio de trabajo actual?
mv ~
cd ../..
mv up/up
cd ^(2)
Question 3
¿Qué comando usarías para cambiar el nombre de un archivo?
mv
cd
ls
python
rename
Question 4
¿Por qué el comando mv script.py
arrojaría un error?
- Porque "
script.py
' es un nombre de archivo no válido. - Debido a que no se puede seguir el comando
mv
con ninguna otra información. - Esta es una pregunta engañosa; no arrojaría un error.
- Porque para mover un archivo se necesitan al menos dos argumentos: un destino y un destino
Question 5
¿Qué haría el comando cd ~
?
- Cambie su directorio de trabajo a su directorio principal.
- Repita el comando anterior.
- Usa un algoritmo para determinar el comando más útil en este momento.
- Se produjo un error.
Question 6
¿Cuál de los siguientes NO es un motivo para usar tabulación a fin de autocompletar los nombres de archivo?
- Porque ahorra tiempo.
- Porque ayuda a eliminar errores de ortografía.
- Porque requiere menos potencia de procesamiento.
Question 7
Si un nuevo desarrollador intenta crear un archivo llamado "my script.py
", ¿por qué el comando touch my script.py
no funciona?
- Porque
touch
no puede crear archivos nuevos. - Porque
.py
no es una extensión de archivo válida. - Porque creará dos archivos, uno llamado "
my
" y otro llamado "script.py
" en lugar de solo uno. - Porque es imposible crear archivos nuevos desde la línea de comandos.
Question 1
¿Qué usarías para identificar tu directorio de trabajo actual?
pwd
Question 2
¿Cómo subirías dos niveles del directorio de trabajo actual?
Con cd ../..
, puedes subir dos niveles (cada ..
representa uno de los niveles anteriores).
Question 3
¿Qué comando usarías para cambiar el nombre de un archivo?
mv
se usa para mover un archivo de una ubicación a otra, y también se puede usar para cambiar el nombre.
Question 4
¿Por qué el comando mv script.py
arrojaría un error?
El comando mv
requiere dos argumentos, un archivo de origen y un archivo de destino.
Question 5
¿Qué haría el comando cd ~
?
Se cambiaría el directorio de trabajo a tu directorio principal. El carácter especial ~ se usa para identificar el directorio principal del usuario actual. También se puede usar en combinación con un nombre de usuario diferente: ~user2 para dirigir a la carpeta principal.
Question 6
¿Cuál de los siguientes NO es un motivo para usar tabulación a fin de autocompletar los nombres de archivo?
Porque requiere menos potencia de procesamiento no es correcto. tab
requiere un poder de procesamiento (que suele ser insignificante) para analizar las carpetas que buscan el nombre del archivo a fin de autocompletarse, pero ahorra tiempo y evita errores de ortografía en el proceso.
Question 7
Si un nuevo desarrollador intenta crear un archivo llamado "my script.py
", ¿por qué el comando touch my script.py
no funciona?
Se crearán dos archivos en lugar de solo uno. El comando touch
creará archivos nuevos. En los espacios de terminales, hay separadores, no caracteres que se incluyen en el nombre del archivo. Lo mejor es evitarlos completamente, pero si debes usarlos, el nombre del archivo debe estar entre comillas dobles:
touch "my script.py"
Question 1
El comando de la terminal para cambiar directorios es el siguiente:
move
mkdir
pwd
cd
Question 2
¿Qué comando ejecutarías si quisieras navegar a la carpeta superior del directorio de trabajo actual?
cd up
cd .
cd ..
cd ~
Question 3
¿Qué comando se usa para crear archivos?
touch
mkdir
create
pwd
Question 4
¿Cuál de los siguientes comandos creará dos archivos llamados index.html
y style.css
?
touch index.html, touch style.css
touch index.html, style.css
touch index.html style.css
touch index.html + style.css
Question 5
¿Qué comando usas para cambiar el nombre de un archivo o de una carpeta?
rename
move
mv
rm
Question 6
¿Qué marca necesitan los comandos rm
y cp
para funcionar en las carpetas?
-f
-r
-x
-d
Question 7
Para mover projects
a ~/Documents
y cambiarle el nombre por Projects
, ¿qué comando debe dejarse en blanco?
cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects
pwd
cd projects
mv ~ projects
cd ~/Documents
ls
Question 8
¿Qué hará el siguiente comando?
rm -r projects
- Borra un archivo llamado
projects
- Borra una carpeta llamada
projects
- Cambia el nombre de un archivo llamado
projects
- Buscar el contenido del directorio actual de
projects
Question 1
El comando de la terminal para cambiar directorios es el siguiente:
El comando de la terminal para cambiar directorios es cd
. El comando en sí es una abreviatura de "change directory"
Question 2
¿Qué comando ejecutarías si quisieras navegar a la carpeta superior del directorio de trabajo actual?
El comando para navegar a la carpeta superior es cd ..
Question 3
¿Qué comando se usa para crear archivos?
El comando para crear archivos es touch
Question 4
¿Cuál de los siguientes comandos creará dos archivos llamados index.html
y style.css
?
El comando touch index.html style.css
creará los dos archivos. No es necesaria ninguna coma, y se puede crear cualquier cantidad de archivos de esta manera, separados por espacios.
Question 5
¿Qué comando usas para cambiar el nombre de un archivo o de una carpeta?
Aunque significa "mover", se puede usar para mover archivos o carpetas, mv
también se puede usar para cambiar el nombre de archivos y carpetas.
Question 6
¿Qué marca necesitan los comandos rm
y cp
para funcionar en las carpetas?
Los comandos rm
y cp
requieren que la marca -r
funcione en carpetas, ya que la marca -r
significa "recurrente" y vuelve a ejecutar el comando en cualquier archivo y carpeta que contenga.
Question 7
Para mover projects
a ~/Documents
y cambiarle el nombre por Projects
, ¿qué comando debe dejarse en blanco?
cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects
Dado que comenzamos en el directorio principal, debemos ejecutar cd ~/Documents
para poder ejecutar el comando final en el directorio correcto.
Question 8
¿Qué hará el siguiente comando?
rm -r projects
El comando borrará un archivo O una carpeta llamada projects
porque se llama con el -r
o una marca recurrente. Sin esa marca, este comando solo funcionaría para borrar un archivo con ese nombre.