2 votos

¿Indiferente a mayúsculas y minúsculas `ls` para Catalina / APFS?

Estoy tratando de encontrar una manera de conseguir ya sea el stock de MacOS ls o (más probablemente) el GNU ls también conocido como gls para mostrar mis archivos y carpetas en no distingue entre mayúsculas y minúsculas orden.

Todos mis esfuerzos han dado como resultado que las letras minúsculas se clasifiquen después de las letras mayúsculas.

⚠️ Hay muchos obsoleto respuestas que ¡ya no funcionan!

Esta misma pregunta se hizo en este foro en Octubre de 2011 (y en Agosto de 2013 en Stack Overflow), pero esas respuestas ya no funcionan en MacOS en 2020.

Lo que he probado que no funciona:

  1. LC_COLLATE no parece tener ningún efecto. He probado estas variaciones:

    LC_COLLATE="en_US.UTF-8"
    
    LC_COLLATE="cs_CZ.ISO8859-2"
    
    LANG="en_US.UTF-8" LC_COLLATE="en_US.UTF-8"

    No hubo ningún efecto notable en absoluto.

  2. Al parecer, ls -f o gls -U solía funcionar para HFS+, aunque se suponía que la salida era "sin clasificar", pero aparentemente de alguna manera en HFS+ "sin clasificar" era ¿accidentalmente? ¿coincidentemente? ¿Indiferente a las mayúsculas y minúsculas? ¿Supongo? Sea cual sea la razón, ya no funciona, presumiblemente porque ahora usamos APFS.

  3. "Sólo hay que canalizarlo a través de sort -f !" nunca fue realmente una respuesta, pero siempre parece que alguien lo sugiere de todos modos. Quiero poder utilizar todas las demás funciones de ls / gls incluyendo el color y -C que no funciona si tenemos que canalizar a través de otro comando.


¿Hay algún método oculto por ahí que me haya perdido? ¿O esta funcionalidad no es realmente posible? Esto último me parecería muy extraño, pero cosas más raras han sucedido, supongo.

P.D. - Yo uso zsh como mi shell por defecto de todos modos, así que si hay una manera de replicar esto con zsh eso también estaría bien.

3voto

klanomath Puntos 19587

Si se hace correctamente el método LC_COLLATE funciona:

Ejemplo:

user@host ~ % export LC_COLLATE="cs_CZ.ISO8859-2" && ls -la
total 56
-rw-r--r--   1 user      staff      0 Mar  1 20:39 bin
drwx------+  4 user      staff    128 Jan 30 10:51 Desktop
drwx------+  3 user      staff     96 Oct  9 04:40 Documents
drwx------+  4 user      staff    128 Jan  4 21:11 Downloads
drwx------+ 61 user      staff   1952 Nov  2 10:29 Library
drwx------+  4 user      staff    128 Oct  9 18:17 Movies
drwx------+  3 user      staff     96 Oct  9 04:40 Music
drwx------+  5 user      staff    160 Oct 10 03:22 Pictures
drwxr-xr-x+  4 user      staff    128 Oct  9 04:40 Public
drwxr-xr-x+ 18 user      staff    576 Mar  1 20:40 .
-r--------   1 user      staff      7 Oct  9 04:43 .CFUserTextEncoding
drwxr-xr-x   3 user      staff     96 Oct 10 17:50 .config
-rw-r--r--@  1 user      staff  14340 Dec 26 22:14 .DS_Store
drwx------   6 user      staff    192 Nov 22 11:40 .ssh
drwx------   2 user      staff     64 Mar  1 20:35 .Trash
-rw-r--r--@  1 user      staff   2620 Nov 15 02:44 .zprofile
-rw-------@  1 user      staff   1544 Mar  1 20:40 .zsh_history
drwxr-xr-x   5 root      admin    160 Sep 29 22:22 ..

Por lo tanto, basta con añadir export LC_COLLATE="cs_CZ.ISO8859-2" a su .zprofile/.zshrc/... y reinicie Terminal.

Si utiliza esta configuración regional puede experimentar algunas irregularidades en las salidas del shell/archivos de la historia, etc.

En este caso (usando locales mixtos us_en/de_de im MacOS) obtuve algunas entradas irregulares en el historial de comandos (es decir, .zsh_history) después de introducir diéresis alemanas.


Probablemente la mejor idea entonces: crear un nuevo archivo LC_COLLATE personalizado.

0 votos

Es curioso. No obtuve ese resultado cuando probé esto en zsh pero si lo pruebo en una cuenta sin mi .zshenv/.zshrc entonces funciona. Tendré que preguntar al zsh amigos para que me ayuden a averiguar por qué no me funciona. Debe ser un conflicto en una de mis otras configuraciones. Gracias.

0 votos

Yo sugeriría un alias para ls en lugar de establecer LC_COLLATE globalmente.

1voto

Michael Suchoff Puntos 41

Estoy de acuerdo en que no cambiaría el global LC_COLLATE . Sólo tienes que utilizarlo localmente en tu alias:

alias ls="LC_COLLATE=cs_CZ.ISO8859-2 /bin/ls"

Cuidado con el efecto indeseable de esta particular LOCALE. Los archivos que comienzan con "ch", "CH" o "Ch" se ordenarán entre los archivos que empiezan por "H" e "i".

Me gustaría crear mi propio archivo personalizado, voy a probar esto: https://gist.github.com/shaunsauve/56c30ad45d1261e7164e1b32316ef7c1

0voto

haakonstorm Puntos 33

Puede llegar a ella utilizando LC_COLLATE="cs_CZ.ISO8859-2" .

Pero cuidado con esta curiosidad sobre las diferencias entre el comando 'ls' de stock en macOS 10.15.4 caja, y gls ( GNU ls de coreutils a través de brew ):

λ export LC_COLLATE="cs_CZ.ISO8859-2" && ls -la

-rw-r--r--    1 storm  staff   695  8 nov 06:35 argv.json
drwxr-xr-x   61 storm  staff  1952 22 apr 19:02 extensions
drwxr-xr-x    4 storm  staff   128  8 nov 06:35 .
drwxr-xr-x+ 154 storm  staff  4928 23 apr 10:43 ..

λ export LC_COLLATE="cs_CZ.ISO8859g-2" && gls -la

total 4
drwxr-xr-x    4 storm staff  128 Nov  8 06:35 .
drwxr-xr-x+ 154 storm staff 4928 Apr 23 10:43 ..
-rw-r--r--    1 storm staff  695 Nov  8 06:35 argv.json
drwxr-xr-x   61 storm staff 1952 Apr 22 19:02 extensions

No estoy seguro de cómo ls y gls terminan clasificando . y .. de forma diferente basándose en la misma información del lexer de la localidad, pero lo hace.

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