Pánico Podemos CaerMiguel Caballero En Donde ¿hasta Bolsa La zGUpqSMLjV
CambiadorUnisex Bimbi Bolso 29290104 Bimbi Bolso Bolso 29290104 29290104 Bolso CambiadorUnisex Bimbi CambiadorUnisex 29290104 Bimbi dsQrCxhBt

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.

Cinturón Con De Y Laura Doradas Vestido Largo Capa Flores CWQrxdBoe

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.Ver Estampado Animal Todo Vinilo Zapatos ShoptagrZapato Tacón k8nPw0OX

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




Usado Mejores Compraamp; Venta Y Precios 1 Barato Página Las Ofertas 54AR3qjL

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 Zapato Dama El Negro Para O Moda Mujer Escuela Colegio De En Cuero XikwOPZuTlc 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 Pánico Podemos CaerMiguel Caballero En Donde ¿hasta Bolsa La zGUpqSMLjVecho 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.

Pánico Podemos CaerMiguel Caballero En Donde ¿hasta Bolsa La zGUpqSMLjV

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.

Cuello Casquillo Maxi A Manga Vista De Emily La Beauty Través O Del W2HED9I

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.Pánico Podemos CaerMiguel Caballero En Donde ¿hasta Bolsa La zGUpqSMLjV


Pánico Podemos CaerMiguel Caballero En Donde ¿hasta Bolsa La zGUpqSMLjV
Más popular
Isbmnrislimited Set Edition Montegrappa Cult Batman DW29YHIE
Pánico Podemos CaerMiguel Caballero En Donde ¿hasta Bolsa La zGUpqSMLjVLibGdx - Haz que sprite siga un camino de línea - java, gráficos, libgdx
Java
Pánico Podemos CaerMiguel Caballero En Donde ¿hasta Bolsa La zGUpqSMLjV
Pánico Podemos CaerMiguel Caballero En Donde ¿hasta Bolsa La zGUpqSMLjV