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_file
Esto también funciona si el archivo aún no existe
Compruebe si noclobber está configurado con:
set -o | grep noclobber
Para 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
&>| file
funciona. ¿Qué shell y versión estás usando? @stimulate para zsh ambos deberían funcionar , para bash es solo>|
echo "aaa" &>| test.txt
da como resultado un error-bash: syntax error near unexpected token |
. Mi noclobber está activado.echo "aaa" >| test.txt 2>&1
o usar otro caparazón.A pesar
NylonSmile
de la respuesta , que es "más o menos" correcta ... No pude sobrescribir archivos de esta manera ...echo "i know about Pipes, girlfriend" > thatAnswer
para resolver mis problemas ... tuve que usar ...
>!
, a la ...Obviamente, ten cuidado con esto ...
fuente
NOCLOBBER
establecida la opción zsh no predeterminada . Usesetopt clobber
para restaurar el comportamiento predeterminado.Si su entorno no permite sobrescribir con
>
, use pipe|
y en sutee
lugar 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/null
siguiente 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