Así que, ten en cuenta que la ficha El carácter Unicode U+0009 "TABULACIÓN DE CARACTERES" (UTF-8/ASCII hex 09) es simplemente un carácter normal. Uno que es muy molesto de tratar, sí. Pero no es un "carácter de control". Es diferente lo que ocurre cuando se pulsa la tecla de su teclado etiquetada como ficha que puede ser asignado a una secuencia de escape/carácter de control como ' \t ', que es diferente.
El problema específico que encontraste está efectivamente "arreglado" en 10.4.1+. Sin embargo, esto no significa que no vayas a encontrarte con este error o con otros similares.
Por ejemplo, tomemos la secuencia:
printf '\033[34mEscape!\033[00m\n'
Y prueba a copiar/pegar (o su salida) en diferentes shells. También prueba a configurar el ajuste de Terminal.app 'Escapar la entrada no ASCII con Control-V', o a usar control-comando-V, "Pegar texto escapado". Cosas un poco raras, ¿eh?
- Dentro de una terminal, su mejor apuesta para la mayoría de las cosas es:
- En general, Nunca utilices los atajos C y V para acceder al portapapeles.
- En lugar de ello, diríjase al
pbcopy
y, a continuación, utilice pbpaste
según sea necesario.
Por lo tanto, esto sería git status | pbcopy
y para algunos esto podría querer copiar, podría necesitar combinar stderr y stdout: git error 2>&1 | pbcopy
resultará en un portapapeles vacío sin 2>&1
.
Esto todavía puede eliminar los caracteres de control adecuados (cualquier cosa que no sea válida en UTF-8). Pero como has mencionado, ya eres consciente de por qué no quieres copiar y pegar estos. Si estás decidido a capturar "caracteres de control" además de texto, de lo que realmente estamos hablando es de capturar un flujo de bytes, así que probablemente sea mejor evitar el portapapeles por completo, que nunca ha tenido la funcionalidad de reproducir secuencias de bytes arbitrarias.
P.D. ¿Has considerado cambiar a iTerm2 ?