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.

  • MorphiusFaydal@lemmy.world
    link
    fedilink
    English
    arrow-up
    55
    ·
    1 year ago

    The quotes are there because there’s spaces in the file name. You don’t see them in the GUI because they’re not actually there. They’re added by the ‘ls’ command to help with copy/pasting of file names. You can add ‘export QUOTING_STYLE=literal’ to your ~/.bashrc to permanently suppress them, or just do ‘ls -N’ as a one off.

    • StrobeSpirits@discuss.tchncs.deOP
      link
      fedilink
      arrow-up
      9
      arrow-down
      2
      ·
      edit-2
      1 year ago

      Thanks. The export command got rid of the quotation marks but I still have an issue where when I cd into one of the directories that had quotation marks (a directory with two words in the name) there is a backslash after the first word and a forward slash at the end of the file name when I use tab to complete the rest of the file name.

      • phx@lemmy.ca
        link
        fedilink
        arrow-up
        13
        ·
        1 year ago

        That’s to escape the space, so that it doesn’t register as a separate keyword in whatever command you’re running.

        For paths/filenames with spaces, you must escape all spaces with the backslash, or use single/double quotes around it. Single quotes also prevent stuff like interpreting $ etc etc as a reference to a variable

      • BCsven@lemmy.ca
        link
        fedilink
        arrow-up
        8
        ·
        1 year ago

        That is normal with tab completion, since spaces will be seen as other commands so the slash escapes the space character

  • Square Singer@feddit.de
    link
    fedilink
    arrow-up
    15
    ·
    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.

    • flontlocs@lemmy.world
      link
      fedilink
      arrow-up
      5
      ·
      edit-2
      1 year ago

      Command line in general, not just Linux.

      Forgetting to quoteblock spaces in Windows won’t be pleasant either (especially when Windows has a Sydtem directory called “Program Files”.

  • Shdwdrgn@mander.xyz
    link
    fedilink
    English
    arrow-up
    3
    arrow-down
    7
    ·
    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.