Nombres de archivo con espacio que se muestra como 'nombre de archivo' después de la actualización a 18.04

23

Después de una actualización a 18.04, desde 16.04, todos los nombres de archivos con espacios se muestran como 'file name'. Anteriormente era simple file name. Los nombres de archivo sin espacio se muestran normalmente:

$ ls
 bar  'foo bar'

Si bien no afecta la funcionalidad de ninguna manera, encuentro esto abarrotado visualmente.

Yo uso bashcomo concha.

¿Cómo puedo eliminar ''mostrar alrededor de nombres de archivos con espacios?

vidarlo
fuente
44
¿Por qué desea eliminarlos? No forman parte del nombre del archivo y pueden ayudarlo a administrar los nombres de los archivos con espacios en la línea de comandos o en los scripts.
Soren A
2
Soy consciente de que no son parte del nombre del archivo. Pero son desorden visual, y no los necesito .
vidarlo
44
@SorenA Si usas lspara administrar archivos en tus scripts, lo estás haciendo mal. ¿Por qué no debe analizar la salida dels y por qué no analizar ls(y qué hacer en su lugar)?
postre
2
@ WinEunuuchs2Unix Hace que pegar sea más fácil, pero como su respuesta menciona, no cambia el comportamiento cuando no se envía a la terminal ...
vidarlo
2
@vidarlo El lsautor al menos aborda algunos de los problemas. Sabiendo que el autor participa activamente en Stack Exchange (el enlace en mi respuesta), uno podría sugerir más fácilmente futuras mejoras. Luego, comentar los votos positivos de otros usuarios animaría al autor a implementar sugerencias.
WinEunuuchs2Unix

Respuestas:

33

Este lscambio de comportamiento fue a partir de 2016, pero finalmente está llegando a Ubuntu.

Para recuperar el comportamiento anterior, use ls -N.

Opcionalmente, puede usar una variable ambiental:

QUOTING_STYLE=literal ls

Que sea un alias, o el conjunto export QUOTING_STYLE=literalen su ~/.bashrcpara lograr el comportamiento de edad.

Puede leer el enlace de arriba para obtener más detalles, incluido el historial de cuándo, dónde, por qué y cómo surgió todo esto. Hay bastantes comentarios bajo el autor de ls change donde justifica el nuevo comportamiento:

Algunos puntos sobre el cambio.

  • Se introdujo en coreutils v8.25, y la alineación mejoró en v8.26
  • Solo ocurre cuando se envía a terminales, por lo que no interrumpe los scripts
  • Desambigua la salida para los usuarios de archivos que contienen espacios en blanco
  • Desinfecta la salida, por lo que es seguro copiar y pegar
  • La salida ahora siempre es válida para copiar y pegar en el shell
  • Los usuarios pueden volver al formato anterior agregando -Na su lsalias
WinEunuuchs2Unix
fuente
12

Es lsque está citando la salida, ejecute:

ls -N

para obtener la salida sin ninguna cita.

man ls

-N, --literal

imprimir nombres de entrada sin citar


Alias ​​si quieres:

echo "alias ls='ls -N'" >> .bashrc
Ravexina
fuente