¿Cómo puedo escribir datos en un archivo de texto automáticamente mediante scripts de shell en Linux?Abrir y escribir datos en un archivo de texto mediante bash/shell scripting
Pude abrir el archivo. Sin embargo, no sé cómo escribirle datos.
¿Cómo puedo escribir datos en un archivo de texto automáticamente mediante scripts de shell en Linux?Abrir y escribir datos en un archivo de texto mediante bash/shell scripting
Pude abrir el archivo. Sin embargo, no sé cómo escribirle datos.
echo "some data for the file" >> fileName
Puede redirigir la salida de un comando a un archivo:
$ cat file > copy_file
o anexar a ella
$ cat file >> copy_file
Si desea escribir directamente el comando es echo 'text'
$ echo 'Hello World' > file
Si necesita el permiso de root: 'sudo sh -c 'archivo de gato>/etc/init/gunicorn.conf'' (gracias al comentario de lukaserat anterior) – aero
#!/bin/sh
FILE="/path/to/file"
/bin/cat <<EOM >$FILE
text1
text2
text3
text4
EOM
Buen resultado multilínea. –
Los principiantes se beneficiarían de saber exactamente qué hacer con este archivo. Cómo guardarlo, cómo ejecutarlo, etc. – Danny
Explicar en lugar de simplemente poner un trozo de código. Lo haría mucho más útil para todos, especialmente los novatos. –
#!/bin/bash
cat > FILE.txt <<EOF
info code info
info code info
info code info
EOF
Una explicación de su código ayudaría mucho a hacer que otros puedan usarlo mejor. Incluso las leyendas de vocabulario como "documento aquí" y "redirección" pueden dirigir a los buscadores a otros recursos. – Palpatim
La explicación no es tan necesaria para algo como esto. –
Información sobre 'EOF' y técnica relacionada: http://stackoverflow.com/a/2954835/712334 –
me gusta esta respuesta:
cat > FILE.txt <<EOF
info code info
...
EOF
pero sugeriría cat >> FILE.txt << EOF
Si sólo desea añadir algo al final del archivo sin borrar lo que ya se existe
De esta manera:
cat >> FILE.txt <<EOF
info code info
...
EOF
Agregue una explicación con la respuesta de cómo esta respuesta ayuda a OP a corregir el problema actual –
Moviendo mi comentario como respuesta, como lo solicitó @lycono
Si necesita hacer esto con privilegios de root, hacerlo de esta manera:
sudo sh -c 'echo "some data for the file" >> fileName'
Sé que esto es una cuestión de edad maldita, pero a medida que el PO se trata de secuencias de comandos, y por el hecho de que Google me llevó aquí, también se debe mencionar la apertura de descriptores de archivos para leer y escribir al mismo tiempo.
#!/bin/bash
# Open file descriptor (fd) 3 for read/write on a text file.
exec 3<> poem.txt
# Let's print some text to fd 3
echo "Roses are red" >&3
echo "Violets are blue" >&3
echo "Poems are cute" >&3
echo "And so are you" >&3
# Close fd 3
exec 3>&-
Entonces cat
el archivo en el terminal
$ cat poem.txt
Roses are red
Violets are blue
Poems are cute
And so are you
Este ejemplo hace que poem.txt archivo a estar abierto para la lectura y la escritura en el descriptor de archivo 3. También muestra que las cajas * nix saben más de fd entonces solo stdin, stdout y stderr (fd 0,1,2). En realidad tiene mucho. Por lo general, el número máximo de descriptores de archivos que el kernel puede asignar se puede encontrar en /proc/sys/file-max
o /proc/sys/fs/file-max
, pero usar cualquier fd por encima de 9 es peligroso, ya que podría entrar en conflicto con fd utilizado internamente por el shell. Así que no te molestes y solo usa fd's 0-9. Si necesita más de los 9 descriptores de archivos en un script bash, debe usar un idioma diferente de todos modos :)
De todos modos, los fd se pueden usar de muchas maneras interesantes.
¿Cuál es el nombre de este operador? Me gustaría encontrar un manual al respecto. –
el operador> redirige la salida a un archivo que sobrescribe el archivo, si existe. >> se agregará a un archivo existente. –
Gracias, aquí está el enlace a la página wiki, en caso de que alguien lo necesite http://en.wikipedia.org/wiki/Redirection_(computing)#Redirecting_standard_input_and_standard_output –