bueno ... esto es asombroso. Reconocí> un poco antes que >>.
Bromista del
Respuestas:
411
Un poco de comprensión de cómo funcionan las tuberías * nix ayudaría.
En resumen, el >>operador de redireccionamiento agregará líneas al final del archivo especificado, donde-como el único mayor que >vaciará y sobrescribirá el archivo.
@BrDaHa ¿Cómo puedo redirigir stderr con> | ¿también? Lo intenté y> | Pero no funcionó.
Tu Bui
@TuBui no está seguro de por qué no funciona para usted. En mi máquina &>| filefunciona. ¿Qué shell y versión estás usando? @stimulate para zsh ambos deberían funcionar , para bash es solo>|
Griddo
@Griddo mi shell es bash versión 4.3.48 (1) -lanzamiento. echo "aaa" &>| test.txtda como resultado un error -bash: syntax error near unexpected token |. Mi noclobber está activado.
Tu Bui
1
@TuBui Aparentemente no estaba probando correctamente. Tampoco funciona para mí ... sin embargo, la documentación no establece que debería ser posible de todos modos. Probablemente tenga que apegarse echo "aaa" >| test.txt 2>&1o usar otro caparazón.
Griddo
40
A pesar NylonSmilede la respuesta , que es "más o menos" correcta ... No pude sobrescribir archivos de esta manera ...
echo "i know about Pipes, girlfriend" > thatAnswer
zsh: file exists: thatAnswer
para resolver mis problemas ... tuve que usar ... >!, a la ...
Esto significa que tiene NOCLOBBERestablecida la opción zsh no predeterminada . Use setopt clobber para restaurar el comportamiento predeterminado.
Michał Politowski
11
Si su entorno no permite sobrescribir con >, use pipe |y en su teelugar de la siguiente manera:
echo "text"| tee 'Users/Name/Desktop/TheAccount.txt'
Tenga en cuenta que esto también se imprimirá en la salida estándar. En caso de que esto no sea deseado, puede redirigir la salida de la /dev/nullsiguiente manera:
echo "text"| tee 'Users/Name/Desktop/TheAccount.txt'>/dev/null
Solo observando que si desea redirigir std :: cerr y std :: cout a un archivo mientras no tiene configurado el ciclobber (es decir set -o noclobber), puede usar el código:
Respuestas:
Un poco de comprensión de cómo funcionan las tuberías * nix ayudaría.
En resumen, el
>>operador de redireccionamiento agregará líneas al final del archivo especificado, donde-como el único mayor que>vaciará y sobrescribirá el archivo.fuente
-bash: TheAccount.txt: cannot overwrite existing file.>y>>son los operadores de redirección de salida . El operador de la tubería es|.>|para forzar la sobrescritura existenteEn Bash, si ha configurado noclobber a la
set -o noclobber, entonces usa la sintaxis>|Por ejemplo:
echo "some text" >| existing_fileEsto también funciona si el archivo aún no existe
Compruebe si noclobber está configurado con:
set -o | grep noclobberPara obtener una explicación más detallada sobre este tipo especial de operador, consulte esta publicación
Para obtener una lista más exhaustiva de operadores de redirección, consulte esta publicación
fuente
&>| filefunciona. ¿Qué shell y versión estás usando? @stimulate para zsh ambos deberían funcionar , para bash es solo>|echo "aaa" &>| test.txtda como resultado un error-bash: syntax error near unexpected token |. Mi noclobber está activado.echo "aaa" >| test.txt 2>&1o usar otro caparazón.A pesar
NylonSmilede la respuesta , que es "más o menos" correcta ... No pude sobrescribir archivos de esta manera ...echo "i know about Pipes, girlfriend" > thatAnswerpara resolver mis problemas ... tuve que usar ...
>!, a la ...Obviamente, ten cuidado con esto ...
fuente
NOCLOBBERestablecida la opción zsh no predeterminada . Usesetopt clobberpara restaurar el comportamiento predeterminado.Si su entorno no permite sobrescribir con
>, use pipe|y en suteelugar de la siguiente manera:Tenga en cuenta que esto también se imprimirá en la salida estándar. En caso de que esto no sea deseado, puede redirigir la salida de la
/dev/nullsiguiente manera:fuente
fuente
Solo observando que si desea redirigir std :: cerr y std :: cout a un archivo mientras no tiene configurado el ciclobber (es decir
set -o noclobber), puede usar el código:Se puede ver más información sobre esto en https://stackoverflow.com/a/876242 .
También esta respuesta es la pregunta de @ TuBui sobre la respuesta @BrDaHa proporcionada anteriormente el 9 de agosto de 18 a las 9:34.
fuente
Para sobrescribir el contenido de un archivo a otro archivo. utilizar gato por ejemplo.
Ahora para sobrescribir foobar podemos usar un comando cat como se muestra a continuación
fuente
>>se agrega, no se sobrescribeSi tiene una salida que puede tener errores, es posible que desee utilizar un ampersand y un mayor que, de la siguiente manera:
my_task &> 'Users/Name/Desktop/task_output.log'esto redirigirá tanto stderr como stdout al archivo de registro (en lugar de solo stdout).fuente