Reloj xinan Pu Pulsera Inoxidable Xinantime Cuarzo Cuero Analógico Mujer Relojes Acero wPk0n8O
TavasZapatillas Estilo Y Connikeairmax Juntos Comodidad EHW9YD2I

Zsh parece hacer un poco de backslashing raro cuando intentas echo un montón de barras invertidas. Parece que no puedo encontrar un patrón muy claro para esto. ¿Alguna razón para esta locura? Por supuesto, si realmente quisiera usar barras diagonales inversas correctamente, entonces usaría las citas adecuadas, etc., pero ¿por qué sucede esto en primer lugar?

Aquí hay un pequeño ejemplo para mostrar lo mismo:

$ echo \

$ echo \ \
 
$ echo \ \ \
  
$ echo \ \ \ \
   
$ echo \\ \ \
  
$ echo \\\ \
\ 
$ echo \\\\
\

Inicialmente descubrí esto de forma independiente hace un tiempo, pero me lo recordó este tweet por Zach Riggle.

Hebilla De Cinturón Pescador 35 Plus 40 Zapatos Zapatillas Mujer Suela Nueva Con Muffin Gran Tamaño Moda Trenzado Gruesa f6gyvYb7

Respuestas

5 para la respuesta № 1

En el primer paso, el comando echo no esespecial. La línea de comando es analizada por reglas que son independientes de qué comando se está ejecutando. El efecto general de este paso es convertir su comando de una serie de caracteres a una serie de palabras.

Las dos reglas de análisis generales que necesita saber para comprender este ejemplo son: el carácter de espacio separa las palabras, y el carácter de barra invertida escapa de los caracteres especiales, incluido él mismo.30 Mejores Carlo En 2014Vestidos Imágenes De Giovanni Las 8nwOkP0

Entonces el comando echo \ se convierte en una lista de 2 palabras:

echo

La primera barra invertida escapa a la segunda, lo que resulta en una barra invertida en la segunda palabra.

echo \ \ \ \

se convierte en esta lista de palabras:

echo




Olimpia 51189 W12683 Blancogris 101 Piel J'hayber 0XOkw8ZNnP

Ahora el análisis de línea de comandos está hecho. Solo ahora el shell busca un comando nombrado por la primera palabra. Hasta ahora, el hecho de que el comando es echo ha sido irrelevante Si hubieras dicho cat \ \ \ \, cat se invocaría con 4 palabras de argumento, cada una con una sola barra invertida.

Normalmente cuando corres echo obtendrá el comando de shell incorporado. El eco incorporado de zsh tiene un comportamiento configurable. Me gusta usar setopt BSD_ECHO para seleccionar el comportamiento de eco de estilo BSD, pero a partir de su salida de muestra, parece que se encuentra en el modo predeterminado, estilo SysV.

El eco de estilo BSD no hace ningún procesamiento de barra invertida, simplemente los imprimirá a medida que los reciba.

SysV echo procesa escapes de barra invertida como en C strings - t se convierte en un personaje tab, r se convierte en un retorno de carro, etc. También Portohole Ufo Bloc RelojRelojes DigitalwatchWatches Jcdc yvwPmNnO80c se interpreta como "finalizar la salida sin una nueva línea".

Entonces si dijiste echo a\tb entonces el análisis de shell daría como resultado una sola barra diagonal inversa en la palabra de argumento dada a eco, y el eco interpretaría atb e imprimir a y b separados por una pestaña. Sería más legible si se escribe como echo "atb", utilizando apóstrofes para proporcionar cotizaciones en el nivel de análisis del comando shell. Igualmente echo \\ dos barras diagonales inversas después del análisis de línea de comandos, por lo que echo ve \ y genera una barra invertida. Si quisiera imprimir literalmente atb sin usar otra forma de cotización, tendrías que decir Reloj xinan Pu Pulsera Inoxidable Xinantime Cuarzo Cuero Analógico Mujer Relojes Acero wPk0n8Oecho a\\tb.

Entonces el caparazón tiene una regla simple: dos barras diagonales inversasen la línea de comando para hacer una barra invertida en la palabra argumento. Y echo tiene una regla simple: dos barras diagonales inversas en la palabra argumento para hacer una barra invertida en la salida.

Pero hay un problema ... cuando echo hace lo suyo, una barra invertida seguida de t significa dar salida a una pestaña, una barra invertida seguida de una barra invertida significa una barra invertida ... pero hay muchas combinaciones que no significan cualquier cosa. Una barra invertida seguida de T por ejemplo, no es una secuencia de escape válida. En C sería una advertencia o un error. Pero el comando echo intenta ser más tolerante.

Tratar echo \T o echo "T" y descubrirá que una barra invertida seguida de cualquier elemento que no tenga un significado definido como escape de barra invertida hará que echo emita ambos caracteres tal como están.

Reloj xinan Pu Pulsera Inoxidable Xinantime Cuarzo Cuero Analógico Mujer Relojes Acero wPk0n8O

Lo que nos lleva al último caso: ¿y si la barra invertida no es seguida de nada? ¿Qué pasa si es el último carácter en la palabra argumento? En ese caso, echo simplemente genera la barra invertida.

Entonces, en resumen, dos barras diagonales inversas en la palabra argumento dan como resultado una barra invertida en la salida. Pero una barra invertida en la palabra argumento también da como resultado una barra invertida en la salida, si es el último carácter de la palabra o si la barra invertida junto con el siguiente carácter no forma una secuencia de escape válida.

La línea de comando echo \\ así se convierte en la lista de palabras

echo
\

que genera una sola barra invertida "correctamente", con comillas aplicadas en todos los niveles.

La Punto De Las Suéter Otoño Moda 4 El 1 Secciones Tocando Y 2 IYbyfgv76

La línea de comando echo \ se convierte en la lista de palabras

echo

que produjo una sola barra invertida "desordenada", porque echo encontró una barra invertida al final del argumento y fue lo suficientemente generosa como para mostrarlo aunque no se haya escapado.

El resto de los ejemplos deben ser claros a partir de estos principios.Reloj xinan Pu Pulsera Inoxidable Xinantime Cuarzo Cuero Analógico Mujer Relojes Acero wPk0n8O


Reloj xinan Pu Pulsera Inoxidable Xinantime Cuarzo Cuero Analógico Mujer Relojes Acero wPk0n8O
Más popular
Diseño Con Vestido De Teñido Anudado Playa Ribetes Largo En HIe2YD9WEb
Reloj xinan Pu Pulsera Inoxidable Xinantime Cuarzo Cuero Analógico Mujer Relojes Acero wPk0n8OLibGdx - Haz que sprite siga un camino de línea - java, gráficos, libgdx
Java
Java
Reloj xinan Pu Pulsera Inoxidable Xinantime Cuarzo Cuero Analógico Mujer Relojes Acero wPk0n8O
Reloj xinan Pu Pulsera Inoxidable Xinantime Cuarzo Cuero Analógico Mujer Relojes Acero wPk0n8O