What is a heredoc? Here Documents Explained | Linux Terminal 201 - HakTip 179
Tabla de contenido:
Al escribir scripts de shell, puede encontrarse en una situación en la que necesita pasar un bloque de texto o código multilínea a un comando interactivo, como
tee
,
cat
o
sftp
.
En Bash y otros shells como Zsh, un documento Here (Heredoc) es un tipo de redirección que le permite pasar múltiples líneas de entrada a un comando.
La sintaxis de escribir HereDoc toma la siguiente forma:
<< 'DELIMITER' HERE-DOCUMENT DELIMITER
- La primera línea comienza con un comando opcional seguido por el operador especial de redirección
<<y el identificador de delimitación.- Puede usar cualquier cadena como un identificador delimitador, los más utilizados son EOF o END. Si el identificador delimitador no está entre comillas, el shell sustituirá todas las variables, comandos y caracteres especiales antes de pasar las líneas del documento al comando. El signo menos para el operador de redirección
<<-, hará que se ignoren todos los caracteres de tabulación iniciales. Esto le permite usar sangría al escribir documentos aquí en scripts de shell. Los caracteres de espacio en blanco iniciales no están permitidos, solo tabulación.
El bloque de documento aquí puede contener cadenas, variables, comandos y cualquier otro tipo de entrada. La última línea termina con el identificador delimitador. No se permite el espacio en blanco frente al delimitador. - Puede usar cualquier cadena como un identificador delimitador, los más utilizados son EOF o END. Si el identificador delimitador no está entre comillas, el shell sustituirá todas las variables, comandos y caracteres especiales antes de pasar las líneas del documento al comando. El signo menos para el operador de redirección
Ejemplos básicos de Heredoc
En esta sección, veremos algunos ejemplos básicos de cómo usar heredoc.
Heredoc se usa con mayor frecuencia en combinación con el comando cat.
En el siguiente ejemplo, estamos pasando dos líneas de texto que contienen una variable de entorno y un comando a
cat
usando un documento here.
cat << EOF The current working directory is: $PWD You are logged in as: $(whoami) EOF
Como puede ver en la salida a continuación, se sustituyen tanto la variable como la salida del comando:
The current working directory is: /home/linuxize You are logged in as: linuxize
Veamos qué sucederá si encerramos el delimitador entre comillas simples o dobles.
cat <<- "EOF" The current working directory is: $PWD You are logged in as: $(whoami) EOF
Puede observar que cuando se cita el delimitador, el shell no realiza la expansión de parámetros y la sustitución de comandos.
The current working directory is: $PWD You are logged in as: $(whoami)
if true; then cat <<- EOF Line with a leading tab. EOF fi
Line with a leading tab.
En lugar de mostrar el resultado en la pantalla, puede redirigirlo a un archivo utilizando los operadores
>
,
>>
.
cat << EOF > file.txt The current working directory is: $PWD You are logged in as: $(whoami) EOF
Si el archivo.txt no existe, se creará. Al usar
>
el archivo se sobrescribirá, mientras que
>>
agregará la salida al archivo.
La entrada heredoc también se puede canalizar. En el siguiente ejemplo, el comando
sed
reemplazará todas las instancias del carácter
l
con
e
:
cat <<'EOF' | sed 's/l/e/g' Hello World EOF
Heeeo Wored
Para escribir los datos canalizados en un archivo:
cat <<'EOF' | sed 's/l/e/g' > file.txt Hello World EOF
Usando Heredoc con SSH
Usar Heredoc es una de las formas más cómodas y fáciles de ejecutar múltiples comandos en un sistema remoto a través de SSH.
Cuando utilice un delimitador sin comillas, asegúrese de escapar de todas las variables, comandos y caracteres especiales; de lo contrario, se interpolarán localmente:
ssh -T [email protected] << EOF echo "The current local working directory is: $PWD" echo "The current remote working directory is: \$PWD" EOF
The current local working directory is: /home/linuxize The current remote working directory is: /home/user
También es posible que desee configurar una autenticación basada en claves SSH y conectarse a sus servidores Linux sin ingresar una contraseña.
Conclusión
En esta guía, ha aprendido qué es
heredoc
y cómo usarlo en sus scripts de shell.
Microsoft Research Asia recibe a Gates en 10 años Bash
Microsoft Research Asia creció de una docena de personas en 1998 a más de 350 una década después.
Cómo ejecutar Bash en Ubuntu en Windows 10
Habilitar el subsistema Windows para Linux le permitirá ejecutar Bash en Ubuntu en Windows 10, scripts Bash , Herramientas de línea de comandos de Linux, herramientas para Linux.
Bash arrays
Las matrices son una de las estructuras de datos fundamentales más utilizadas. En este artículo, cubriremos las matrices de Bash y explicaremos cómo usarlas en sus scripts de Bash.







