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 estudiantes se desplazarán por la computadora con comandos.
- Los estudiantes 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 se basan en el mouse o el tacto 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 la denomina "shell", "terminal", "bash" o "interfaz de texto". La línea de comandos es lo siguiente:
- Es una forma de interactuar con un programa de computadora en la que el usuario escribe comandos. Por ejemplo:
open README.txt
- Una forma de navegar y operar tu computadora sin un mouse
- Una forma no gráfica de crear, leer, actualizar, operar y borrar tus archivos y directorios, p. ej.:
mv README.txt readme.txt
La GUI y la línea de comandos muestran lo mismo. Son diferentes formas de interactuar con la computadora.
¿Cuándo usamos la línea de comandos?
Los desarrolladores suelen preferir las interfaces de línea de comandos por los siguientes motivos:
- Proporcionan un medio más conciso para controlar un programa o sistema operativo. ¿Por qué? Como todo sucede en la misma ventana, con la práctica, es más fácil que buscar y manipular elementos con el mouse.
- Exponen fácilmente opciones para controlar un comando. ¿Por qué? Los menús en las GUI proporcionan una cantidad muy pequeña de opciones. En la línea de comandos, hay cientos de comandos, y algunos caracteres agregados a un comando pueden hacer que realice muchas acciones diferentes. Por ejemplo:
ls
Archivos de lista básicosls -a
Enumera todos los archivos, incluidos los que normalmente están ocultos.ls -l
Lista larga que muestra información sobre cada archivols -R
Recursivo, enumera el contenido de los directoriosls -la
Lista larga de todos los archivos- Facilitan la acción sobre muchos archivos a la vez de formas complejas.
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), p.ej., el ejemplo anterior es un 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 un comando de línea de comandos
Todos los comandos tienen tres partes:
- El comando (o utilidad) siempre va primero.
- Las marcas son opcionales, según la utilidad que uses. Las marcas siempre comienzan con un signo menos (-).
- Los argumentos son los elementos sobre los que actúa el comando o la información necesaria. A menudo, son nombres de archivos.
Encuadre automático
Contexto y propósito
La línea de comandos es una forma de controlar una computadora sin un mouse ni una GUI (interfaz gráfica de usuario). Antes de que Apple Computer comenzara a fabricar computadoras con íconos y carpetas en los que se podía hacer clic, la única forma de interactuar con la computadora era a través de la línea de comandos.
Como desarrolladores, usamos la línea de comandos porque es mucho más rápida y potente que la GUI. No es necesario perder tiempo haciendo clics. La línea de comandos te permite realizar casi cualquier interacción con tu computadora.
Dado que la terminal es una interfaz mucho más simple, tiene una gran ventaja sobre la GUI cuando necesitas conectarte de forma remota a una computadora a través de 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 de directorio y enumerar el contenido de una carpeta.
Objetivos de aprendizaje
Los estudiantes podrán hacer lo siguiente:
- Cómo usar la Terminal para navegar por archivos y carpetas
- Enumera el contenido de una carpeta
- Cómo crear archivos y carpetas en la línea de comandos
- Cómo mover archivos y carpetas
- Cómo copiar archivos y carpetas
- Cómo borrar archivos y carpetas
Comenzar
Cómo acceder a la terminal
Enmarcado y propósito de la sección
La terminal proporciona una interfaz de línea de comandos (CLI) para el sistema operativo. Con él, puedes darle a tu computadora instrucciones directas basadas en texto.
Para ello, debemos iniciar la terminal según el sistema que estés usando.
Cuando se inicie la terminal, comenzará en el directorio principal de tu computadora (cualquiera que sea el nombre que le hayas puesto). Tu directorio principal se indica con la tilde ~
.
Cuando hablamos de nuestro mundo dentro de la Terminal, los Directorios son lo mismo que las Carpetas (a veces, simplemente los llamamos Directorios).
Cómo cambiar de directorio
Enmarcado y propósito de la sección
Para hablar con nuestra computadora en la Terminal y decirle lo que queremos hacer, necesitamos hablar un idioma común. La línea de comandos comprende los comandos escritos en el lenguaje de secuencias de comandos de bash. Los comandos son acrónimos o abreviaturas de palabras en inglés.
Imprimir directorio de trabajo (pwd
)
Cuando navegas en la terminal, es importante que sepas dónde estás (esto también se aplica a la vida real: si quieres llegar a algún lugar, primero debes saber dónde estás).
# See your current location - abbreviation for 'print working directory'
pwd
Enumera los archivos y directorios disponibles
Dentro de tu directorio de trabajo, es probable que haya varios archivos a los que puedes acceder. Normalmente, nos basamos en indicadores visuales, como los íconos, para saber qué está disponible, pero sería difícil navegar por nuestra computadora si solo tuviéramos que adivinar dónde se encuentran los archivos y las carpetas. En la línea de comandos, usaremos un comando específico para listar a qué podemos acceder desde cualquier directorio de trabajo o ubicación.
Para ver qué archivos o carpetas hay en nuestro directorio actual, usa el comando ls
(abreviatura de lista) para ver una vista de lista del contenido.
# See files and folders in current location - abbreviation for 'list'
ls
Cambia el directorio de trabajo
Si necesitas acceder a un archivo o directorio que no está presente en la lista, es posible que desees cambiar tu directorio de trabajo para acceder a él con mayor facilidad.
La sintaxis para indicarle a la línea de comandos que te mueva a un nuevo directorio (también conocido como carpeta) es cd
seguido (en la misma línea) de la ruta de acceso a la carpeta nueva.
Si navegas a un directorio que está dentro del directorio en el que te encuentras actualmente (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 desde el directorio 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 usar ..
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 (retrocede) un nivel, por lo que, si cambiaste de directorio tres veces (bajaste tres niveles), deberás usar cd ..
tres veces para volver al directorio principal, pero solo deberás usar cd ~
una vez.
Desafíos breves
- Usa
ls
para ver el contenido de tu directorio actual. - Regresa al 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 nueva carpeta.
- Usa el comando list para ver el contenido.
Sugerencia: Autocompletado con tab
Cuando cambias de directorio con el comando cd
, un solo error tipográfico impedirá que el comando se ejecute correctamente. Sin embargo, si usas la tecla tab
, se completará automáticamente el nombre de cualquier directorio disponible que se encuentre dentro de tu directorio actual. Por lo tanto, en lugar de escribir cd Documents
, escribe solo cd Do
y, luego, presiona la tecla tab
. La terminal autocompletará 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 se haya producido uno de los tres problemas más comunes:
- No se puede acceder al directorio al que deseas navegar desde tu directorio de trabajo actual.
- Hay dos directorios que tienen nombres iniciales similares (como
Documents
yDownloads
), y no proporcionaste suficiente información para que la función de autocompletar sepa cuál quieres. Vuelve a presionartab
para ver una lista de los directorios que podrían coincidir con lo que escribiste. Luego, escribe un poco más (lo suficiente para que solo haya una coincidencia) y vuelve a presionartab
. - Ya incluiste un error tipográfico en la primera mitad de la palabra.
Cuanto antes adquieras el hábito de usar la tecla Tab para completar automáticamente tus comandos, más probabilidades tendrás de manejar situaciones frustrantes en las que parezca que tus comandos no funcionan.
Directorios principales y secundarios
Los directorios y los archivos pueden tener relaciones de elemento secundario y elemento principal entre sí. Si directory_b
está dentro de directory_a
, se hace referencia a directory_b
como el elemento secundario de directory_a
. Entonces, 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 secundario de directory_b
y nieto de directory_a
.
Estas relaciones suelen ilustrarse en los foros con un diagrama de texto, como el siguiente:
directory_a/ directory_b/ my_file
Ten en cuenta que los nombres de los directorios terminan en /
, mientras que los nombres de los archivos no. Esta organización jerárquica se conoce generalmente 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 secundarios. 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, como file_b
y file_c son hermanos, tienen la misma sangría.
Rutas de acceso de los archivos
Este es un diagrama de texto más complejo que incluye relaciones tanto de superior a secundario como de elementos del mismo nivel.
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 paso a paso usando nombres o navegar hasta allí con un solo comando usando 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
Desafíos breves
- Usa
pwd
para averiguar en qué carpeta 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 dentro de este directorio.
Cómo crear archivos y directorios
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 o 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 del archivo.
# `touch` creates a new file.
touch style.css
Cuando crees archivos, agrega una extensión de archivo para especificar el tipo. Ejemplos de tipos de archivos:
.js
como un archivo JavaScript.html
crea un archivo HTML.css
crea un archivo CSS.md
crea un archivo Markdown
Los nombres de los archivos 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 si incluyes 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
Cómo crear directorios
Para crear un directorio o una carpeta, usa el comando mkdir
, una abreviatura de "crear directorio", seguido del 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 si incluyes 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
Desafíos breves
- Crea un archivo nuevo.
- Crea algunos archivos con un solo comando.
- Crea un directorio nuevo.
- Crea algunos directorios nuevos más. Intenta usar solo un comando para hacerlo.
- Con lo que sabes sobre cómo navegar por directorios y crear archivos y carpetas, construye un "árbol genealógico" en tu escritorio con archivos y carpetas.
Cómo mover y copiar
Cómo mover archivos y directorios
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 de move. - Después del comando de movimiento, escribe el nombre del archivo o la carpeta que quieras mover.
- Sigue el nombre del archivo con el destino al que deseas moverlo.
Por ejemplo, si tienes una estructura de archivos como la siguiente:
my_child_folder/ my_parent_folder/
Puedes ver que no está organizado como debería: son hermanos cuando deberían ser madre o padre e hijo o hija. 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 otras variantes 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 para cambiar el nombre de un archivo con la sintaxis mv old_name new_name
. Esto significa que, si mueves un archivo a un directorio que no existe o si escribes mal el destino, se cambiará el nombre del archivo en lugar de moverlo.
Desafíos breves
- Crea 5 archivos de texto (.txt).
- Crea un directorio nuevo.
- Mueve los 5 archivos que creaste a la carpeta.
- Crea una carpeta y muévela dentro de otra.
Cómo copiar archivos y directorios
Enmarcado y propósito de la sección
A medida que compilamos nuestras apps web, es posible que deseemos duplicar un archivo (si compilamos dos páginas web similares, es posible que no queramos comenzar desde cero), y la sintaxis del comando cp
(copiar) es muy similar a la sintaxis de mv
.
Cómo copiar un archivo
El comando de copia tiene tres partes:
- El comando
cp
, abreviatura de copiar - Nombre del archivo que se copiará
- El nombre de la copia (si permanece en la misma carpeta) o la ubicación y el nombre (si se mueve 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 el 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 tienes la certeza de que es lo que necesitas.
Cómo copiar un directorio
Copiar una carpeta o un directorio es un poco más complicado, ya que es probable que quieras copiar no solo la carpeta, sino también todo lo que contiene.
- El comando
cp -R
, abreviatura de copia recursiva, se usa para carpetas vacías y no vacías. - Nombre de la fuente (carpeta o archivo que queremos mover)
- El nombre de la copia (si permanece en la misma carpeta) o la ubicación y el nombre (si se mueve a otra carpeta).
Advertencia: Cuando especifiques el nombre de la copia, si el archivo o la carpeta no se crearon antes, se crearán cuando hagas la copia. Si el archivo se creó antes de que ejecutes el comando de copia, se reemplazará todo lo que había en él, así que ten 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
del cp -R
se denomina marca. Las marcas siempre comienzan con un guion y se usan en combinación con comandos para dar instrucciones más específicas sobre cómo se debe ejecutar ese comando.
Desafíos breves
- Crea un archivo llamado
my_original.txt
. - Haz una copia de
my_original.txt
con un nombre nuevo en la misma carpeta. - Crea un directorio nuevo.
- Haz una copia de ese directorio, pero asígnale un nombre diferente.
- Haz una copia del archivo que copiaste (del paso 2), pero colócala en el directorio copiado (del paso 4).
Cómo quitar archivos y carpetas
Enmarcado y propósito de la sección
Podemos borrar archivos y carpetas en la línea de comandos, pero la acción es permanente.
Cómo quitar un archivo
Para quitar un archivo, podemos usar el comando rm
(abreviatura de quitar) 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 de 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
Cómo quitar un directorio que no está vacío
Para quitar una carpeta que no está vacía, debemos colocar una marca -R
(abreviatura de recursivo) después del comando rm
, que le indica a la computadora que borre el contenido de la carpeta. Como atajo, algunos desarrolladores usan la marca -Rf
, que quita forzosamente todo (de lo contrario, es posible que recibas mensajes sobre el borrado de algunos de los archivos o carpetas secundarios).
# 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: Usar el comando rm
no es como la papelera de reciclaje o la sección de elementos borrados de tu correo electrónico. Estos archivos no se pueden recuperar fácilmente. Ten EXTREMO CUIDADO cuando borres archivos de esta manera.
Desafíos breves
- Crea 4 archivos.
- Borra 2 de los archivos.
- Crea una carpeta.
- Crea otra carpeta y un archivo dentro de ella.
- Borra ambos directorios.
Puedes encontrar el código de este lab en la siguiente carpeta dentro del repositorio de estudiantes que descargaste de GitHub: command-line/labs/around-the-world
Fondo
Tu semestre en el extranjero está a la vuelta de la esquina y es hora de que comiences a planificar tus viajes por Europa…
Con tres meses de vida seria por delante, quieres asegurarte de aprovechar al máximo cada viaje de fin de semana.
Afortunadamente, no comenzarás desde cero, ya que tus amigos te proporcionaron algunas de sus actividades favoritas de su semestre en el extranjero. Lamentablemente, algunos de los archivos se mezclaron…
No te preocupes, con la magia de la línea de comandos, los solucionarás 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 de ciudad tenga los monumentos adecuados. Ten cuidado, o podrías terminar en Ámsterdam buscando la Torre Eiffel.
Si te sientes REALMENTE seguro de tus habilidades, oculta la GUI y enfrenta este desafío directamente desde la línea de comandos. Mientras haces todo esto, debes permanecer en la carpeta general de todo el mundo, lo que significa que debes usar rutas de acceso absolutas cuando te refieras a carpetas y archivos.
Cuando te asegures de que todo esté en el lugar correcto, será tu turno de tomar el control de los próximos meses. Genera ideas sobre ciudades, países y monumentos nuevos que NECESITAS ver y agrégalos a tu árbol de archivos.
¡Felicitaciones! Ya aprendiste oficialmente a hablar con la computadora. ¿Todo listo para ir un paso más allá? Hablemos de extensiones…
Extensiones
- Mezcla todos tus archivos de nuevo y, luego, dirígete a la ciudad que elijas. Vuelve a reorganizar los archivos, pero permanece en esa ciudad.
- Prueba uno de los divertidos juegos de línea de comandos que se vinculan a continuación
Terminus Game
Advanced Game (prepárate para buscar en Google) - ¿Eres fan de Star Wars? Intenta ejecutar
telnet towel.blinkenlights.nl
en la línea de comandos y presiona Intro… (Ten en cuenta que, en las versiones recientes de macOS, el comandotelnet
ya no se instala de forma predeterminada. En este caso, se puede usar el comandonc towel.blinkenlights.nl 23
en su lugar).
Puedes encontrar el código de este lab en la siguiente carpeta dentro del repositorio de estudiantes que descargaste de GitHub: command-line/labs/bashing-away-repetition
¿Todo listo para eliminar la repetición de tu uso diario de la línea de comandos? ¡Genial, yo también!
Fondo
Si hay algo que los programadores odian, es la repetición. Como científicos de la computación, nuestro trabajo es hacer que la computadora haga la mayor parte posible de nuestro trabajo. Escribir secuencias de comandos de Bash nos ayudará a usar la línea de comandos de manera más eficiente.
Primero lo primero: ¿Qué es una secuencia de comandos de bash?
EXCELENTE pregunta. Afortunadamente, nuestro amigo Ryan Chadwick, de este excelente lugar para encontrar instructivos de la línea de comandos, tiene una respuesta para nosotros.
Una secuencia de comandos de Bash nos permite definir una serie de acciones que la computadora realizará sin que tengamos que ingresar los comandos nosotros mismos. Si una tarea en particular se realiza con frecuencia o es repetitiva, una secuencia de comandos puede ser una herramienta útil.
¿No hay repetición? Eso es a lo que me refiero.
Instructivo
En primer lugar, para poder ejecutar tu secuencia de comandos, deberás otorgarle permiso a tu computadora. Para ello, ejecuta el siguiente comando.
chmod 755 myScript.sh
Bien, es hora de escribir tu primer programa. Dirígete a tu myScript.sh
(comprueba 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 tu terminal. ** TA DA ** Deberías ver "Hello World" impreso en tu terminal.
Todo lo que escribas en tu secuencia de comandos de Bash se ejecutará como si lo hubieras escrito en la terminal. Veamos un ejemplo más antes de pasar a las extensiones. Primero, crea un archivo para tu secuencia de comandos. Puede tener el nombre que desees, pero debe tener la extensión .sh
. A continuación, asegúrate de otorgarle permiso a tu secuencia de comandos para que se ejecute. Para ello, escribe chmod 755
y, luego, el nombre de tu secuencia de comandos en la terminal y presiona Intro. Cada vez que comiences un nuevo script de Bash, asegúrate de completar esos dos pasos.
Desafío de introducción
Ahora, intentemos escribir un script que cree una carpeta nueva. ¿Qué comando conocemos que crea una carpeta nueva? Si estás pensando en una palabra que comienza con m
y termina con kdir
, estás en lo correcto. Escribe el comando que creará tu carpeta nueva y asígnale un nombre genial en tu nuevo archivo .sh
. Luego, ejecútalo en tu terminal.
Si funciona, continúa con los otros desafíos que se indican a continuación. Si aún no lo entiendes bien, revisa el lab de Around the World y piensa en cómo creaste las carpetas de países y ciudades.
No dudes en usar el instructivo que se vincula más arriba y prepárate para usar tus mejores habilidades de búsqueda en Google. Escribe y ejecuta secuencias de comandos que hagan lo siguiente:
Tareas principales
- Agrega un comando al archivo que creaste anteriormente para navegar a la carpeta que estás creando. (¿Qué comando usamos para cambiar de directorio?)
- Agrega una marca de fecha y hora al nombre de la carpeta nueva. 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, y "Aquí tienes una lista de todo lo que hay en este directorio". " seguido del contenido de tu directorio actual.
- Descubre cómo darle una entrada a tu secuencia de comandos de Bash y crear un archivo basado en esa cadena de entrada. En el instructivo que se vinculó anteriormente en el lab, se incluyen algunos ejemplos excelentes en la sección de variables que puedes consultar.
- Pregúntale al usuario su nombre y, luego, imprime "Hola, mucho gusto insertar su nombre aquí".
- Intenta pedirle más información al usuario y crear 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 (todo lo que hace la interfaz gráfica de usuario [GUI], pero a través de comandos de texto), desde la navegación hasta la creación de archivos nuevos y la ejecución de secuencias de comandos. La línea de comandos se usará para abrir archivos y para iniciar el entorno de desarrollo cuando se use Google App Engine.
Línea de comandos en acción
Cómo acceder a la terminal
Combinación de teclas para Mac:
- Abre Spotlight con Comando + espacio.
- Escribe Terminal en la Búsqueda de Spotlight.
Cómo navegar 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 y carpetas
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
Cómo mover archivos y carpetas
Cómo 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
Cómo mover 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
Mover es cambiar el nombre
Ten en cuenta que mv
también es el mismo comando que se usa para cambiar el nombre de archivos o carpetas.
# Rename a file from `old_name.txt` to `new_name.txt`.
mv old_name.txt new_name.txt
Cómo copiar 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
Cómo copiar 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
Cómo borrar archivos y carpetas
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
Cómo borrar carpetas
# Delete an empty folder.
rmdir empty_directory
# Delete a folder which contains other files or folders.
rm -r directory_which_isnt_empty
Sugerencias
- Practica el uso de la línea de comandos, incluso cuando creas que no la necesitas. Con el tiempo, mejorarás.
- La tecla
tab
autocompletará el nombre del archivo o la carpeta (puede distinguir entre mayúsculas y minúsculas). - Si solo queda un archivo o una carpeta que coincida, se autocompletará.
- Si hay varios archivos o carpetas que coinciden, presiona Tab dos veces para ver una lista de las coincidencias restantes.
- Las flechas hacia arriba y hacia abajo te permitirán recorrer el historial de comandos para que no tengas que volver a escribirlos.
- Usa el comando
clear
para borrar la ventana de la terminal. Esto conserva todo tu trabajo anterior. Desplázate hacia arriba para verlo. - Usa
reset
para reiniciar la terminal. Esto no mantendrá tu 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 una palabra
Resumen de prácticas recomendadas
- Navega por la terminal con
cd
,cd ..
ocd <folder name>
. - Visualiza el contenido de las carpetas con
ls
. - Crea archivos con
touch
y carpetas conmkdir
. - Mueve 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>
.
Pregunta 1
¿Qué usarías para identificar tu directorio de trabajo actual?
pwd
ls
cd
mkdir
touch
Pregunta 2
¿Cómo subirías dos niveles desde tu directorio de trabajo actual?
mv ~
cd ../..
mv up/up
cd ^(2)
Pregunta 3
¿Qué comando usarías para cambiar el nombre de un archivo?
mv
cd
ls
python
rename
Pregunta 4
¿Por qué el comando mv script.py
arrojaría un error?
- Porque "
script.py
" es un nombre de archivo no válido. - Esto se debe a que el comando
mv
no puede ir seguido de ninguna otra información. - Esta es una pregunta engañosa, ya que no arrojaría un error.
- Porque mover un archivo requiere al menos dos argumentos: un destino y un objetivo
Pregunta 5
¿Qué haría el comando cd ~
?
- Cambia tu directorio de trabajo a tu directorio principal.
- Repite el comando anterior.
- Usar un algoritmo para determinar el comando más útil en este momento
- Genera un error.
Pregunta 6
¿Cuál de las siguientes NO es una razón para usar la tecla Tab para autocompletar nombres de archivos?
- Porque ahorra tiempo.
- Porque ayuda a eliminar los errores ortográficos.
- Porque requiere menos potencia de procesamiento.
Pregunta 7
Si un desarrollador nuevo intenta crear un archivo llamado "my script.py
", ¿por qué no funcionará el comando touch my script.py
?
- Porque
touch
no puede crear archivos nuevos. - Porque
.py
no es una extensión de archivo válida. - Esto se debe a que creará dos archivos, uno llamado "
my
" y otro llamado "script.py
", en lugar de uno solo. - Porque es imposible crear archivos nuevos desde la línea de comandos.
Pregunta 1
¿Qué usarías para identificar tu directorio de trabajo actual?
pwd
Pregunta 2
¿Cómo subirías dos niveles desde tu directorio de trabajo actual?
Con cd ../..
, subes dos niveles (cada ..
representa un nivel superior).
Pregunta 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 del archivo.
Pregunta 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.
Pregunta 5
¿Qué haría el comando cd ~
?
Cambiará tu 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 apuntar a su carpeta principal.
Pregunta 6
¿Cuál de las siguientes NO es una razón para usar la tecla Tab para autocompletar nombres de archivos?
Porque requiere menos capacidad de procesamiento no es correcta. tab
requiere una cantidad (a menudo insignificante) de potencia de procesamiento para analizar las carpetas en busca de nombres de archivos para autocompletar, pero ahorra tiempo y evita errores ortográficos en el proceso.
Pregunta 7
Si un desarrollador nuevo intenta crear un archivo llamado "my script.py
", ¿por qué no funcionará el comando touch my script.py
?
Se crearán dos archivos en lugar de uno. El comando touch
creará archivos nuevos. En la terminal, los espacios son separadores, no caracteres que se deben incluir en el nombre del archivo. Lo mejor es evitarlos por completo, pero, si debes usarlos, el nombre de archivo debe estar entre comillas dobles:
touch "my script.py"
Pregunta 1
El comando de terminal para cambiar de directorio es el siguiente:
move
mkdir
pwd
cd
Pregunta 2
¿Qué comando ejecutarías si quisieras navegar a la carpeta principal de tu directorio de trabajo actual?
cd up
cd .
cd ..
cd ~
Pregunta 3
¿Qué comando se usa para crear archivos?
touch
mkdir
create
pwd
Pregunta 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
Pregunta 5
¿Qué comando usas para cambiar el nombre de un archivo o una carpeta?
rename
move
mv
rm
Pregunta 6
¿Qué marca necesitan los comandos rm
y cp
para trabajar en carpetas?
-f
-r
-x
-d
Pregunta 7
Para mover projects
a ~/Documents
y cambiarle el nombre a Projects
, ¿qué comando debe ir en el espacio en blanco?
cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects
pwd
cd projects
mv ~ projects
cd ~/Documents
ls
Pregunta 8
¿Qué hará el siguiente comando?
rm -r projects
- Borra un archivo llamado
projects
. - Borra una carpeta llamada
projects
. - Cómo cambiar el nombre de un archivo llamado
projects
- Busca
projects
en el contenido del directorio actual.
Pregunta 1
El comando de terminal para cambiar de directorio es el siguiente:
El comando de terminal para cambiar de directorio es cd
. El comando en sí es una abreviatura de "cambiar directorio".
Pregunta 2
¿Qué comando ejecutarías si quisieras navegar a la carpeta principal de tu directorio de trabajo actual?
El comando para navegar a la carpeta principal es cd ..
Pregunta 3
¿Qué comando se usa para crear archivos?
El comando para crear archivos es touch
.
Pregunta 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.
Pregunta 5
¿Qué comando usas para cambiar el nombre de un archivo o una carpeta?
Aunque significa "mover" y se puede usar para mover archivos o carpetas, mv
también se puede usar para cambiar el nombre de archivos y carpetas.
Pregunta 6
¿Qué marca necesitan los comandos rm
y cp
para trabajar en carpetas?
Los comandos rm
y cp
requieren la marca -r
para funcionar en carpetas, ya que la marca -r
significa "recursivo" y vuelve a ejecutar el comando para cualquier archivo y carpeta que contenga.
Pregunta 7
Para mover projects
a ~/Documents
y cambiarle el nombre a Projects
, ¿qué comando debe ir en el espacio en blanco?
cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects
Como comenzamos en el directorio principal, deberíamos ejecutar cd ~/Documents
para obtener el comando final que se ejecutará en el directorio correcto.
Pregunta 8
¿Qué hará el siguiente comando?
rm -r projects
El comando borrará un archivo O una carpeta llamada projects
porque se llama con la marca -r
o recursiva. Sin esa marca, este comando solo funcionaría para borrar un archivo con ese nombre.