- Aprender
- Informática
- TI, redes y nube
- Introducción a Linux
- Línea de comandos de Linux
La línea de comandos de Linux
PrincipianteUnidad 2 de 7 del curso Curso de Introducción a Linux
Lo que aprenderás
- Identifica el intérprete de comandos y su indicador, escribe comandos con el formato correcto, con opciones y argumentos, y utiliza las teclas que hacen que el trabajo en la línea de comandos sea más rápido y seguro.
- Identifica el intérprete de comandos, el terminal y el indicador de comandosDistingue el intérprete de comandos de la ventana del terminal, interpreta lo que indica el indicador sobre tu identidad y ubicación, y utiliza las teclas básicas para ejecutar, detener y repetir comandos.
- Escribe comandos con opciones y argumentosConstruye un comando a partir de su nombre, opciones y argumentos, combina opciones cortas, utiliza opciones largas y valores de opciones, y maneja correctamente los espacios y los nombres poco habituales.
- Identifica el intérprete de comandos, el terminal y el indicador de comandos
- Utiliza las páginas de manual y la ayuda rápida integrada en los comandos y en el intérprete para averiguar qué hace un comando y qué opciones tiene, sin salir del terminal.
- Lee las páginas de manual y busca información en ellasAbre una página de manual, comprende sus secciones y la notación SYNOPSIS, desplázate y busca en ella, elige una sección del manual y encuentra la página adecuada cuando no sepas el nombre del comando.
- Utiliza la ayuda rápida y otras fuentes de documentaciónObtén un resumen rápido de opciones con --help, lee la ayuda de los comandos integrados del intérprete, encuentra documentación adicional en /usr/share/doc y en las páginas Info, y utiliza los mensajes de error como pistas.
- Lee las páginas de manual y busca información en ellas
- Comprende cómo organiza Linux los archivos en un solo árbol de directorios, desplázate por él mediante rutas absolutas y relativas, y lista e inspecciona el contenido de cada directorio.
- Comprende el árbol de directoriosDescribe el árbol único que comienza en el directorio raíz, identifica los principales directorios del sistema y el directorio personal, y sigue las reglas de los nombres de archivo y los archivos ocultos.
- Desplázate mediante rutas absolutas y relativasIdentifica dónde estás, cambia de directorio y escribe rutas desde la raíz, desde el directorio actual, con .. y con ~, eligiendo el tipo de ruta adecuado para cada tarea.
- Lista e inspecciona el contenido de los directoriosLista archivos con ls y sus opciones habituales, interpreta cada columna de un listado en formato largo y muestra archivos ocultos, tamaños, órdenes de clasificación y contenido de los subdirectorios.
- Comprende el árbol de directorios
- Gestiona archivos y directorios desde el intérprete: créalos, cópialos, muévelos o cámbiales el nombre y elimínalos de forma segura, sabiendo exactamente qué hace cada comando cuando los nombres ya existen.
- Crea archivos y directoriosCrea directorios, incluidos los anidados, crea archivos vacíos o actualiza sus marcas de tiempo con touch y elimina directorios vacíos.
- Copia, mueve y cambia nombresCopia archivos y directorios completos con cp, mueve y cambia nombres con mv, prevé dónde quedará el resultado y evita sobrescribir archivos por accidente.
- Elimina archivos y directorios de forma seguraElimina archivos y árboles de directorios con rm, utiliza las opciones que preguntan o fuerzan la eliminación y sigue una rutina que evite eliminar elementos equivocados.
- Crea archivos y directorios
- Utiliza los patrones con comodines del intérprete para indicar varios archivos a la vez, prevé exactamente con qué nombres coincide un patrón y utiliza patrones de forma segura con comandos que copian, mueven y eliminan.
- Busca coincidencias en nombres de archivo con *, ? y [ ]Escribe patrones con *, ? y expresiones entre corchetes, incluidos rangos y negaciones, y prevé con qué nombres existentes coinciden, teniendo en cuenta las mayúsculas, las minúsculas y los archivos ocultos.
- Utiliza comodines de forma segura en los comandosPrevé qué pasa el intérprete a un comando tras la expansión, previsualiza patrones antes de usarlos, impide la expansión con comillas y utiliza llaves para generar nombres.
- Busca coincidencias en nombres de archivo con *, ? y [ ]
- Recupera y repite comandos anteriores del historial, almacena valores en variables del intérprete y de entorno, y controla cómo encuentra el intérprete los programas mediante PATH.
- Recupera y reutiliza comandos del historialRecorre, busca y vuelve a ejecutar comandos anteriores, usa con cuidado la expansión del historial y conoce dónde guarda Bash el historial y qué registra.
- Define y utiliza variables del intérprete de comandos y de entornoCrea, lee y elimina variables, expórtalas al entorno, utiliza las variables de entorno habituales, protege los valores correctamente con comillas y conserva los ajustes.
- Controla cómo encuentra comandos el intérprete mediante PATHExplica cómo convierte el intérprete un nombre de comando en un programa, consulta y amplía PATH, ejecuta un programa que no esté en PATH y comprueba qué programa ejecuta un nombre.
- Recupera y reutiliza comandos del historial
Guía de estudio de Línea de comandos de Linux
1Trabaja en el indicador de comandos
Una sesión de terminal te ofrece un lugar donde escribir instrucciones y ver sus resultados. El intérprete lee cada instrucción, mientras que el indicador te ayuda a identificar tu cuenta de usuario y tu ubicación. Aprenderás las teclas para completar nombres y corregir una línea, y después construirás comandos a partir de nombres, opciones y argumentos. Es importante escribir bien los espacios y las comillas: el intérprete actúa sobre las palabras que recibe y un pequeño cambio al escribir puede indicar un archivo diferente.
1.1 Identifica el intérprete de comandos, el terminal y el indicador de comandos
Un intérprete de comandos lee comandos e inicia el trabajo que solicitan. Un terminal es la ventana a través de la cual escribes y ves la salida. Abrir otro terminal normalmente inicia otra sesión del intérprete. Una consola proporciona una pantalla de texto conectada directamente; un inicio de sesión SSH puede proporcionar un intérprete en otra computadora.
Lee el indicador de comandos
En el indicador de ejemplo sam@laptop:~$, sam es el usuario, laptop es el equipo y ~ representa el directorio personal. El $ final suele indicar un usuario normal. El formato de los indicadores puede cambiar, así que usa comandos para confirmar los detalles cuando sea necesario. whoami muestra el nombre de la cuenta y pwd muestra el directorio actual.
Por convención, un indicador # señala al superusuario, la cuenta de administración. Trabaja como usuario normal y utiliza derechos de administración solo cuando una tarea los necesite. El símbolo del indicador que aparece delante de un comando de ejemplo no forma parte del comando que escribes.
Ejecuta una primera sesión
Escribe cada línea por separado y pulsa Enter:
whoami
pwd
date
echo Hello
Para la cuenta de ejemplo, los dos primeros resultados son sam y /home/sam. date muestra la fecha y la hora actuales; echo Hello muestra Hello. La salida de un comando aparece debajo de la entrada, seguida de un nuevo indicador. Algunos comandos ejecutados correctamente no muestran nada: mkdir reports crea un directorio en silencio. Inspecciona el resultado con ls cuando necesites confirmarlo.
Bash, Bourne Again Shell, se utiliza ampliamente en Linux. Otros intérpretes son zsh y fish. echo $0 muestra cómo se invocó el intérprete actual; echo $SHELL muestra el intérprete de inicio de sesión configurado para la cuenta. Iniciar otro intérprete puede hacer que esas respuestas sean diferentes. Una ventana de terminal no determina por sí misma qué intérprete se ejecuta dentro de ella.
Edita y recupera
| Tecla | Acción |
|---|---|
| Tab | Completa un comando o nombre de archivo; pulsa dos veces para ver las posibilidades cuando haya más de una |
| Arriba / Abajo | Recorre los comandos escritos anteriormente |
| Ctrl+C | Cancela la línea de entrada actual o interrumpe un programa en ejecución en primer plano |
| Ctrl+L | Limpia la pantalla; clear también lo hace |
| Ctrl+D en una línea vacía | Finaliza el intérprete, igual que exit |
Supón que escribes ls Doc y pulsas Tab. Si Documents es el único nombre coincidente, el autocompletado lo completa. Si varios nombres comienzan por Doc, Bash necesita más caracteres o una elección. El autocompletado ayuda con la escritura y el uso de mayúsculas y minúsculas: Documents y documents son nombres diferentes.
Un programa a pantalla completa puede estar esperando su propia tecla en lugar de mostrar el indicador del intérprete. Pulsa q para salir de man o less. Un comando cat sin archivo espera que escribas una entrada; Ctrl+C te devuelve al intérprete. Por tanto, Ctrl+C no es el atajo habitual para copiar en el terminal. Muchos emuladores de terminal usan Ctrl+Shift+C y Ctrl+Shift+V para copiar y pegar.
La distribución del teclado también afecta a cómo introduces símbolos como ~, [ y {. Algunas distribuciones usan AltGr y una tecla muerta ~ puede necesitar la barra espaciadora para aparecer. Escribe los comandos respetando las mayúsculas y minúsculas: LS y ls son nombres de comando diferentes.
Puntos clave
- El intérprete interpreta los comandos; el terminal muestra la sesión.
- Un indicador ayuda a identificar la cuenta, el equipo y el directorio actual.
- Usa Tab para completar nombres y Ctrl+C para interrumpir o cancelar.
- Ctrl+D en una línea vacía cierra el intérprete;
qcierra un paginador de manual.
1.2 Escribe comandos con opciones y argumentos
Una línea de comandos se compone de palabras. La primera palabra indica qué ejecutar, las opciones cambian su comportamiento y los argumentos proporcionan los objetos o valores sobre los que actúa. Los espacios separan esas palabras.
Identifica las partes
En ls -l /etc, ls es el comando, -l solicita un listado en formato largo y /etc es el argumento que indica el directorio. La forma de uso command [options] [arguments] describe esta disposición; no escribas esos corchetes.
Las opciones cortas usan un guion y una letra. ls -a -l, ls -al y ls -la solicitan el mismo listado. Las opciones largas usan dos guiones, como en ls --all. Mantén separadas las opciones largas; unir palabras detrás de un guion no crea una opción larga. Por ejemplo, ls -all se interpreta como las opciones cortas -a -l -l.
Una opción también puede necesitar un valor. En touch -d 2025-01-31 old.txt, la fecha corresponde a -d; old.txt es el argumento que indica el archivo. La forma larga es touch --date=2025-01-31 old.txt. Lee la descripción de uso para saber si una opción necesita un valor y cómo proporcionarlo.
Mantén unido cada nombre
El intérprete trata los espacios sin proteger como límites entre palabras. Cada una de estas tres líneas indica un solo archivo:
ls "Annual Report.pdf"
ls 'Annual Report.pdf'
ls Annual\ Report.pdf
Las comillas o la barra inversa protegen el espacio; no forman parte del nombre del archivo. Sin esa protección, ls Annual Report.pdf solicita dos archivos. Un efecto similar aparece con echo: echo Hello world recibe dos palabras y muestra un espacio de separación, mientras que echo "Hello world" conserva los tres espacios dentro de un solo argumento.
Evita ambigüedades en las opciones
Pon las opciones antes de los argumentos de archivo. Los comandos GNU suelen aceptarlas también después, pero ponerlas primero facilita la lectura de la línea y funciona en más casos. En los comandos que lo admiten, -- termina el procesamiento de opciones. Por tanto, rm -- -draft.txt trata -draft.txt como un nombre de archivo. La ruta ./-draft.txt también comienza con un punto, por lo que rm ./-draft.txt evita que el primer carácter parezca una opción.
Las letras de las opciones pertenecen a cada comando. cp -r copia directorios de forma recursiva, pero ls -r invierte el orden; ls -R lista directorios de forma recursiva. ls -h cambia la presentación de los tamaños y no solicita ayuda. Una raya media copiada, –, también es diferente del guion normal - que requieren las opciones.
Averigua qué ejecuta un nombre
Un comando puede ser un archivo de programa, un comando integrado en el intérprete o un alias que se expande a otra línea de comandos. cd está integrado en Bash porque cambia el directorio de ese intérprete. ls suele ser un programa, a menudo con un alias que añade color. type cd y type ls indican su significado activo.
Si ls-l falla con command not found, Bash buscó ese nombre completo. Inserta el espacio que falta: ls -l. Si un comando informa de una opción desconocida, comprueba cómo está escrita y consulta su documentación; cambiar la ruta del archivo no corregirá un error de opción.
Puntos clave
- Los espacios separan el comando, las opciones y los argumentos.
- Protege con comillas o con un carácter de escape un espacio que forme parte de un nombre.
- Las opciones cortas pueden combinarse; las largas usan dos guiones.
- Una opción puede requerir un valor propio.
--o una ruta con./permiten tratar un nombre de archivo que comienza con un guion.typedistingue entre un comando integrado, un alias y un archivo de programa.
2Busca ayuda en la línea de comandos
La ayuda de la línea de comandos te permite responder a una pregunta concreta sin memorizar todas las opciones. Una página de manual ofrece una referencia completa; la ayuda rápida de un comando ofrece un recordatorio más breve. Bash también tiene un sistema de ayuda independiente para los comandos integrados en el intérprete. Aprenderás a elegir la fuente adecuada, interpretar la notación abreviada de una línea de uso, buscar en una página larga y utilizar un mensaje de error para decidir qué comprobar después.
2.1 Lee las páginas de manual y busca información en ellas
Una página de manual es una referencia detallada de un comando o una función del sistema. Abre una con man ls. La página suele aparecer en less, un paginador que muestra una pantalla cada vez y permite buscar sin salir del terminal.
Lee la estructura de la página
El encabezado NAME identifica el comando y su propósito. SYNOPSIS presenta su patrón de invocación. DESCRIPTION y OPTIONS explican el comportamiento y las opciones. EXAMPLES puede mostrar usos reales, mientras que FILES y ENVIRONMENT describen archivos y variables relacionados. SEE ALSO indica páginas relacionadas. Los encabezados varían porque algunos comandos necesitan información que otros no.
Una línea de uso como ls [OPTION]... [FILE]... es una notación abreviada:
- El texto literal, a menudo en negrita, se escribe tal como aparece.
- El texto que actúa como marcador, a menudo en cursiva o subrayado, se sustituye por tu valor.
- Los corchetes encierran partes opcionales.
...significa que la parte anterior puede repetirse.- Una barra vertical separa alternativas.
Tanto el grupo de opciones como el de archivos son opcionales en esta forma de ls, por lo que ls por sí solo es válido. En mkdir [OPTION]... DIRECTORY..., el grupo de directorios no tiene corchetes: se requiere al menos un nombre de directorio. No escribas DIRECTORY solo porque aparece en el manual.
Busca mientras lees
La barra espaciadora o Page Down avanza una pantalla; b retrocede. Las flechas desplazan por líneas. La g minúscula va al principio y la G mayúscula va al final. Escribe /human y pulsa Enter para buscar «human». Usa n para el siguiente resultado y N para el anterior. Pulsa q para salir de la página; h abre la ayuda del paginador.
Para una búsqueda práctica, abre man ls, busca /human y lee la entrada de -h, --human-readable. Funciona con un listado que muestra tamaños, como -l. Sal del manual y ejecuta ls -lh. Un archivo de 2048 bytes aparece como 2.0K. Usar ls -h por sí solo sigue dando un listado simple de nombres porque no se solicitó ninguna columna de tamaño.
Elige la sección adecuada del manual
| Sección | Tema |
|---|---|
| 1 | Comandos de usuario |
| 2 | Llamadas al sistema |
| 3 | Funciones de biblioteca |
| 4 | Archivos especiales de dispositivo |
| 5 | Formatos de archivo |
| 6 | Juegos |
| 7 | Descripciones generales y convenciones |
| 8 | Comandos de administración del sistema |
La referencia passwd(5) indica la explicación del formato del archivo de contraseñas en la sección 5. Ejecuta man 5 passwd para seleccionarla. man passwd sin más suele abrir la página del comando de la sección 1.
Si conoces el propósito pero no el comando, ejecuta apropos directory o man -k directory. Buscan en nombres y descripciones breves indexados. Si ya conoces un nombre y quieres saber su propósito en una línea, usa whatis ls o man -f ls. Un sistema nuevo puede tener un índice vacío, así que una búsqueda fallida de una palabra clave no demuestra que el comando esté ausente.
Algunas instalaciones mínimas omiten los manuales. La ausencia de una página para man cd también suele deberse a que cd es un comando integrado del intérprete. Usa help cd para consultar la descripción propia de Bash.
Puntos clave
- Usa
man commandcomo referencia y/wordpara buscar dentro de ella. - Los corchetes de SYNOPSIS indican partes opcionales; los puntos suspensivos indican repetición.
- Un número de sección permite elegir entre páginas que comparten un nombre.
aproposbusca propósitos;whatisconsulta un nombre conocido.- Usa
helppara los comandos integrados de Bash, comocd.
2.2 Utiliza la ayuda rápida y otras fuentes de documentación
No siempre necesitas una página de manual completa. Una lista rápida de opciones, la ayuda de un comando integrado o un mensaje de error pueden responder a la pregunta inmediata. Elige una fuente que describa el comando que realmente estás ejecutando.
Elige la ayuda según el comando
type cp normalmente identifica un archivo de programa, por lo que cp --help proporciona su uso y sus opciones. type cd identifica un comando integrado del intérprete, por lo que help cd describe la versión de Bash. help por sí solo lista los comandos integrados de Bash; no proporciona una página de ayuda para el programa externo ls.
La mayoría de los comandos GNU admiten --help, pero los significados de las opciones cortas varían. Para ls, -h indica tamaños legibles, no ayuda. Leer ls --help es la forma fiable de comprobar las opciones de ls sin adivinarlas a partir de otro programa.
Supón que quieres crear reports/2026/q1, pero los directorios padre no existen. Resuelve la cuestión paso a paso:
apropos directorysugieremkdirpara crear directorios.mkdir --helpmuestra-p, --parentsy explica la creación de los directorios padre que faltan.mkdir -p reports/2026/q1crea toda la ruta.
La búsqueda de ayuda proporciona la función que faltaba, no solo el nombre del comando. Esto importa cuando ya conoces mkdir, pero su forma habitual informa de que falta un directorio padre.
Busca más allá de la lista de opciones
Los manuales Info de GNU son documentos enlazados más extensos. info coreutils abre la documentación de las utilidades básicas de archivos. Dentro de Info, n va al nodo siguiente, p al anterior, u sube un nivel, Enter sigue un enlace seleccionado y q sale. Un nodo es una parte del manual enlazado.
Los paquetes instalados también pueden proporcionar documentación en /usr/share/doc/. Por ejemplo, ls /usr/share/doc/bash lista la documentación del paquete Bash. Estos directorios pueden contener archivos README, registros de cambios, textos de licencia y ejemplos. El sufijo .gz indica un archivo comprimido; zless puede mostrar texto comprimido.
Lee un error como una pista
Un error suele indicar el comando, el objeto y el motivo. En ls: cannot access 'note.txt': No such file or directory, ls se ejecutó, pero no pudo encontrar esa ruta. Comprueba pwd, la escritura y las mayúsculas y minúsculas, y el directorio que contiene el archivo. Volver a escribir ls en mayúsculas crearía otro problema con el nombre del comando.
rmdir: failed to remove 'photos': Directory not empty significa que el destino existe, pero aún tiene entradas. Listarlo, incluidas las entradas ocultas, explica por qué falló la eliminación. Una opción desconocida es diferente: un mensaje sobre --bogus te remite a ls --help porque la propia opción no es válida.
La ayuda local se corresponde más con el programa instalado que un ejemplo cualquiera de la web. ls --version identifica la versión de GNU cuando necesitas comparar la documentación. Antes de usar un comando copiado que no conozcas, identifica cada opción en su propia ayuda, especialmente en comandos que eliminan archivos o se ejecutan con derechos de administración.
Puntos clave
- Elige
command --helppara las opciones de un programa yhelp namepara los comandos integrados de Bash. infoy/usr/share/doc/pueden proporcionar explicaciones más extensas y ejemplos.- Usa el comando, la ruta y el motivo de un error para decidir qué comprobar después.
3Navega por el sistema de archivos de Linux
Los archivos y directorios se encuentran en un solo árbol y cada comando trabaja desde un lugar concreto de ese árbol. Una ruta le indica dónde ir o qué inspeccionar. Recorrerás rutas desde la raíz y desde tu directorio actual, usarás atajos para los directorios personales y padre, y leerás listados que muestran más que nombres. Estas habilidades te permiten comprobar tu ubicación y los objetos con los que trabajas antes de modificar nada.
3.1 Comprende el árbol de directorios
Linux organiza archivos y directorios en un solo árbol. Un archivo contiene datos; un directorio, llamado carpeta en un gestor de archivos gráfico, contiene entradas con nombre para archivos y otros directorios. El árbol comienza en el directorio raíz, /.
Recorre el árbol
Una barra inclinada separa los componentes de una ruta: /home/sam/photos lleva desde / a home, después a sam y después a photos. Otros discos aparecen dentro del mismo árbol, a menudo bajo /media o /mnt; no necesitan letras de unidad. Una barra inversa no es un separador de rutas de Linux. Bash la usa para proteger el carácter siguiente, como en Annual\ Report.pdf.
Las ubicaciones importantes tienen funciones diferentes:
| Ubicación | Propósito principal |
|---|---|
/home | Directorios personales de usuarios normales |
/root | Directorio personal del superusuario |
/etc | Configuración del sistema |
/bin, /usr/bin | Archivos de programas de uso cotidiano |
/sbin, /usr/sbin | Programas de administración del sistema |
/tmp | Datos temporales que pueden borrarse automáticamente |
/var | Datos que cambian, incluidos los registros de /var/log |
/dev | Archivos de dispositivo |
Muchas distribuciones actuales enlazan /bin con /usr/bin y /sbin con /usr/sbin. Por ello, puedes ver dos nombres de directorio que llevan a los mismos programas instalados. El directorio raíz / y el directorio /root siguen siendo lugares diferentes: uno inicia el árbol y el otro es el directorio personal de una cuenta.
Identifica tus propios archivos
Para el usuario de ejemplo sam, el directorio personal es /home/sam, abreviado por el intérprete como ~. /home es su directorio padre, no el directorio personal de sam. Los documentos y ajustes personales suelen estar en el directorio personal; /tmp no es adecuado para algo que necesites conservar porque los datos temporales pueden eliminarse automáticamente.
Considera esta estructura:
/home/sam/
.bashrc
Documents/
cv.pdf
letter.txt
photos/
projects/
notes.txt
website/
index.html
style.css
La ruta completa de la hoja de estilos es /home/sam/projects/website/style.css. El archivo notes.txt está junto a website, no dentro de él. Las entradas de cada directorio determinan el siguiente paso posible al bajar por el árbol.
Lee los nombres con exactitud
Los nombres distinguen entre mayúsculas y minúsculas: notes.txt, Notes.txt y NOTES.TXT pueden designar tres archivos. Los nombres no pueden contener / ni un byte nulo. Las letras simples, los dígitos, los puntos, los guiones y los guiones bajos hacen que los nombres cotidianos sean fáciles de escribir; los sistemas de archivos habituales de Linux limitan cada nombre a 255 bytes.
Un sufijo como .txt forma parte de un nombre, pero no demuestra su contenido. file report examina los datos y podría identificar un PDF aunque el nombre no termine en .pdf.
Un punto inicial oculta una entrada de la salida normal de ls. .bashrc, .profile y .config suelen contener ajustes. Oculto significa que se omite en el listado predeterminado, no que esté protegido frente al acceso; ls -a revela estos nombres. La entrada especial . representa el propio directorio y .. representa su directorio padre. En la raíz, .. sigue llevando a /.
Puntos clave
- Las rutas de Linux pertenecen a un solo árbol que comienza en
/. /home/sam,/homey/rootson directorios diferentes.- Los nombres de archivo distinguen entre mayúsculas y minúsculas; las extensiones no determinan el contenido.
- Un punto inicial oculta un nombre de un listado normal, pero no del acceso autorizado.
.representa el directorio actual y..representa su directorio padre.
3.2 Desplázate mediante rutas absolutas y relativas
Una ruta indica a un comando dónde encontrar un objeto. Para leer una ruta correctamente, determina primero dónde comienza. Una ruta absoluta comienza en /; una ruta relativa comienza en el directorio de trabajo actual del intérprete.
Establece tu punto de partida
pwd muestra tu directorio actual. Desde /home/sam, la ruta projects/website llega a /home/sam/projects/website. Desde /etc, esa misma ruta relativa significaría /etc/projects/website. La ruta absoluta /home/sam/projects/website identifica la misma ubicación desde cualquiera de los dos puntos de partida.
cd cambia el directorio actual. No lista el contenido del destino ni abre un archivo. cd projects entra en un directorio hijo llamado projects; cd /etc va a la ubicación absoluta /etc. Sin argumento, cd vuelve al directorio personal. cd - vuelve al directorio de trabajo anterior y muestra esa ubicación.
Recorre una ruta por partes
Empieza en /home/sam/projects/website y considera cd ../../photos:
- El primer
..llega a/home/sam/projects. - El segundo
..llega a/home/sam. photosbaja hasta/home/sam/photos.
El comando completo realiza un solo cambio hasta el destino final. Desde el directorio website, cd .. se detiene en projects, mientras que cd ../.. se detiene en el directorio personal. El directorio de partida importa cada vez: después de desplazarte, un segundo comando relativo comienza desde tu nueva ubicación.
Un ./ inicial indica explícitamente el directorio actual. ./notes.txt y notes.txt se refieren al mismo archivo local. ls ../photos lista un directorio cercano sin desplazar allí el intérprete; solo un comando que cambia el directorio de trabajo, como cd, cambia la base de las rutas relativas posteriores.
Usa el atajo del directorio personal
Al principio de una palabra sin comillas, Bash expande ~ a tu directorio personal. Por tanto, cd ~/Documents funciona desde cualquier lugar para sam. ~alex se refiere al directorio personal de alex.
Poner la virgulilla entre comillas impide esa expansión: cd "~/Documents" solicita un directorio llamado literalmente ~ bajo el directorio actual. Si la parte posterior contiene un espacio, deja la virgulilla fuera de las comillas:
cd ~/"My Files"
También puedes escribir cd "$HOME/My Files"; las comillas dobles conservan el espacio y permiten expandir el valor de la variable.
Diagnostica una ruta que falla
cd /projects solicita projects inmediatamente debajo de /, no debajo de tu directorio personal. cd.. es un único nombre de comando; escribe cd ... Un documents en minúsculas falla cuando el nombre real es Documents. Comprueba el inicio, cada componente y sus mayúsculas y minúsculas exactas. El autocompletado con Tab puede completar un nombre existente y evitar un error de escritura.
Las rutas absolutas son adecuadas para instrucciones que deben funcionar desde distintas ubicaciones. Las rutas relativas son cómodas para trabajar cerca. Ambas formas también funcionan como argumentos de archivo para cp, mv, ls y otros comandos; la interpretación de una ruta no depende de que se use con cd.
Puntos clave
- Usa
pwdpara establecer la base de una ruta relativa. - Las rutas absolutas comienzan con
/; las relativas comienzan en el directorio actual. - Interpreta cada
..como un paso al directorio padre. cd,cd -ycd ..tienen destinos diferentes.- Deja
~sin comillas cuando quieras expandir el directorio personal.
3.3 Lista e inspecciona el contenido de los directorios
ls muestra el contenido del directorio actual o los archivos y directorios que indiques. Un listado puede responder a más preguntas que «¿Qué hay aquí?»: las opciones revelan entradas ocultas, detalles, tamaños, orden y subdirectorios.
Elige qué mostrar
ls y ls -l sin más omiten las entradas ocultas. -a las incluye junto con . y ..; -A incluye las entradas ocultas sin esos dos nombres especiales. -F añade una barra después de los nombres de directorio. Los colores de la salida son otra ayuda visual, pero los colores exactos dependen del sistema.
ls projects lista lo que hay dentro de projects. En cambio, ls -ld projects muestra un listado en formato largo de la propia entrada del directorio. La opción -d cambia el objeto mostrado, no la cantidad de detalles.
Lee un listado en formato largo
Considera esta línea de ls -l:
-rw-r--r-- 1 sam sam 2048 Mar 3 14:20 notes.txt
Lee de izquierda a derecha:
-indica un archivo normal;dindicaría un directorio ylun enlace simbólico.- Los nueve caracteres siguientes describen los permisos del propietario, del grupo y de los demás usuarios.
1es el número de enlaces.- Los dos campos
samidentifican al propietario y al grupo. 2048es el tamaño del archivo en bytes.- La fecha y la hora describen la última modificación del contenido.
notes.txtes el nombre.
ls -lh muestra ese tamaño como 2.0K. La opción -h cambia el formato del tamaño, mientras que -l proporciona la columna de tamaño. ls -h por sí solo sigue mostrando nombres sin tamaños.
El tamaño de un directorio es el espacio utilizado para sus entradas; no es la suma de todos los datos que contiene. El encabezado total 12 describe los bloques de disco de las entradas listadas, no doce archivos. Usa las líneas de nombres de archivo para ver las propias entradas.
Ordena el resultado
| Opciones | Qué aparece primero |
|---|---|
| Sin opción de ordenación | Nombres en el orden de la configuración regional |
-t | Entradas modificadas más recientemente |
-S | Entradas más grandes |
-r con otro orden | El inverso de ese orden |
Por ejemplo, ls -lt coloca primero los cambios más recientes, mientras que ls -ltr los coloca al final. ls -lhS muestra tamaños legibles con los más grandes primero. Las mayúsculas, minúsculas y la puntuación pueden ordenarse de forma diferente según la configuración regional, así que no deduzcas que falta un archivo solo por el lugar donde esperabas que apareciera su nombre.
Inspecciona por debajo del primer nivel
ls -R projects lista el contenido de projects y después sus subdirectorios. Con notes.txt junto a un directorio website, el primer encabezado es projects: y sus entradas incluyen esos dos nombres. Un encabezado posterior, projects/website:, identifica el listado que contiene index.html y style.css.
La -R mayúscula es recursiva. La -r minúscula solo invierte el orden. Combinar -a con un listado recursivo también muestra las entradas ocultas, lo que puede hacer que el resultado sea mucho más largo. Para los metadatos de un directorio, ls -ld suele ser la forma más clara de inspeccionarlos.
Puntos clave
-lañade detalles y-hfacilita la lectura de los tamaños mostrados.-aincluye entradas ocultas;-Asolo omite.y...-dlista el propio directorio;-Rlista sus subdirectorios.-t,-Sy-rcontrolan el orden.- El tamaño de un directorio y la línea
totalno indican cantidades ni tamaños totales de todos los archivos que contiene. - Un listado en formato largo identifica el tipo, los permisos, los enlaces, el propietario, el grupo, el tamaño, la fecha y hora de modificación y el nombre.
4Crea, copia, mueve y elimina archivos y directorios
Crear un directorio, copiar un archivo y cambiar el nombre de un archivo modifican el árbol de distintas maneras. El resultado también depende de si ya existe un destino. Crearás una pequeña estructura de directorios, preverás dónde terminan las copias y los movimientos, y distinguirás entre eliminar un directorio vacío y eliminar un árbol completo. Interpretar el comando como una acción sobre rutas concretas de origen y destino ayuda a evitar sobrescrituras y eliminaciones accidentales.
4.1 Crea archivos y directorios
mkdir crea directorios y touch crea archivos vacíos o actualiza las marcas de tiempo existentes. Son acciones distintas: un directorio proporciona un lugar para las entradas, mientras que un archivo vacío ya es un archivo, aunque no contenga datos.
Crea primero el directorio
mkdir drafts crea un directorio bajo tu ubicación actual. mkdir drafts final crea dos directorios al mismo nivel. Si un nombre solicitado ya existe, mkdir sin opciones informa File exists.
Normalmente, los directorios padre de una ruta deben existir. Si falta reports, mkdir reports/2026/q1 no puede llegar a la ubicación solicitada. Añade -p para crear los directorios padre que faltan:
mkdir -p reports/2026/q1
Esto crea cada nivel que falte y acepta los niveles que ya existan como directorios. Repetir el comando resulta útil para preparar una estructura cuyas partes existentes deben mantenerse. No convierte un archivo normal existente en un directorio.
Añade archivos vacíos
touch todo.txt crea un archivo de cero bytes si ese nombre no existe. Si el archivo existe, touch conserva su contenido y actualiza sus fechas y horas de acceso y modificación. No es un comando para vaciar un archivo. Puedes indicar varios archivos, como en touch a.txt b.txt, o elegir una marca de tiempo con touch -d 2025-01-31 old.txt.
Los archivos con contenido suelen proceder de un programa que guarda datos, como un editor. Crear un archivo con touch le da un nombre y un contenido vacío; no añade texto por ti.
Crea un pequeño proyecto
Desde tu directorio personal, ejecuta:
mkdir -p website/css website/images
touch website/index.html website/css/style.css
ls -R website
La primera línea crea website y sus dos directorios hijos. La segunda coloca index.html dentro de website y style.css dentro de website/css. No coloca ninguno de los dos archivos en images. En el listado recursivo, website: contiene css, images e index.html; website/css: contiene style.css; website/images: no tiene entradas normales.
Observa que el comando touch depende de los directorios padre creados por mkdir. Invertir esos dos pasos fallaría si website aún no existiera.
Elimina un directorio vacío
rmdir website/images elimina ese directorio vacío. rmdir website/css falla mientras style.css siga dentro. Una entrada oculta también hace que un directorio no esté vacío, así que inspecciónalo con ls -A si el listado normal parece vacío.
rmdir -p reports/2026/q1 elimina q1, después intenta eliminar 2026 y luego reports. Se detiene cuando un directorio padre no está vacío. Esa opción actúa hacia arriba, mientras que mkdir -p crea los directorios padre que faltan hacia abajo.
Los espacios siguen separando argumentos. mkdir My Project solicita dos directorios; mkdir "My Project" solicita uno. Un nombre sencillo como my-project evita el espacio. Los nombres Reports y reports son distintos, así que utiliza las mismas mayúsculas y minúsculas en el comando de creación y en las rutas posteriores.
Puntos clave
mkdircrea directorios;-ptambién crea los directorios padre que faltan.touchcrea un archivo vacío que no existe o actualiza uno existente sin borrarlo.- Crea los directorios padre antes de crear archivos dentro de ellos.
rmdirsolo elimina directorios vacíos, es decir, sin entradas ocultas tampoco.
4.2 Copia, mueve y cambia nombres
Una copia deja el origen en su lugar. Un movimiento cambia su nombre o ubicación. Para prever el resultado de cualquiera de las dos acciones, examina la ruta de origen, la ruta de destino y si el destino ya existe.
Prevé el destino de una copia
cp notes.txt notes-backup.txt crea un segundo archivo llamado notes-backup.txt. Si Documents es un directorio existente, cp notes.txt Documents/ crea Documents/notes.txt. La barra final expresa la intención de copiar dentro de un directorio.
Cuando hay varios orígenes, el último argumento debe ser un directorio existente. cp cv.pdf letter.txt backup/ coloca ambos archivos indicados en backup. Este comando no crea automáticamente un directorio de destino que falte.
Los directorios requieren una copia recursiva. cp website website-old omite el directorio porque no se indicó ninguna opción recursiva. cp -r website website-old copia el árbol, pero el resultado depende del destino:
| Antes de copiar | Ubicación del árbol copiado |
|---|---|
website-old no existe | website-old/index.html, etc. |
website-old existe como directorio | website-old/website/index.html, etc. |
Un directorio de destino existente recibe el directorio de origen con su nombre. No se sustituye automáticamente por el contenido del origen.
Mueve o cambia el nombre
mv draft.txt final.txt cambia el nombre de un archivo. mv final.txt Documents/ lo mueve a un directorio existente. mv website site cambia el nombre de un directorio cuando site no existe y no necesita ninguna opción recursiva.
Dentro de un mismo sistema de archivos, un movimiento suele cambiar las entradas de directorio sin copiar todos los datos. Mover entre sistemas de archivos puede requerir copiar y eliminar datos, por lo que un movimiento grande no tiene por qué terminar al instante.
Si archive no existe, mv notes.txt archive cambia el nombre del archivo a archive. En cambio, mv notes.txt archive/ requiere un directorio y falla si ese directorio no existe. Usa la barra cuando un nombre de archivo nuevo no sea el resultado deseado.
Controla la sustitución y los metadatos
cp y mv sin opciones pueden sobrescribir un archivo de destino existente sin preguntar. -i pregunta antes de sustituirlo; -n omite los destinos existentes; -v muestra las acciones. Los alias pueden añadir opciones, así que usa type cp o type mv si el comportamiento observado es diferente.
Una copia normal recién creada recibe una nueva fecha y hora de modificación. cp -p conserva las marcas de tiempo y los permisos, mientras que cp -a conserva de forma recursiva los atributos de un árbol de directorios y resulta útil para las copias de seguridad. No supongas que una copia normal conserva la fecha y hora de su origen solo porque el contenido coincida.
Sigue una operación completa
Desde /home/sam, crea primero backup. cp projects/notes.txt backup/ crea backup/notes.txt. Después, mv backup/notes.txt backup/notes-2026.txt cambia solo el nombre de la copia. Por último, cp -r projects/website backup/ crea backup/website, incluidos sus archivos. Los originales projects/notes.txt y projects/website permanecen donde estaban porque ninguno fue origen de un movimiento.
Puntos clave
cpconserva el origen;mvcambia su nombre o ubicación.- Un directorio de destino existente recibe el origen con su nombre.
- Varios orígenes requieren un directorio como último argumento.
cp -rcopia un árbol;mvno necesita una opción recursiva.-ipregunta antes de sobrescribir y-nomite un destino existente.cp -pconserva marcas de tiempo y permisos;cp -aconserva un árbol de forma recursiva.
4.3 Elimina archivos y directorios de forma segura
rm elimina los archivos indicados en sus argumentos. A diferencia de la acción de enviar a la papelera de un gestor de archivos gráfico, no los coloca en una papelera de reciclaje. Normalmente, una copia de seguridad permite recuperarlos después de eliminarlos.
Selecciona el comando de eliminación adecuado
rm old.txt elimina un archivo y rm a.txt b.txt elimina varios archivos indicados. rm old sin opciones se niega si old es un directorio. rmdir old o rm -d old de GNU elimina un directorio solo si está vacío. rm -r old elimina su contenido de forma recursiva y después el propio directorio.
La distinción es útil cuando esperas que un directorio esté vacío. Si rmdir falla con Directory not empty, tienes la oportunidad de inspeccionar el contenido inesperado. La eliminación recursiva también eliminaría ese contenido.
Controla las preguntas de forma consciente
| Opción | Efecto |
|---|---|
-i | Pregunta antes de cada eliminación |
-I | Pregunta una vez antes de eliminar más de tres archivos o de una eliminación recursiva |
-f | No pregunta; ignora los nombres que no existen |
-v | Muestra las acciones de eliminación |
Con una entrada interactiva normal, rm también puede preguntar por un archivo protegido contra escritura. -f suprime esa pregunta. No hace que la eliminación sea recuperable ni elimina todas las posibles causas de fallo de un comando.
Comprueba los destinos exactos
Usa esta rutina antes de una eliminación que pueda afectar a varios nombres:
- Ejecuta
pwdpara confirmar tu ubicación. - Lista los nombres exactos o el patrón que pretendes eliminar.
- Inspecciona la lista y comprueba, entre otras cosas, si se ha seleccionado algún directorio.
- Usa la misma expresión de destino con
rmy añade-icuando sea útil confirmar.
Supón que el directorio contiene draft1.tmp, draft2.tmp, final.txt y notes.tmp. ls *.tmp muestra los tres archivos temporales. rm -i *.tmp pregunta por esos tres nombres; final.txt no coincide. Responder n omite un archivo, mientras que y confirma su eliminación.
Conserva la escritura de las rutas
Un espacio separa palabras incluso en un comando peligroso. Añadir un espacio entre ~/ y el nombre de un elemento hijo convierte una ruta relativa al directorio personal en dos destinos separados. Comprueba toda la línea antes de pulsar Enter. Evita la eliminación recursiva forzada para la limpieza habitual cuando baste un comando más limitado. Por defecto, rm de GNU protege / en sí, pero esa protección no protege todas las rutas bajo / frente a un patrón equivocado.
Un guion inicial puede confundirse con una opción. rm -- -draft.txt termina la interpretación de opciones antes del nombre del archivo. rm ./-draft.txt también lo indica sin ambigüedad. Para un espacio dentro de un nombre, usa rm "old notes.txt"; la versión sin comillas indica old y notes.txt por separado.
Un error requiere diagnóstico, no más privilegios por defecto. Si falla una eliminación, comprueba si el destino es un directorio, si su ruta es correcta y qué dice el mensaje. Repetir un comando mal escrito con derechos de administración amplía aquello a lo que puede afectar el error.
Puntos clave
rmelimina directamente; no envía archivos a una papelera.- Usa
rmdirpara un directorio vacío yrm -rpara un árbol. - Comprueba el directorio de trabajo y los destinos exactos antes de eliminar.
-ipregunta por cada destino;-fsuprime las preguntas e ignora nombres que no existen.- Los espacios, las comillas y los guiones iniciales cambian cómo se interpretan los argumentos de eliminación.
5Selecciona archivos con comodines
Un comodín puede convertir un patrón corto en muchos nombres de archivo. Bash busca esas coincidencias antes de iniciar el comando, por lo que el mismo patrón puede servir para listar, copiar o eliminar. Determinarás exactamente qué nombres coinciden, tendrás en cuenta las mayúsculas, las minúsculas y las entradas ocultas, y verás cómo las comillas cambian lo que recibe un programa. La expansión de llaves añade otra herramienta útil: genera nombres nuevos aunque no existan archivos con esos nombres.
5.1 Busca coincidencias en nombres de archivo con *, ? y [ ]
Un patrón de nombres de archivo es un patrón que selecciona nombres de archivo. Bash sustituye un patrón sin comillas por los nombres existentes que coinciden antes de iniciar el comando. Puedes usar el mismo patrón con ls, cp, mv u otro comando que acepte esos nombres.
Busca coincidencias por partes
| Parte del patrón | Con qué coincide |
|---|---|
* | Cualquier secuencia de caracteres, incluida una vacía |
? | Exactamente un carácter |
[12] | Un carácter: 1 o 2 |
[0-9] | Un dígito del rango |
[!0-9] | Un carácter fuera del rango de dígitos |
Un patrón coincide con el nombre completo. report* coincide con report porque el asterisco puede coincidir con cero caracteres. beach?.jpg coincide con beach1.jpg, pero no con beach10.jpg: dos dígitos no caben en un signo de interrogación. beach[12].jpg limita esa posición a 1 o 2.
Para un ejemplo resuelto de selección, supón que photos contiene beach1.jpg, beach2.jpg, beach10.jpg, city1.jpg, city2.png, IMG_01.JPG, notes.txt y .index. El patrón *.jpg coincide con las tres fotos de playa y city1.jpg. city* también coincide con city2.png porque limita el comienzo, no el sufijo. [!b]* coincide con nombres cuyo primer carácter no es b y omite tanto los nombres de playa como el archivo oculto .index.
Ten en cuenta las mayúsculas, las minúsculas y los puntos iniciales
Por defecto, la búsqueda de coincidencias distingue entre mayúsculas y minúsculas. *.jpg no selecciona IMG_01.JPG. El patrón *.[jJ][pP][gG] acepta ambas formas en cada posición del sufijo, por lo que incluye los dos tipos.
En la búsqueda normal de coincidencias de Bash, un punto inicial requiere un punto explícito al comienzo de ese componente de ruta. * omite .index; .i* lo selecciona. Esta regla también se aplica dentro de un directorio: photos/* omite los nombres ocultos de photos. El patrón no incluye archivos ocultos solo porque el comando que lo recibe sea ls -a; la expansión ya se produjo antes de que se iniciara ls.
Un comodín no atraviesa /. photos/*.jpg selecciona coincidencias directamente dentro de photos. */notes.txt selecciona un archivo coincidente exactamente un nivel de directorio por debajo del directorio actual. No busca en todos los directorios más profundos.
Lee con cuidado los conjuntos de caracteres
[abc] ofrece una posición para un carácter, no una elección entre nombres de archivo completos. Un ! o ^ inicial niega el conjunto. Un rango como [a-f] sigue las reglas de la configuración regional, que pueden afectar al orden y a las coincidencias. Las clases con nombre usan otro par de corchetes: [[:digit:]], [[:upper:]] y [[:lower:]]. Su clasificación de caracteres sigue la configuración regional; los caracteres en minúscula no se limitan a las letras ASCII de a a z.
Los patrones de nombres de archivo y las expresiones regulares usan reglas diferentes. En un patrón de nombres de archivo, un punto es un punto literal y * ya es una instrucción completa de «cualquier secuencia». No tomes el significado de . o * de un patrón de búsqueda de texto para prever coincidencias en nombres de archivo.
Puntos clave
- Bash expande los patrones de nombres de archivo en nombres existentes coincidentes antes de ejecutar un comando.
*coincide con cero o más caracteres;?y un conjunto entre corchetes coinciden cada uno con uno.- Las mayúsculas, las minúsculas y un punto inicial afectan a las coincidencias.
- Los comodines coinciden dentro de un componente de ruta y no atraviesan
/. - Los rangos y las clases de caracteres dependen de la configuración regional.
- Los patrones de nombres de archivo y las expresiones regulares interpretan los símbolos de forma diferente.
5.2 Utiliza comodines de forma segura en los comandos
Un programa recibe los nombres que produce Bash, no la expresión con comodines que los seleccionó. Por eso resulta útil previsualizar: puedes inspeccionar los argumentos seleccionados antes de que un comando modifique archivos.
Expande y después ejecuta
Si notes.txt y todo.txt son los únicos nombres .txt, ls *.txt recibe esos dos nombres. El intérprete busca las coincidencias; después, ls puede listar cada argumento según sus propias reglas. Los directorios coincidentes también cuentan como nombres, por lo que un patrón no garantiza que cada destino sea un archivo normal.
echo *.tmp muestra las palabras expandidas sin modificar archivos. ls -d -- *.tmp lista las propias entradas coincidentes, incluidas las de directorio, en lugar de mostrar su contenido. Para nombres de archivo sencillos, estas vistas previas facilitan la comprobación de la selección antes de copiar, mover o eliminar.
En la configuración predeterminada de Bash, un patrón sin coincidencias permanece sin cambios. Si no existe ningún nombre .pdf, echo *.pdf muestra *.pdf; ls *.pdf intenta acceder a ese nombre literal e informa de que no existe. Por tanto, un asterisco mostrado puede indicar que no hay coincidencias, en lugar de ser una lista real de archivos seleccionados.
Decide quién debe recibir el patrón
Las comillas impiden la expansión de comodines. echo '*.txt', echo "*.txt" y echo \*.txt muestran el patrón literal. En cambio, echo *.txt pide a Bash que seleccione nombres existentes coincidentes. Las comillas son adecuadas cuando el propio programa debe recibir caracteres especiales o cuando un archivo real tiene un asterisco en su nombre.
Distingue esa decisión de proteger espacios con comillas. Un nombre de archivo seleccionado mediante la expansión de nombres de archivo sigue siendo un solo argumento aunque contenga un espacio. Sin embargo, una variable que contiene una ruta normalmente debe ponerse entre comillas dobles al utilizarla, porque su expansión sin comillas puede dividirse en palabras.
Comprueba el destino del comando
cp *.jpg ~/backup/ copia los nombres coincidentes en un directorio de copia de seguridad existente. mv draft* archive/ mueve los nombres coincidentes a un directorio de archivo existente. Una barra final requiere un directorio de destino y ayuda a detectar que falta, en lugar de cambiar silenciosamente el nombre de un solo origen.
Un * amplio incluye directorios. cp * backup/ copia archivos normales, pero omite directorios sin copia recursiva. Añadir -r incluye directorios, incluido el propio backup cuando está dentro del directorio actual; entonces cp se niega a copiar ese directorio dentro de sí mismo. Coloca la copia de seguridad fuera del conjunto de orígenes seleccionado o elige un patrón más limitado.
Los espacios cambian la selección. *.tmp es un patrón; * .tmp es un patrón amplio más un argumento independiente cuyo nombre empieza por un punto. Previsualiza la expresión real que vas a usar.
Genera nombres nuevos con llaves
La expansión de llaves genera palabras existan o no:
mkdir -p project/{src,docs,tests}
touch file{1..3}.txt
cp notes.txt{,.bak}
La primera línea crea tres directorios hijos con nombre. La segunda genera file1.txt, file2.txt y file3.txt. La última se expande a cp notes.txt notes.txt.bak; su primera opción entre llaves está vacía. Usa llaves para generar nombres y patrones de nombres de archivo para seleccionar los existentes.
Puntos clave
- Previsualiza el patrón real antes de usar un comando que modifique archivos.
- En Bash, por defecto, un patrón sin coincidencias permanece literal.
- Las comillas o una barra inversa mantienen literales los caracteres comodín.
- Los patrones de nombres de archivo seleccionan tanto directorios como archivos normales.
- La expansión de llaves crea palabras aunque no existan archivos coincidentes.
6Reutiliza comandos y trabaja con variables
Un intérprete puede recordar tus comandos y guardar valores que vuelves a utilizar. El historial ahorra escritura, las variables dan nombre a valores útiles y el entorno pasa los valores seleccionados a los programas que se inician. PATH es una variable de entorno que indica a Bash dónde buscar archivos de programa. Relacionarás estas funciones con las comillas, la resolución de comandos y los archivos de inicio para explicar tanto lo que funciona ahora como lo que heredará una sesión de terminal posterior.
6.1 Recupera y reutiliza comandos del historial
Bash mantiene una lista de historial de los comandos introducidos en el intérprete. Puedes recuperar una línea, inspeccionarla, cambiar una parte y ejecutar la versión editada. Esto es especialmente útil para una ruta larga o una combinación de opciones que hayas usado recientemente.
Recupera una línea antes de ejecutarla
Las flechas Arriba y Abajo recorren los comandos anteriores. La línea recuperada se convierte en una entrada editable; no se ejecuta hasta que pulsas Enter. history muestra la lista numerada y history 5 limita la salida a las entradas recientes.
Ctrl+R busca hacia atrás. Escribe parte de un comando, como mkdir, para encontrar la línea coincidente más reciente. Pulsa Ctrl+R de nuevo para una coincidencia anterior. Enter ejecuta el comando mostrado, mientras que Ctrl+G cancela la búsqueda. Lee todo el resultado, ya que el fragmento coincidente puede aparecer en varios comandos con rutas diferentes.
Comprende los atajos con signo de exclamación
La expansión del historial reescribe expresiones antes de la ejecución:
| Expresión | Texto reutilizado |
|---|---|
!! | El comando anterior |
!42 | La entrada 42 del historial |
!ls | El comando más reciente que comienza por ls |
!$ | El último argumento del comando anterior |
Por ejemplo, inmediatamente después de mkdir -p reports/2026, cd !$ se expande a cd reports/2026. El atajo se refiere al comando anterior, por lo que otro comando introducido entre esas líneas cambiaría lo que selecciona !$. Para repetir un comando numerado, usa su número de entrada; para reutilizar su último argumento, usa un atajo de palabra en el contexto adecuado.
Normalmente, la expansión muestra el comando expandido y lo ejecuta de inmediato. La presentación no es una solicitud de confirmación. Un modificador :p, como !rm:p, muestra la expansión sin ejecutarla. Recuperar con las flechas o Ctrl+R suele ser más fácil cuando quieres inspeccionar y editar una línea potencialmente destructiva. Puedes encontrar sudo !! para repetir el último comando con derechos de administración; inspecciona la acción prevista antes de decidir si son adecuados los derechos adicionales.
Conoce lo que se guarda
El intérprete activo mantiene el historial en memoria. Al salir, normalmente lo escribe en el archivo indicado por HISTFILE, por lo general ~/.bash_history. Cada terminal tiene su propia lista en memoria, por lo que dos terminales abiertos no tienen por qué mostrar el mismo historial en ese momento.
HISTSIZE limita el número de comandos guardados en memoria. El valor predeterminado integrado de Bash es 500, aunque las distribuciones suelen cambiarlo. HISTFILESIZE limita las líneas del archivo de historial guardado. Estos ajustes controlan lugares diferentes, por lo que cambiar uno no significa que hayas cambiado ambos límites.
HISTCONTROL=ignorespace omite las líneas que comienzan con un espacio; ignoredups omite una línea idéntica a la anterior; ignoreboth combina ambos comportamientos. Son opciones de configuración, no motivos para suponer que un terminal cualquiera dejará un comando sin registrar. history -d 42 elimina una entrada y history -c borra la lista actual de la memoria.
Las contraseñas incluidas en argumentos de comandos pueden almacenarse en el historial. Deja que un programa solicite una contraseña mediante su propio indicador en lugar de ponerla en la línea de comandos.
Puntos clave
- La recuperación con flechas y Ctrl+R permiten inspeccionar un comando antes de pulsar Enter.
!!, las entradas numeradas, los prefijos y!$se refieren a textos anteriores diferentes.- La expansión del historial suele ejecutarse de inmediato;
:pmuestra el resultado sin ejecutarlo. - La lista de historial activa y el archivo de historial guardado tienen límites independientes.
- Mantén las contraseñas fuera de los argumentos de comandos.
6.2 Define y utiliza variables del intérprete de comandos y de entorno
Una variable da un nombre a un valor. Bash puede sustituir ese valor en líneas de comandos posteriores. Una variable de entorno también se pasa a los programas iniciados desde ese intérprete, lo que les permite leer ajustes como el idioma o la ubicación del directorio personal.
Asigna y lee un valor
Escribe una asignación sin espacios alrededor de =:
city=Lisbon
echo "$city"
echo "${city}_trip"
La primera línea almacena Lisbon; las siguientes muestran Lisbon y Lisbon_trip. Las llaves indican dónde termina el nombre de la variable. Sin ellas, $city_trip representa otra variable llamada city_trip.
city = Lisbon no es una asignación: Bash intenta ejecutar un comando llamado city con dos argumentos. Los nombres distinguen entre mayúsculas y minúsculas y pueden contener letras, dígitos y guiones bajos, pero no pueden comenzar con un dígito. Leer una variable sin definir produce un valor vacío en el uso normal de Bash. unset city elimina el valor.
Elige las comillas según la tarea
| Entrada | Qué hace Bash |
|---|---|
echo "$HOME" | Expande HOME y mantiene unido el resultado |
echo '$HOME' | Pasa el texto literal $HOME |
echo \$HOME | Protege el signo de dólar y también muestra $HOME |
Después de greeting="Good morning", echo "$greeting, $USER" muestra el saludo y el nombre de la cuenta como un solo argumento. Pon entre comillas dobles una variable utilizada como ruta cuando su valor pueda contener espacios. Las comillas simples protegen todo lo que hay dentro, incluido el signo de dólar, por lo que no pueden cumplir la misma función que las comillas dobles cuando quieres expandir una variable.
Pasa ajustes a los programas hijos
Una asignación normal crea una variable del intérprete. export city la marca para el entorno; export city=Lisbon combina ambas acciones. Compara:
city=Lisbon
bash -c 'echo $city'
export city
bash -c 'echo $city'
Si city no se había exportado antes, el primer intérprete hijo muestra una línea vacía. Después de la exportación, un nuevo proceso hijo recibe Lisbon. La exportación pasa una copia al iniciarse; no actualiza los programas que ya están en ejecución.
env y printenv listan las entradas del entorno, mientras que printenv HOME muestra una. set también lista las variables y funciones del intérprete. Los ajustes habituales incluyen HOME para el directorio personal, USER para el usuario, PWD para el directorio de trabajo, SHELL para el intérprete de inicio de sesión, LANG para el idioma y los formatos regionales, y PATH para la búsqueda de programas. Los nombres en minúsculas para tus propios valores evitan conflictos con estos nombres que, por convención, se escriben en mayúsculas.
Controla la duración y el inicio
Una asignación delante de un comando proporciona un ajuste solo a ese comando: TZ=Asia/Tokyo date muestra la hora de Tokio sin sustituir el ajuste de zona horaria del intérprete. LC_ALL=C ls --help solicita los mensajes originales.
Un ajuste del indicador que no se guarda pertenece a ese intérprete; abrir otro terminal no lo hace permanente. Pon un ajuste que uses repetidamente, como export EDITOR=nano, en ~/.bashrc para los intérpretes Bash interactivos que no sean de inicio de sesión. Los intérpretes de inicio de sesión leen archivos de perfil, que a menudo cargan ese archivo. Un nuevo intérprete que no sea de inicio de sesión lee el ajuste guardado; source ~/.bashrc aplica el archivo en el intérprete actual.
Puntos clave
- Las asignaciones no tienen espacios alrededor de
=;$namelee el valor. - Las comillas dobles permiten la expansión y conservan los espacios; las simples mantienen el texto literal.
exportpasa una variable a los programas hijos que se inicien después.envmuestra el entorno;settambién incluye variables y funciones del intérprete.- Una asignación inicial puede afectar a un solo comando.
- Los archivos de inicio permiten que los ajustes guardados estén disponibles en intérpretes posteriores.
6.3 Controla cómo encuentra comandos el intérprete mediante PATH
Cuando introduces un nombre de comando, Bash necesita decidir qué significa. Puede ser un alias, una función, un comando integrado o un archivo de programa. PATH controla la búsqueda de archivos de programa para un nombre que no contiene una barra.
Lee la lista de búsqueda
PATH contiene nombres de directorio separados por dos puntos, por ejemplo /usr/local/bin:/usr/bin:/bin. echo "$PATH" muestra la lista. Bash considera primero los significados definidos en el intérprete; para el nombre de un programa externo, busca en los directorios de la lista de izquierda a derecha y usa la primera coincidencia ejecutable.
Importan los nombres de directorio, no el hecho de que un programa esté instalado en algún lugar. Un archivo fuera de la lista de búsqueda no se encuentra solo por su nombre. Los programas de uso cotidiano suelen estar en /usr/bin o /bin; los programas de administración usan /usr/sbin o /sbin; las instalaciones locales suelen usar /usr/local/bin. Los programas personales pueden estar en ~/bin o ~/.local/bin.
Si dos directorios de PATH contienen un programa con el mismo nombre, el directorio anterior tiene prioridad en una búsqueda nueva.
Inspecciona el comando activo
type cd identifica un comando integrado del intérprete. type ls puede identificar /usr/bin/ls o indicar un alias de color. type -a echo lista las coincidencias del comando integrado y del externo. which ls suele indicar una ruta de programa de PATH, pero puede pasar por alto funciones del intérprete que type sí conoce. Usa type cuando quieras entender qué hará realmente Bash.
Ejecuta una ruta explícita
El PATH habitual omite el directorio actual. Por eso, un archivo ejecutable llamado backup en el directorio actual necesita ./backup, salvo que su directorio esté en PATH. Un nombre de comando que contiene / indica directamente una ubicación:
./backup
/home/sam/bin/backup
Ambas formas omiten la búsqueda en PATH. La primera es relativa a tu directorio de trabajo; la segunda comienza en /. El archivo debe seguir siendo ejecutable. Poder listarlo o leerlo no basta para poder ejecutarlo.
Amplía sin sustituir
Para añadir un directorio personal al final, conserva el valor existente:
export PATH="$PATH:$HOME/bin"
Los dos puntos separan la lista anterior del directorio añadido. Si hay un ejecutable backup en /home/sam/bin, ahora un comando posterior backup puede encontrarlo. Añadirlo al final mantiene cualquier programa coincidente anterior por delante del nuevo directorio. Colocar el nuevo directorio primero cambiaría cuál de los nombres duplicados tiene prioridad.
En cambio, PATH=$HOME/bin descarta todos los directorios existentes en el valor. Los comandos externos como ls pueden dejar de funcionar solo por su nombre. Abrir un terminal nuevo con la configuración de inicio normal restaura su PATH habitual; para el intérprete actual, export PATH=/usr/local/bin:/usr/bin:/bin proporciona una lista básica de reparación. Los comandos integrados pueden seguir funcionando porque no se encuentran mediante PATH.
Para conservar una adición prevista en los nuevos intérpretes interactivos que no sean de inicio de sesión, guarda su línea de exportación en ~/.bashrc.
Puntos clave
- PATH es una lista separada por dos puntos que se recorre de izquierda a derecha para buscar comandos externos.
typetambién informa de alias, funciones y comandos integrados.- Un comando que contiene
/indica directamente una ruta y omite PATH. - Conserva
$PATHal ampliar la lista. - El orden de búsqueda determina qué programa externo tiene prioridad cuando hay nombres duplicados.
Ejemplos de Línea de comandos de Linux
1Construye e interpreta un comando
11 pasos
- 1IntroducciónLee una sesión de terminal
Un terminal muestra una interacción: escribes un comando, el intérprete lo interpreta y cualquier resultado aparece debajo. El indicador marca el punto donde puede comenzar otra línea.
Leeremos ese indicador, usaremos algunas teclas y construiremos un comando cuyos espacios y opciones signifiquen exactamente lo que pretendemos. El objetivo es comprender la línea antes de pulsar Enter.
- 2ExplicaciónIdentifica el intérprete y la ventana
El intérprete de comandos interpreta las órdenes. El terminal es la ventana que muestra su entrada y salida. Bash es un intérprete de Linux de uso habitual; otra ventana de terminal también puede ejecutar Bash.
En
sam@laptop:~$, el indicador identifica a sam en laptop, trabajando en su directorio personal. El signo de dólar final indica por convención un usuario normal. No escribas ese símbolo del indicador al introducir un comando de ejemplo. - 3EjemploAverigua quién eres y dónde estás
Introduce
whoamiy lee el resultado: para nuestra cuenta de ejemplo, essam. Después introducepwd; desde el directorio personal muestra/home/sam. Cada comando es una línea de entrada independiente.La salida es información devuelta por el comando, no texto que debas volver a escribir. Un nuevo indicador significa que el intérprete está listo. Un comando ejecutado correctamente también puede permanecer en silencio, por lo que la longitud de la salida no mide el éxito.
- 4ConsejoCompleta, cancela o sal
Empieza a escribir un nombre de directorio y pulsa Tab para completarlo. Cuando coincida más de un nombre, añade más caracteres o pulsa Tab dos veces para ver las posibilidades. El autocompletado sigue la escritura real y las mayúsculas y minúsculas de los nombres existentes.
Ctrl+C cancela la entrada o interrumpe un programa en primer plano. Ctrl+D en una línea vacía finaliza el intérprete. En un paginador de manual,
qcierra la página; la misma pulsación tiene un significado diferente del de un comando escrito en el indicador. - 5DesafíoElige la tecla para recuperarte
Has escrito
ls-l, has observado que falta el espacio y quieres descartar toda la línea de entrada antes de que se ejecute. ¿Qué tecla te devuelve a una línea de entrada nueva?---reveal---
Pulsa Ctrl+C. Cancela la entrada pendiente sin ejecutarla. Ctrl+L limpia la pantalla; no es lo mismo que descartar lo que has escrito. También podrías editar la línea a
ls -l, pero la acción solicitada aquí es cancelarla. - 6ExplicaciónAsigna una función a cada palabra
Interpreta
ls -l /etccomo tres palabras con tres funciones.lsidentifica el comando,-lcambia su comportamiento y/etcindica qué se debe listar. Los espacios de separación permiten que Bash pase esas partes por separado.Las opciones cortas tienen un guion; las largas tienen dos.
ls -lacombina-ly-a, mientras quels --alles una sola opción larga. Algunas opciones también necesitan valores, que se indican en su texto de ayuda. - 7EjemploMantén unido un nombre con espacios
Supón que un archivo se llama «Annual Report.pdf». Escribir
ls Annual Report.pdfproporciona dos argumentos de archivo porque el espacio sin proteger separa las palabras.Escribe
ls "Annual Report.pdf"para mantener unido el nombre. Las comillas simples también funcionan para este nombre literal, o puedes proteger su espacio con una barra inversa como enAnnual\ Report.pdf. Los caracteres de protección guían al intérprete; no se convierten en caracteres del nombre del archivo. - 8Idea claveLas opciones pertenecen a su comando
Una letra conocida puede tener significados diferentes en distintos programas.
cp -rcopia directorios de forma recursiva, perols -rsolo invierte el orden. La opción de listado recursivo es la-Rmayúscula.Del mismo modo,
ls -hformatea tamaños; no pide ayuda. Lee el comando y la opción como una pareja. Adivinar a partir de una opción usada con otro comando puede producir un comando válido que haga lo que no deseas. - 9DesafíoConstruye un listado claro
Un archivo se llama «Course Plan.txt». ¿Cómo puedes solicitar su listado en formato largo sin pedir dos archivos separados?
---reveal---
Usa
ls -l "Course Plan.txt". El primer espacio separa el comando de la opción y el siguiente separa la opción del argumento entre comillas. El espacio interior permanece dentro de un solo nombre.ls-lsería, en cambio, un nombre de comando diferente yCourse Plan.txtsin comillas sería dos argumentos de destino. - 10DesafíoManeja dos tipos de texto especial
El archivo que necesitas listar se llama «-old notes.txt». Quieres ver sus detalles y debes manejar tanto el guion inicial como el espacio interior. Escribe un comando
lsde GNU para ello.---reveal---
Usa
ls -l -- "-old notes.txt". Las comillas mantienen unido el nombre, mientras que--indica alsque deje de interpretar opciones. Las comillas por sí solas no eliminan el guion inicial, por lo que resuelven el problema del espacio, pero no el de la opción.ls -l "./-old notes.txt"también funciona. - 11RepasoLee la línea antes de pulsar Enter
Identifica el indicador y después lee la línea introducida como un comando con opciones y argumentos separados. Protege los espacios dentro de los nombres, comprueba el significado de las opciones para el comando utilizado y usa el autocompletado para reducir los errores de escritura.
Cuando la entrada sea incorrecta, cancélala o edítala antes de ejecutarla; cuando un programa ocupe la pantalla, usa su propia acción de salida o interrupción.
2Encuentra la función del comando que necesitas
10 pasos
Guarda esta unidad para seguir cada Lección Interactiva paso a paso.
- 1IntroducciónEncuentra una respuesta en la ayuda
- 2ExplicaciónAbre el manual del comando
- 3EjemploInterpreta las partes opcionales y repetidas
- 4ConsejoBusca y vuelve al indicador
- 5DesafíoSelecciona la página que necesitas
- 6ConexiónUsa el tipo de comando para elegir la ayuda
- 7EjemploLee el motivo de un fallo
- 8DesafíoElige una referencia para un comando integrado
- 9DesafíoPasa del propósito a un comando que funcione
- 10RepasoRelaciona la pregunta con la referencia
3Navega e inspecciona un árbol de directorios
13 pasos
Guarda esta unidad para seguir cada Lección Interactiva paso a paso.
- 1IntroducciónSigue una ruta por el árbol
- 2ExplicaciónComienza desde la raíz
- 3EjemploInterpreta una estructura pequeña
- 4DesafíoIdentifica una entrada hija oculta
- 5ExplicaciónEstablece la base de la ruta
- 6EjemploSigue dos directorios padre
- 7ConsejoUsa los atajos del directorio personal y de la ubicación anterior
- 8DesafíoEncuentra un directorio al mismo nivel que el padre
- 9ExplicaciónAñade los detalles que necesitas
- 10EjemploDistingue el tamaño del orden
- 11DesafíoElige el listado para la pregunta
- 12DesafíoSigue un cambio y una inspección
- 13RepasoDistingue la ubicación de la vista
4Crea, copia, cambia nombres y limpia
14 pasos
Guarda esta unidad para seguir cada Lección Interactiva paso a paso.
- 1IntroducciónPrevé la estructura final
- 2EjemploCrea los directorios padre
- 3EjemploAñade archivos a la estructura
- 4DesafíoComprueba qué debe existir primero
- 5ExplicaciónCopia un archivo a un directorio
- 6EjemploCopia el árbol
- 7EjemploCambia un nombre dentro de la copia
- 8ConsejoExige un directorio cuando eso es lo que quieres
- 9DesafíoLocaliza un elemento hijo copiado
- 10ExplicaciónElimina un directorio hijo vacío
- 11ConsejoComprueba el destino antes de eliminar
- 12DesafíoElige una acción solo para directorios vacíos
- 13DesafíoSigue toda la limpieza
- 14RepasoInterpreta las acciones como cambios en las rutas
5Analiza un patrón antes de usarlo
12 pasos
Guarda esta unidad para seguir cada Lección Interactiva paso a paso.
- 1IntroducciónPrevé una selección con comodines
- 2ExplicaciónDetermina cuántos caracteres abarca cada símbolo
- 3EjemploLimita una posición
- 4Idea claveLas mayúsculas, las minúsculas y los puntos siguen importando
- 5DesafíoSelecciona las coincidencias exactas
- 6ExplicaciónDeja que el intérprete expanda primero
- 7EjemploInterpreta un patrón literal
- 8DesafíoDecide qué recibe el programa
- 9ConsejoMantén el destino fuera de la selección
- 10EjemploGenera nombres antes de que existan los archivos
- 11DesafíoGenera, mueve y después selecciona
- 12RepasoDistingue la selección de la generación
6Reutiliza comandos y sigue los ajustes heredados
15 pasos
Guarda esta unidad para seguir cada Lección Interactiva paso a paso.
- 1IntroducciónReutiliza una línea y un valor
- 2ExplicaciónRecupera con posibilidad de editar
- 3EjemploComprende qué reutiliza el atajo
- 4DesafíoIdentifica bien el comando anterior
- 5ExplicaciónAsigna un valor sin dividirlo
- 6EjemploElige qué permiten las comillas
- 7EjemploComparte una copia con un proceso hijo
- 8DesafíoPrevé la herencia y el cambio local
- 9ConexiónElige cuánto dura un ajuste
- 10ExplicaciónBusca un comando externo
- 11EjemploAñade un directorio personal al final
- 12Idea claveUna barra selecciona una ubicación directamente
- 13DesafíoConserva la prioridad anterior
- 14DesafíoRelaciona la recuperación, las comillas y la búsqueda
- 15RepasoSigue el texto, los valores y el alcance
Ejercicios de Línea de comandos de Linux
Set 1: Prevé cambios en archivos y directorios10 Preguntas de Práctica
Pregunta 1 de 10
lab no existe. ¿Cómo puedes crear lab/week2/input y los directorios padre que faltan con un solo comando?Mostrar respuestaOcultar respuesta
mkdir -p crea cada directorio que falte en la ruta. mkdir sin opciones necesita que exista la ruta padre, por lo que aquí no puede crear solo el componente final. touch crea archivos en lugar de construir directorios padre y -r no es la opción de mkdir para crearlos.Pregunta 2 de 10
records contiene jan.csv y stored ya existe como directorio vacío. ¿Qué ruta contiene el archivo copiado después de cp -r records stored?Mostrar respuestaOcultar respuesta
stored/records. Un resultado directo stored/jan.csv correspondería a una estructura diferente, como copiar a un nombre de destino que aún no existiera.Pregunta 3 de 10
agenda.txt contiene notas de una reunión. ¿Qué ocurre cuando ejecutas touch agenda.txt?Mostrar respuestaOcultar respuesta
touch actualiza las fechas y horas de acceso y modificación mientras conserva el contenido. Su función de creación de archivos vacíos se aplica cuando el archivo indicado no existe. Tratar cada uso de touch como una creación de archivo lleva a prever incorrectamente que se borran las notas existentes.Pregunta 4 de 10
rough.txt existe y archive no. ¿Qué hace mv rough.txt archive sin alias?Mostrar respuestaOcultar respuesta
archive. mv no deduce que un nombre que no existe deba ser un directorio. Una barra final, archive/, expresaría un destino de directorio y haría que el comando fallara mientras no existiera.Pregunta 5 de 10
old-cache es un directorio que debería estar vacío. ¿Qué comando lo elimina solo si esa expectativa es correcta?Mostrar respuestaOcultar respuesta
rmdir solo acepta un directorio vacío, por lo que un contenido inesperado impide su eliminación. rm recursivo elimina un directorio junto con su contenido y no conserva esta comprobación. Una entrada oculta también cuenta como contenido aunque un listado normal parezca vacío.Pregunta 6 de 10
-scratch.log. ¿Cómo puede recibir ese nombre rm de GNU sin alias sin interpretarlo como opciones?Mostrar respuestaOcultar respuesta
-- termina la interpretación de opciones, por lo que la palabra siguiente que comienza con un guion se trata como un nombre de archivo. Las comillas por sí solas no resuelven este problema: conservan el nombre como una palabra, pero dejan intacto el guion inicial para que rm lo interprete. ./-scratch.log también sería una ruta sin ambigüedades.Pregunta 7 de 10
Mostrar respuestaOcultar respuesta
-p solicita conservar las marcas de tiempo y los permisos en la copia. Una copia normal recién creada recibe una nueva fecha y hora de modificación, aunque su contenido sea idéntico. -v solo informa de una acción; verla mostrada no significa que se hayan conservado los metadatos originales.Pregunta 8 de 10
unit/part solo contiene .prefs. ¿Por qué falla rmdir unit/part aunque ls unit/part sin opciones parezca vacío?Mostrar respuestaOcultar respuesta
.prefs impide que rmdir lo elimine. ls sin opciones omite ese nombre; ls -A lo mostraría. Estar anidado dentro de unit no es en sí un obstáculo para eliminar un directorio hijo vacío.Pregunta 9 de 10
/home/sam, existe source/item.txt y saved es un directorio vacío. Ejecutas cp -r source saved y después mv saved/source saved/session. ¿Dónde están ahora el archivo original y la copia?Mostrar respuestaOcultar respuesta
saved/source/item.txt porque saved ya existe como directorio. Después, el movimiento cambia el nombre de ese directorio copiado a session dentro de saved. El original permanece en source/item.txt; mover el directorio copiado no mueve ni cambia el nombre de su origen.Pregunta 10 de 10
/home/sam/work, ../safe es un directorio vacío y part solo contiene keep.txt. Ejecutas cp part/keep.txt ../safe/, mv part/keep.txt keep.txt y después rmdir part. ¿Qué queda?Mostrar respuestaOcultar respuesta
/home/sam/safe. El movimiento coloca el original directamente en /home/sam/work y deja part vacío, por lo que rmdir part se ejecuta correctamente. Eliminar ese directorio ya vacío no elimina un archivo que se ha movido fuera de él.Set 2: Interpreta comandos, ayuda y rutas10 Preguntas de Práctica
Guarda esta unidad para ver todas las respuestas y practicar cada set.
Pregunta 1 de 10
sam@laptop:~/training$ y está listo para recibir una entrada. ¿Qué ubicación indica el indicador?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 2 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 3 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 4 de 10
/etc/passwd, pero man passwd abre el comando para cambiar contraseñas. ¿Qué comando abre la página necesaria?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 5 de 10
type export informa de que export es un comando integrado del intérprete. ¿Cómo puedes leer la ayuda de Bash para él?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 6 de 10
mkdir [OPTION]... DIRECTORY.... ¿Qué se requiere para una invocación básica válida?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 7 de 10
/home/sam/labs/module. ¿Qué directorio absoluto selecciona cd ../../downloads?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 8 de 10
assets, sin listar los archivos que contiene. ¿Qué comando lo hace?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 9 de 10
ls sin opciones no muestra nada en settings, pero ls -A settings muestra .localrc. ¿Por qué difieren los resultados?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 10 de 10
/home/sam, ejecutas cd projects, después ls ../downloads y luego cd ../photos. Todos los directorios indicados existen. ¿En qué directorio estás y qué selecciona cd - después?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Set 3: Busca coincidencias de nombres y usa valores del intérprete10 Preguntas de Práctica
Guarda esta unidad para ver todas las respuestas y practicar cada set.
Pregunta 1 de 10
.zip coincidentes en el directorio de trabajo. ¿Qué muestra echo *.zip?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 2 de 10
task.txt, task4.txt y task42.txt. ¿Qué nombre coincide con task?.txt?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 3 de 10
upload, inspeccionarlo y editarlo antes de ejecutarlo. ¿Qué función sirve para encontrarlo?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 4 de 10
folder="Project Plans", ¿qué argumento de ruta recibe ls "$folder"?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 5 de 10
rec1.csv, rec2.csv, rec3.csv y rec12.csv. ¿Qué nombres coinciden con rec[!2].csv?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 6 de 10
/opt/team/bin:/usr/bin:/bin. Los dos primeros directorios contienen un ejecutable llamado report. Ningún alias, función o comando integrado tiene ese nombre. ¿Qué se ejecuta?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 7 de 10
pic1.png y pic2.png. ¿Qué muestra echo "pic*.png"?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 8 de 10
region no está definida. Ejecutas region=west y después bash -c 'echo $region'. ¿Por qué el intérprete hijo muestra una línea vacía?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 9 de 10
item1.dat, item2.dat, item12.dat y .item3.dat, además de un directorio vacío out. Ejecutas cp item?.dat out/ y después mv out/item2.dat out/chosen.dat. ¿Qué archivos hay en out?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 10 de 10
/usr/bin:/bin. Existen los archivos ejecutables /usr/bin/scan y /home/sam/bin/scan, sin ningún scan definido en el intérprete. Ejecutas export PATH="$PATH:$HOME/bin" con HOME /home/sam. ¿Qué se ejecuta para scan y para ./scan desde /home/sam/bin?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Set 4: Relaciona rutas, patrones y comportamiento de comandos10 Preguntas de Práctica
Guarda esta unidad para ver todas las respuestas y practicar cada set.
Pregunta 1 de 10
ls informa unrecognized option '--time-sort'. ¿Cuál es la comprobación siguiente más directa para el programa GNU instalado?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 2 de 10
. y ... ¿Qué comando de GNU lo proporciona?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 3 de 10
-d, --date=STRING. En touch --date=2026-02-18 checkpoint, ¿qué función tiene 2026-02-18?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 4 de 10
clip.jpg, clip.JPG, clip.Jpg y clip.jpeg. ¿Qué nombres coinciden con clip.[jJ][pP][gG]?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 5 de 10
!cp sin ejecutarlo. ¿Qué expresión del historial muestra solo la expansión?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 6 de 10
/home/sam/jobs/run, ../data contiene a.txt y /home/sam/store ya existe. Ejecutas cp -r ../data ../../store/ y después mv ../../store/data/a.txt ../../store/data/b.txt. ¿Qué nueva ruta contiene la copia y dónde está el origen?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 7 de 10
area no estaba definida. Ejecutas area=north, export area, bash y después, dentro del proceso hijo, area=south y exit. ¿Qué muestra echo "$area" al volver al proceso padre y por qué?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 8 de 10
red1.tmp, red2.tmp, red10.tmp y un directorio vacío save. Después de cp red[12].tmp save/ y mv save/red1.tmp save/final.txt, ¿qué muestra echo save/*.tmp?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 9 de 10
checkup está en tu directorio actual, que no figura en PATH. No hay otro comando con ese nombre. ¿Cómo puedes ejecutar este archivo?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 10 de 10
/home/sam/team/drafts, ejecutas cd ../final, después cd - y luego ls ../../photos. Todos los directorios existen. ¿Dónde estás y qué directorio inspeccionó el listado?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Set 5: Resuelve varias decisiones en la línea de comandos10 Preguntas de Práctica
Guarda esta unidad para ver todas las respuestas y practicar cada set.
Pregunta 1 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 2 de 10
tag=blue, ¿qué muestra echo '$tag'?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 3 de 10
bundle no existe. Ejecutas mkdir -p bundle/raw bundle/log, touch bundle/raw/x, mv bundle/raw/x bundle/log/ y después rmdir -p bundle/raw. ¿Qué queda dentro de bundle?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 4 de 10
touch note{2..4}.txt, mkdir bin, mv note[24].txt bin/ y después echo note?.txt. ¿Qué se muestra?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 5 de 10
/usr/bin:/bin, HOME es /home/sam y existen archivos ejecutables render en /usr/bin y /home/sam/bin. Ningún alias, función o comando integrado se llama render. Después de export PATH="$HOME/bin:$PATH", ¿qué archivo externo selecciona render por sí solo y cuál es el PATH completo resultante?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 6 de 10
-review notes.txt. ¿Qué único comando ls de GNU solicita sus detalles y maneja tanto el guion inicial como el espacio?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 7 de 10
unit1.tmp, unit2.tmp, unit10.tmp, .unit3.tmp y final.txt, todos archivos normales. Después de previsualizar, ejecutas rm -i unit?.tmp sin alias y respondes y a todas las preguntas. ¿Qué archivos normales quedan?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 8 de 10
mkdir -p samples/day7, ejecutas pwd y después echo !$. ¿Qué selecciona el atajo del historial?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 9 de 10
/home/sam, projects contiene solo .prefs y un directorio src; src contiene main.c. El directorio archive existe y está vacío. Ejecutas ls projects, cp -r projects/src archive/, mv projects/src archive/live y después rmdir projects. ¿Qué queda en projects y archive?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 10 de 10
/home/sam, estableces dest="$HOME/Field Notes" y ejecutas export dest. Un Bash hijo ejecuta cd "$dest", después cambia dest=elsewhere y sale. El directorio existe. ¿En qué ruta entró el proceso hijo y cuál es después el valor de dest en el padre?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
¿Te atascas con una pregunta tuya? Ayuda con Tareas
Términos Clave
A
Alias
ls como ls --color=auto; type ls revela ese texto adicional del comando.apropos
apropos directory ayuda a identificar mkdir o rmdir cuando recuerdas la tarea, pero no el nombre del comando.Archivo de historial
~/.bash_history, y su ruta se guarda en HISTFILE.Archivo de inicio
~/.bashrc es leída por un nuevo Bash interactivo que no sea de inicio de sesión; un perfil de inicio de sesión también puede cargar ese archivo.Archivo o fichero
.pdf.Argumento
cp report.txt saved/, los dos argumentos de ruta identifican el archivo de origen y el directorio de destino.Ayuda de Bash
help seguido del nombre de un comando integrado.help export explica la exportación de variables, mientras que help por sí solo lista los comandos integrados disponibles.Ayuda rápida
--help.mkdir --help para encontrar la opción que crea directorios padre sin recorrer toda la página de manual.B
Bash
help cd directamente porque cd es uno de sus comandos integrados, no un archivo de programa independiente.Búsqueda inversa
C
Clase de caracteres
[[:digit:]] para dígitos o [[:lower:]] para caracteres en minúscula.Comando integrado
type cd informa de que es un comando integrado y help cd proporciona la documentación del comando de Bash para cambiar de directorio.Comando u orden
ls -l /var, el nombre del comando es ls; las palabras restantes controlan el listado e indican su destino.Comodín
* para una secuencia o ? para un carácter.part?.txt acepta part4.txt, pero excluye un nombre con dos dígitos en la posición del signo de interrogación.Componente de ruta
/.data/*.csv selecciona directamente dentro de data; no selecciona también los nombres coincidentes bajo data/old.Configuración regional
Copia
cp.cp memo.txt stored/ crea stored/memo.txt cuando stored existe y deja el archivo original donde estaba.Copia con conservación de atributos
cp -a que conserva los atributos de los archivos, lo que resulta útil para copiar un árbol de directorios.cp -a site site-backup conserva los atributos del árbol en lugar de tratarlo como una copia normal de un archivo nuevo.Cuenta de superusuario
# señala al superusuario; para el trabajo habitual debe usarse una cuenta normal.D
Destino
archive no existe, mv notes.txt archive usa archive como nuevo nombre de archivo en lugar de crear un directorio.Directorio
/home/sam/projects puede contener tanto notes.txt como un directorio hijo llamado website.Directorio de trabajo
cd projects, el nombre relativo notes.txt se refiere a un archivo dentro del directorio recién seleccionado.Directorio padre
.. se refiere a ese directorio padre./home/sam/projects/website, un .. llega a projects, mientras que dos llegan al directorio personal de sam.Directorio personal
/home/username para un usuario normal de Linux.~ se expande a /home/sam; /home por sí solo es el directorio que contiene los directorios personales de los usuarios.Directorio raíz
/, es el punto de partida del árbol único del sistema de archivos de Linux, por encima de cualquier otra ruta absoluta./etc comienza en el directorio raíz; no indica un elemento hijo de tu directorio de trabajo actual.Distinción entre mayúsculas y minúsculas
Plans y plans pueden identificar directorios diferentes; el autocompletado ayuda a conservar las mayúsculas y minúsculas correctas.Documentación del paquete
/usr/share/doc/ en un directorio para ese paquete./usr/share/doc/bash puede mostrar archivos README, registros de cambios, texto de licencia y ejemplos.E
Ejecutable
./backup cuando su directorio no está en PATH.Eliminación interactiva
rm -i de GNU pregunta por separado para cada destino.rm -i *.tmp pregunta por los nombres coincidentes antes de eliminarlos.Eliminación recursiva
rm -r de GNU.rmdir old-cache cuando un elemento hijo inesperado deba detener la limpieza en lugar de eliminarse junto con su directorio padre.Entorno
Entrada oculta
ls lo omita por defecto..bashrc aparece con ls -a, aunque un listado normal del directorio personal lo omita.Expansión de la virgulilla
~ sin comillas al principio de una palabra del intérprete por una ruta de directorio personal, lo que facilita escribir rutas basadas en él.cd ~/Documents llega a tus documentos desde cualquier lugar, pero poner la virgulilla entre comillas impide esa sustitución.Expansión de llaves
file{1..3}.txt.mkdir work/{src,docs} recibe dos nombres de directorio generados, aunque ninguno de los dos directorios hijos exista todavía.Expansión de nombres de archivo
ls *.log recibe dos nombres de archivo en lugar de recibir el patrón literal con asterisco.Expansión de variables
echo "${city}_trip" añade texto al valor de city, mientras que $city_trip leería un nombre de variable diferente.Expansión del historial
!! para el comando anterior.mkdir drafts, cd !$ reutiliza el último argumento, pero otro comando intermedio lo cambia.export
Expresión entre corchetes
! o ^ inicial niega ese conjunto.part[13].txt coincide con los nombres que terminan en 1 o 3 en esa posición, pero no con la terminación de dos dígitos 13.F
Fecha y hora de modificación
ls -t las usa para ordenar las entradas de más recientes a más antiguas.touch actualiza esta marca de tiempo sin cambiar los datos del archivo, por lo que puede cambiar el orden basado en el tiempo.H
HISTCONTROL
ignoreboth combina ignorespace e ignoredups; un intérprete cualquiera puede usar un ajuste diferente.Historial de comandos
I
Indicador de comandos
sam@laptop:~$, la virgulilla indica el directorio personal y el signo de dólar final suele indicar un usuario normal.Intérprete de comandos
pwd en una sesión de terminal y muestra el directorio en el que trabaja el intérprete.L
Listado en formato largo
ls -l, que muestra metadatos como tipo, propiedad, tamaño y fecha y hora de modificación.ls -l notes.txt muestra los detalles de un solo archivo; añadir -h cambia un tamaño en bytes como 2048 a 2.0K.Listado recursivo
ls -R projects muestra projects: y después encabezados para directorios hijos como projects/website:.M
Manual Info
info coreutils abre un manual más extenso; n, p y u permiten desplazarse entre sus nodos enlazados.Marca de tiempo
touch -d 2025-01-31 old.txt solicita una fecha elegida en lugar de usar la fecha y hora actuales para la actualización.Mensaje de error
No such file or directory de ls sugiere comprobar la ruta, las mayúsculas y minúsculas y el directorio de trabajo.Metadatos
mkdir
-p crea los directorios padre que faltan y acepta los componentes de ruta que ya existen como directorios.mkdir -p app/css prepara ambos directorios cuando falta app, de modo que después se puede crear un archivo dentro de css.Movimiento
mv, sin la opción recursiva necesaria para copiar un árbol.mv memo.txt stored/ coloca el archivo existente en stored, por lo que su ruta anterior ya no identifica ese archivo movido.O
Opción
-l indica a ls que muestre un listado en formato largo con detalles en lugar de mostrar solo nombres.Opción de forzado
-f en rm de GNU, suprime la confirmación e ignora los nombres que no existen, lo que aumenta la necesidad de verificar la expresión de destino.-f no proporciona una forma de recuperación; solo cambia cómo gestiona la eliminación las preguntas y los nombres que no existen.Orden de prioridad de búsqueda
/usr/bin.Origen
cp y mv.cp notes.txt archive/, notes.txt proporciona los datos y archive/ indica dónde debe colocarse su copia.P
Página de manual
man ls abre la referencia del comando de listado, donde puedes buscar una opción que necesites.Paginador
man permite buscar con /size, recorrer las coincidencias con n y salir con q.PATH
/.:$HOME/bin al final conserva los directorios anteriores y su prioridad cuando un nombre de programa aparece dos veces.Patrón de nombres de archivo sin coincidencias
echo *.pdf muestra el patrón, mientras que ls *.pdf informa de que esa ruta literal no existe.Patrón literal
echo "*.txt" muestra el asterisco y el sufijo aunque el directorio contenga archivos que coincidirían con ellos.Protección mediante comillas
ls "Work Plan.txt" mantienen el espacio dentro del nombre de archivo en lugar de dividirlo en dos palabras.R
Resolución de comandos
type echo puede informar del comando integrado de Bash antes que de un archivo echo externo que también existe en un directorio de PATH.rm
rm -i old.txt solicita confirmación antes de eliminar ese archivo, lo que te permite rechazar la acción.rmdir
rmdir cache informa de que el contenido no está vacío pero ls sin opciones parece no mostrar nada, usa ls -A cache para comprobar las entradas ocultas.Ruta absoluta
/ y describe una ubicación desde el directorio raíz, por lo que su significado no depende de tu ubicación actual./home/sam/photos identifica el mismo directorio tanto si el intérprete está en /etc como en el directorio personal de sam.Ruta explícita del comando
/home/sam/bin, ./backup y /home/sam/bin/backup identifican el mismo ejecutable local.Ruta relativa
/home/sam/projects, ../photos llega al directorio de fotos de sam subiendo y después bajando.S
Sección del manual
man 5 passwd selecciona la página de formato de archivo en lugar de la del comando.Sinopsis (SYNOPSIS)
mkdir [OPTION]... DIRECTORY... permite opciones facultativas, pero requiere al menos un nombre de directorio.Sobrescritura
cp o mv sin opciones pueden hacer sin preguntar.cp -i notes.txt saved.txt para que pregunte antes de sustituir saved.txt cuando ya exista un archivo con ese nombre.T
Tamaño en formato legible
ls -h de GNU.-h con -l: la primera opción formatea los tamaños, mientras que la segunda proporciona la columna que los muestra.Terminal
touch
touch checklist.txt conserva el texto de una lista existente; no vacía el archivo antes de actualizar sus fechas y horas.V
Variable
name=value y se lee mediante una expansión como $name.topic=linux, echo "$topic" muestra el valor almacenado, mientras que unset topic elimina la variable.Variable de entorno
export.export city permite que un Bash hijo posterior lea el valor de city que antes solo se mantenía en el proceso padre.Variable del intérprete de comandos
city=Lisbon no proporciona ese valor a un nuevo Bash hijo, salvo que city ya esté exportada.Vista previa de la expansión
ls -d -- draft* muestra las propias entradas coincidentes, de modo que los directorios coincidentes son visibles como destinos.W
whatis
whatis ls ofrece una breve descripción del propósito; man ls proporciona la referencia más extensa cuando se necesitan más detalles.Sobre esta unidad
Crea tus propios Materiales de Estudio
Convierte tus notas, diapositivas y documentos en Guías de Estudio, Preguntas de Práctica, Flashcards y 6 herramientas más.