I installed some software and I think afterwards I was navigating through CLI and noticed that some directories or some files in some directories had single quotation marks around the names. They don’t appear in the GUI. How do I get rid of them? Do I have to use a recursive command to delete the quotation marks for the entire file system?

I’ve actually had this problem a few times in the past but cannot recall why they happen nor what the solution was.

  • Square Singer@feddit.de
    link
    fedilink
    arrow-up
    8
    ·
    1 year ago

    I understand why this is weird to you, but it’s supposed to work like that and you should really keep it that way.

    Otherwise you have no way of knowing whether your directory contains a file called “a b c”, or three files called “a” “b” and “c” (all without the quotation marks obviously).

    In Linux a blank space denotes a seperator. So basically, a space means “A new thing begins now”.

    So e.g. if you use the cat command to print the contents of a file called “a b c”, and you do it like so: “cat a b c”, it will try to print the contents of the three files called “a” “b” and “c”.

    The other way you can go is to escape the space character. Escaping tells a program that the following character has no special meaning and is used only in it’s meaning as pure text. In Linux you escape using this character: .

    So “a b c” is equivalent to a\ b\ c.

    All in all, this is a weird thing to get used to as a beginner, but it’s an important and even helpful thing.

    All in all, there are some things that are pretty weird when you first switch to Linux, but most of them have a reason. You can bend Linux to do whatever you want and you can even make it very Windows-y if you want. But in many cases there are reasons behind design decisions and bending them often results in issues down the road.

    But in the end, it’s your PC, and it’s Linux, so do what you want.

  • _cnt0@lemmy.villa-straylight.social
    link
    fedilink
    arrow-up
    4
    ·
    1 year ago

    I’d wager a guess, that all file/folder paths that are surrounded by quotes contain at least one space!? And you’re talking about the output of ls? It’s rather unlikely, that installing any software has changed that behavior. It’s just a display feature, to denote that “two” parts separated by a space are actually one.

  • Shdwdrgn@mander.xyz
    link
    fedilink
    English
    arrow-up
    0
    arrow-down
    2
    ·
    1 year ago

    If you are referring to seeing filenames with spaces wrapped in single quotes when you do an “ls” then refer to this stackexchange answer for a discussion on the long history of why everyone considers this a major bug but the maintainers refuse to fix it. The short answer is to do “ls -N” to correct this problem, and you will probably want to create an alias to do this automatically for you.

    • _cnt0@lemmy.villa-straylight.social
      link
      fedilink
      arrow-up
      4
      ·
      1 year ago

      It’s really neither a bug nor a problem. It is very reasonable default behavior to enable piping to or parsing by other commands because space is the default separator for arguments.

      • Shdwdrgn@mander.xyz
        link
        fedilink
        English
        arrow-up
        0
        arrow-down
        2
        ·
        1 year ago

        So you’re saying you do not already take the reasonable approach of quoting filenames in your scripts, and the rest of us have to work around your lack of foresight?

        • _cnt0@lemmy.villa-straylight.social
          link
          fedilink
          arrow-up
          2
          ·
          1 year ago

          Feel free to travel back in time and have a discussion with Ken Thompson in ~1970, whether spaces in file/folder names should be allowed in the first place. I for one use an underscore instead, whenever I have control.

          • Shdwdrgn@mander.xyz
            link
            fedilink
            English
            arrow-up
            1
            ·
            1 year ago

            Yeah I try to avoid them as well, but sometimes you have filesystems shared by Windows users who don’t know any better. I also process tv show and movie files which always contains spaces in their names, so I just got in the habit of quoting the filenames so there’s never any question. One of these days I need to see if those single quotes interfere with the process of renaming files – do they get pulled in when you read a directory into an array? If so, then when I work with the filenames as strings it would mean that the new filename is incorrect. If they don’t get included, then the whole argument of it making it ‘easier’ to work from the command line is false because now you have inconsistent results depending on how exactly you work with the results from the ls command. As it is, I’ll probably have to start including the -N parameter in my scripts just to make sure I always get a known result now and in the future.

            • _cnt0@lemmy.villa-straylight.social
              link
              fedilink
              arrow-up
              1
              ·
              1 year ago

              It’s certainly no bad habit to handle spaces in scripts preemptively, and obviously they do occur in the wild. Quotes from ls output do not get piped to other commands. I had to look that up myself right now, because it has been quite a while since it mattered to me.

              $ touch 'file with spaces in name'
              $ ls
              'file with spaces in name'
              $ ls | cat
              file with spaces in name
              $ 
              

              Looking through some scripts I wrote back in the day, I seem to like to use ls -1 in scripts. I guess that reduces ambiguity on what the separator is.

    • Gobbel2000@feddit.de
      link
      fedilink
      arrow-up
      3
      ·
      1 year ago

      My experience is you should try to always use find over ls when writing robust scripts, and consider ls as just an end user tool, not a scripting tool.