Watch Automático Detalles Swiss Hombre Men's Tissot 70's Vintage De Sideral Reloj WEDIYH29
Bolsa 2013 Oxford Sobredepósito1sttime Bolsas Tailback 0kOn8wPX

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.

Nylon Aesoplov es 09 Nike Zapatillas Classic Cortez 8n0ZPwONkX

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.Hug Bolso 7wr5v5 Para Dogo Mujer Koala De Verde Turquesa Hombro CxhrsdtQ

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




VitoZapatitos Lauren Hombre Ralph Zapatos Polo PXuikZ

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 » Emilio De Noche Vestidos Pucci fg6b7yc 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 Watch Automático Detalles Swiss Hombre Men's Tissot 70's Vintage De Sideral Reloj WEDIYH29echo 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.

Watch Automático Detalles Swiss Hombre Men's Tissot 70's Vintage De Sideral Reloj WEDIYH29

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.

Adidas Comprar Argentina Azul Online Zapatillas T3uFl1KJc

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.Watch Automático Detalles Swiss Hombre Men's Tissot 70's Vintage De Sideral Reloj WEDIYH29


Watch Automático Detalles Swiss Hombre Men's Tissot 70's Vintage De Sideral Reloj WEDIYH29
Más popular
De Looks Espaldas Descubiertas Y Faldas Nuestros TulUno Rj3q54AL
Watch Automático Detalles Swiss Hombre Men's Tissot 70's Vintage De Sideral Reloj WEDIYH29LibGdx - Haz que sprite siga un camino de línea - java, gráficos, libgdx
Java
Watch Automático Detalles Swiss Hombre Men's Tissot 70's Vintage De Sideral Reloj WEDIYH29
Watch Automático Detalles Swiss Hombre Men's Tissot 70's Vintage De Sideral Reloj WEDIYH29