lsd icon indicating copy to clipboard operation
lsd copied to clipboard

File names with spaces are not quoted

Open planet36 opened this issue 2 years ago • 6 comments

  • os: Linux 5.17.7-arch1-1 x86_64
  • lsd --version: lsd 0.21.0
  • echo $TERM: tmux-256color
  • echo $LS_COLORS: rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=00:tw=30;42:ow=34;42:st=37;44:ex=01;32:.tar=01;31:.tgz=01;31:.arc=01;31:.arj=01;31:.taz=01;31:.lha=01;31:.lz4=01;31:.lzh=01;31:.lzma=01;31:.tlz=01;31:.txz=01;31:.tzo=01;31:.t7z=01;31:.zip=01;31:.z=01;31:.dz=01;31:.gz=01;31:.lrz=01;31:.lz=01;31:.lzo=01;31:.xz=01;31:.zst=01;31:.tzst=01;31:.bz2=01;31:.bz=01;31:.tbz=01;31:.tbz2=01;31:.tz=01;31:.deb=01;31:.rpm=01;31:.jar=01;31:.war=01;31:.ear=01;31:.sar=01;31:.rar=01;31:.alz=01;31:.ace=01;31:.zoo=01;31:.cpio=01;31:.7z=01;31:.rz=01;31:.cab=01;31:.wim=01;31:.swm=01;31:.dwm=01;31:.esd=01;31:.avif=01;35:.jpg=01;35:.jpeg=01;35:.mjpg=01;35:.mjpeg=01;35:.gif=01;35:.bmp=01;35:.pbm=01;35:.pgm=01;35:.ppm=01;35:.tga=01;35:.xbm=01;35:.xpm=01;35:.tif=01;35:.tiff=01;35:.png=01;35:.svg=01;35:.svgz=01;35:.mng=01;35:.pcx=01;35:.mov=01;35:.mpg=01;35:.mpeg=01;35:.m2v=01;35:.mkv=01;35:.webm=01;35:.webp=01;35:.ogm=01;35:.mp4=01;35:.m4v=01;35:.mp4v=01;35:.vob=01;35:.qt=01;35:.nuv=01;35:.wmv=01;35:.asf=01;35:.rm=01;35:.rmvb=01;35:.flc=01;35:.avi=01;35:.fli=01;35:.flv=01;35:.gl=01;35:.dl=01;35:.xcf=01;35:.xwd=01;35:.yuv=01;35:.cgm=01;35:.emf=01;35:.ogv=01;35:.ogx=01;35:.aac=00;36:.au=00;36:.flac=00;36:.m4a=00;36:.mid=00;36:.midi=00;36:.mka=00;36:.mp3=00;36:.mpc=00;36:.ogg=00;36:.ra=00;36:.wav=00;36:.oga=00;36:.opus=00;36:.spx=00;36:.xspf=00;36:~=00;90:#=00;90:.bak=00;90:.old=00;90:.orig=00;90:.part=00;90:.rej=00;90:.swp=00;90:.tmp=00;90:.dpkg-dist=00;90:.dpkg-old=00;90:.ucf-dist=00;90:.ucf-new=00;90:.ucf-old=00;90:.rpmnew=00;90:.rpmorig=00;90:.rpmsave=00;90:

Expected behavior

File names with spaces are quoted.

touch aaa\ aaa
ls aaa\ aaa

'aaa aaa'

Actual behavior

File names with spaces are not quoted. lsd aaa\ aaa

 aaa aaa

planet36 avatar May 16 '22 23:05 planet36

hi @planet36, may I ask which builtin ls version did you use?

I try GNU ls and bsd ls on macOS, and both show a a without the quote.

zwpaper avatar May 18 '22 03:05 zwpaper

ls --version | head -n 1 ls (GNU coreutils) 9.1

planet36 avatar May 18 '22 11:05 planet36

I guess this behavior was added in coreutils 8.25. https://git.savannah.gnu.org/cgit/coreutils.git/tree/NEWS#n1046

planet36 avatar May 18 '22 11:05 planet36

See also https://unix.stackexchange.com/q/258679/439780

planet36 avatar May 18 '22 11:05 planet36

Thanks so much for the information!

then this could be an improvement for us to implement.

I did not have a newer version of GNU ls, could you please add some more case outputs for us.

  • filename with space
  • filename with single-quote
  • filename with double-quote
  • filename with $
  • output to a pipe like ls | cat

zwpaper avatar May 19 '22 11:05 zwpaper

Python script to create the files:

from pathlib import Path
for i in range(32, 127):
    if chr(i) == '/':
        continue
    f = "{:02X}{}{:02X}".format(i, chr(i), i)
    Path(f).touch()

ls -1

'20 20' '22"22' '24$24' "27'27" ...

ls -1 | cat

20 20 22"22 24$24 27'27 ...

planet36 avatar May 20 '22 01:05 planet36