Me encontré con un comando que ahora se da a continuación:
$ echo 'eval "$(jenv init -)"' >> ~/.bash_profile
Por lo que puedo adivinar, probablemente se usa para confirmar los cambios en .bash_profile, pero ¿para qué se usa exactamente?
Me encontré con un comando que ahora se da a continuación:
$ echo 'eval "$(jenv init -)"' >> ~/.bash_profile
Por lo que puedo adivinar, probablemente se usa para confirmar los cambios en .bash_profile, pero ¿para qué se usa exactamente?
Respuestas:
Redirige el stdout del programa antes >>
y lo agrega al archivo dado después.
>> file command
echo a b >> c d
se agregaría a b d
a un archivo llamado c
.
>>
?Con >>
, agrega la salida de un comando a un archivo.
Su comando de ejemplo consta de varias partes, básicamente:
comando >> nombre de archivo
Lo que la salida de command
se anexa a filename
.
echo
?En su caso específico, el echo "…"
comando envía sus argumentos de entrada a "stdout", que es el llamado "descriptor de salida estándar". Los argumentos de entrada a echo
son seguidos por una nueva línea ( \n
), para que obtenga un salto de línea.
Aquí, un "descriptor de salida estándar" no es más que una secuencia de salida que se muestra en su shell cuando ejecuta un comando. (Es decir, cuando escribe echo foo
y presiona Enter, foo\n
es el resultado real del echo
comando, que se muestra en su shell foo
seguido de una nueva línea).
Básicamente, todo lo que escribe en su línea de comando está usando stdout. También hay otro descriptor llamado "stderr" que normalmente se usa para mensajes de error. También se imprimirá como stdout, por lo que a veces se pueden intercalar. Y hay un descriptor stdin que se utiliza para la entrada. Vea este artículo para más información.
Siempre puede redirigir stdout a un descriptor de archivo, lo que puede hacer con uno de estos operadores:
>
redirige a un descriptor de archivo. Crea el archivo si no existe o, si ya existe, trunca el archivo antes de escribirlo. Por lo tanto, el archivo se sobrescribirá con stdout.
>>
se agrega a un descriptor de archivo. Crea el archivo si no existe.
También puede redirigir stderr utilizando 2>
o 2>>
de manera similar. O puede combinar stderr y stdout en un solo archivo: 2>&1
eso hace. Para obtener más información sobre la redirección y algunos ejemplos más, puede leer este pequeño tutorial .
En general, es posible que desee probar explicahell.com , que le brindará orientación visual e información sobre un comando de shell en particular.
Para las personas TLDR a las que les gusta ver un ejemplo;
La salida estándar (no errores) del comando antes del >> se agregará al final del archivo que lleva su nombre.
Entonces, si el archivo "flintstones.txt" contiene;
Fred
Barney
echo Dino >> flintstones.txt
dará como resultado que se agregue 'Dino' al final del archivo;
Fred
Barney
Dino
echo Dino > flintstones.txt
para mostrar el contenido de la misma sería simplemente Dino
si se hace con una sola flecha hacia la derecha.
De nuevo, si lo haces
> somefile.txt
Se borrará todo el contenido del archivo.
> file
borra el archivo pero >> file
no hace nada.
man bash
está escrito con un lenguaje bastante formal, puede ser difícil de entender. Por otro lado, la frasebash >>
devuelve pocos enlaces útiles en Google. Es cierto que queremos agregar conocimiento sin depender de Google; Por esta razón, incluso una pregunta con una respuesta fácil de buscar puede encajar. Sin embargo, el hecho de que no proporcionó la respuesta de inmediato (consulte ¿Puedo responder mi propia pregunta? ) Ni señaló los recursos existentes (que posiblemente necesite ayuda para comprender) indica una falta de investigación.