1 votos

¿Por qué pbpaste no devuelve el cursor a la nueva línea en bash?

Ejecuto el comando pbpaste en Terminal (bash) para obtener el resultado de mi portapapeles, pero a diferencia de otros comandos que dejan el cursor en una nueva línea por debajo de la stdout anterior, pbpaste lo deja a su derecha, como en el ejemplo, que muestra el comando intercalado entre dos echo hello s:

hostname:~ jesse$ echo hello
hello
hostname:~ jesse$ pbpaste
https://itunes.apple.com/us/app/noizio/id928871589?mt=12hostname:~ jesse$ echo hello
hello
hostname:~ jesse$ 

¿Por qué es así? Parece muy extraño y dificulta la lectura.

0 votos

¿Qué has copiado exactamente?

0 votos

@Mark Los caracteres de la cadena en la línea 4 de mi código antes de "hostname"

6voto

yoliho Puntos 340

Pbpaste pega exactamente lo que copias.

En tu caso has copiado la línea sin incluir el CR/LF del final. Para obtener el retorno tienes que copiar desde el principio de la línea hasta el principio de la siguiente línea

Del comentario de @patrix

La mayoría de los comandos terminan con un CR/LF. echo "Hello" pondrá una nueva línea, sin embargo para el eco esto puede ser cambiado echo -n "Hello" .

Si quieres puedes añadir una nueva línea después de un pbpaste utilizando echo "$(pbpaste)" en su lugar.

0 votos

Entonces, ¿también estás diciendo que casi todos los demás comandos con salida incluyen una nueva línea de terminación?

0 votos

@JesseJackson No directamente. pbpaste produce lo que hay en el portapapeles, que normalmente no contiene una nueva línea. echo some text añade una nueva línea por defecto, pero eso es algo que se puede evitar con echo -n some text . Si quiere asegurar una nueva línea después de pbpaste Utilizar echo $(pbpaste) en su lugar.

0 votos

@patrix ¿Qué otros comandos no incluyen una nueva línea por defecto? Nunca he visto este comportamiento en bash antes de usar el comando pbpaste.

-1voto

uthark Puntos 168

Esto no responde directamente a su pregunta sobre pbpaste específicamente, pero soy un usuario de zsh (con oh-my-zsh ) y maneja el escenario que describes con el resultado que deseas para cualquier salida del terminal.

➜  ~ echo -n hello
hello%                                                                          
➜  ~
➜  ~
➜  ~ /bin/bash
bash-3.2$ echo -n hello
hellobash-3.2$

Me doy cuenta de que es sacando el bazooka para matar un mosquito pero resuelve tu problema real, donde la falta de una nueva línea en lo que pegaste no se maneja con gracia.

0 votos

Buena información, aunque no sea relevante.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X