← Volver al listado de tecnologías
Bandit Nivel 2→3 - Espacios en Nombres
Bandit Nivel 2→3 - Espacios en Nombres
Objetivo
La contraseña está en un archivo llamado spaces in this filename.
El Problema
cat spaces in this filename
Error: El shell interpreta cada palabra como un argumento separado, buscando 4 archivos diferentes.
Teoría: Manejo de Espacios
¿Por qué los espacios son problemáticos?
En la terminal, el espacio es el separador de argumentos:
comando arg1 arg2 arg3
Si el nombre tiene espacios, el shell lo divide incorrectamente.
Soluciones
1. Comillas Dobles
cat "spaces in this filename"
Todo dentro de las comillas se trata como un solo argumento.
2. Comillas Simples
cat 'spaces in this filename'
Similar a las dobles, pero no interpreta variables.
3. Escape con Backslash
cat spaces\ in\ this\ filename
El \ “escapa” el carácter siguiente, quitándole su significado especial.
4. Tab-completion
Escribe las primeras letras y presiona Tab:
cat spa[TAB]
# Se autocompleta a:
cat spaces\ in\ this\ filename
Diferencia entre Comillas
| Tipo | Sintaxis | Interpreta Variables | Ejemplo |
|---|---|---|---|
| Dobles | "texto" | Sí | "Hola $USER" → Hola bandit2 |
| Simples | 'texto' | No | 'Hola $USER' → Hola $USER |
nombre="mundo"
echo "Hola $nombre" # Hola mundo
echo 'Hola $nombre' # Hola $nombre
Solución
# Método 1: Comillas dobles
cat "spaces in this filename"
# Método 2: Comillas simples
cat 'spaces in this filename'
# Método 3: Escape
cat spaces\ in\ this\ filename
# Método 4: Tab completion
cat spa<TAB>
Buenas Prácticas
- Evita espacios en nombres de archivo cuando sea posible
- Usa guiones bajos
_o guiones-en su lugar - Si debes usar espacios, siempre usa comillas al referenciarlos
- El Tab-completion es tu amigo
Comandos Aprendidos
| Concepto | Uso |
|---|---|
"texto" | Comillas dobles - agrupa argumentos |
'texto' | Comillas simples - agrupa sin interpretar |
\ | Escape de espacio |
Tab | Autocompletar nombres |
Conexión al Siguiente Nivel
ssh [email protected] -p 2220