• rumba@lemmy.zip
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 months ago

      agreed, “still worth it”

      I do, however, tend to keep spaces out of my folder names so i can just use quotes at the end.

      /Images/Halloween/Projections/“Creepy Crawlies.mp4”

  • zitrone 🍋@lemmings.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 months ago

    i y’all just started using fish shell, you’d have proper shell completions and argument splitting that doesn’t care about spaces in file names

  • AmazingAwesomator@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    edit-2
    2 months ago

    i think i am old. i grew up using DOS, and really hated spaces in filenames and folders because they appreared truncated at the first space with a tilde and index of that file/folder representation.

    ex: C:\folder name is bad\ == C:\folder~1

    i hated that so much that when i got to windows 3.1 i refrained from using spaces (some command line was still necessary in w3.1)

    i have jept that habit through the years, so when i moved from windoes to linux, my natural instincts of snake_case_folder_names made it so i didnt have to change : D

    • aaaaaaaaargh@feddit.org
      link
      fedilink
      arrow-up
      0
      ·
      2 months ago

      That’s not even DOS I think. As far as I know Win 95 came up with this monstrosity in an attempt to circumvent the 8.3 character limitations present in older versions of DOS.

    • wizardbeard@lemmy.dbzer0.com
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 months ago

      One of the fun things about modern Windows is that ~1 shit still appears every once in a rare while. Gotta love just stacking more and more shit on top of ancient systems in the name of backwards compatibility!

    • db2@lemmy.world
      link
      fedilink
      arrow-up
      0
      ·
      2 months ago

      I think you’re misremembering a little. Long filenames was introduced in Win95.

    • Onomatopoeia@lemmy.cafe
      link
      fedilink
      English
      arrow-up
      0
      ·
      edit-2
      2 months ago

      Yea, Win 3.1 didn’t support long names - that came with Win95. Win 3.1 was a shell on DOS.

      But I understand - it all blends together after um… 40 years (ouch!).

  • katy ✨@piefed.blahaj.zone
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 months ago

    the struggle between spaces in filenames look cute and oh fuck what’s the code to reference a space in a filename in terminal?

    • Sonotsugipaa@lemmy.dbzer0.com
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 months ago

      They’re annoying to deal with when interactively using command-line shells, especially so when pasting unquoted and unescaped file paths, doubly especially so with Bash where parameter expansion makes no goddamn sense if you know at least one other programming language

      • ronigami@lemmy.world
        link
        fedilink
        arrow-up
        0
        ·
        2 months ago

        Example of how parameter expansion matters?

        Generally if you are pasting file paths there is a better way to do that. Use find with exec, or xargs, or a for loop. Or, get the list in Vim and escape (quote) every line at once. Unless you have double quotes in the filename too (which is actually a crazy thing) it shouldn’t be a big deal.

        • Sonotsugipaa@lemmy.dbzer0.com
          link
          fedilink
          English
          arrow-up
          0
          ·
          2 months ago

          Expansion matters because using parameters without quotes automatically splits words, and IIRC a quoted array parameter can still be split into its members — as opposed to Zsh, where word splitting doesn’t happen unprompted and quoted array parameters are flattened into a single string.

          Generally if I want to run $HOME/random executable with spaces.exe through Wine in a terminal I copy the path in Dolphin (CTRL+SHIFT+C, or CTRL+ALT+C idr) and paste it, within quotes if needed (the four extra key inputs are the annoying part).

          I find that much faster than manually typing find "$HOME" -name "random executable with spaces.exe" -type x -exec wine "{}" \;, or opening an editor to insert backslashes.

          • ronigami@lemmy.world
            link
            fedilink
            arrow-up
            0
            ·
            edit-2
            2 months ago

            Why on earth not just type wine ~/random and then hit tab to autocomplete? Or you could do

            wine `echo random*`
            

            AFAIK, if $file is a filename with spaces, then some_util ${file} will not split the filename.

            • Sonotsugipaa@lemmy.dbzer0.com
              link
              fedilink
              English
              arrow-up
              0
              ·
              edit-2
              2 months ago

              If the path to the dir is longer than $HOME, say, $HOME/Tools/modding/hd2-audio-modder/wwise/v123456789_idr_but_its_a_long_one/random file name with spaces, it makes more sense.

              I’ll try using the braces syntax, if it does prevent word splitting I wasn’t aware of it, though it’s still slightly inconvenient (3 key inputs for each brace on my kb) and I’d probably still use quotes instead if I had to use Bash and had the file path in a variable for some reason.

              … though at this point I’m probably overthinking it, atm I don’t recall better examples of my distaste for Bash expansion shenanigans.


              Did some testing, here’s what I found.
              Beware, it devolves into a rant against Bash and has little to do with the original topic - I just needed to scream into the void a little.

              # Zsh
              function argn { echo $#; }
              
              var='spaced string'
              argn $var
              # Prints 1: makes sense, no word splitting here
              
              var=(array 'of strings')
              argn $var
              # Prints 2: makes sense, I'm using a 2-wide array where I would
              #           want 2 arguments (the second one happens to have
              #           a whitespace in it)
              
              # Bash
              function argn { echo $#; }
              
              var='spaced string'
              argn $var
              # Prints 2: non-array variable gets split in 2 with this simple reference;
              #           I hate it, but hey, it is what it is
              
              argn ${var}
              # Prints 2: no, braces do not prevent word splitting as I think you suggested
              
              var=(array 'of strings')
              argn $var
              # Prints 1: ... what?
              
              echo $var
              # Prints array: ... what?!?
              #               It implicitly takes the first element?
              #               At least it doesn't word-split said first element, right?
              
              var=('array of' strings)
              argn $var
              # Prints 2:
              

              • ronigami@lemmy.world
                link
                fedilink
                arrow-up
                0
                ·
                2 months ago

                My bad, I was thinking of zsh. And I think it’s configurable there too so may not behave that way according to your settings. But it is at least the default on Mac.

                • Sonotsugipaa@lemmy.dbzer0.com
                  link
                  fedilink
                  English
                  arrow-up
                  0
                  ·
                  edit-2
                  2 months ago

                  I use Zsh too, though at this point is becoming detrimental to my (already limited) Bash skills because of features like the ${^array}{1,2,3} syntax which I use in some scripts of mine, which in turn I wouldn’t dare try to translate to Bash.

  • zerofk@lemmy.zip
    link
    fedilink
    arrow-up
    0
    ·
    edit-2
    2 months ago

    Computers should just know when I want a space to be part of a file name, and when I want them to be argument separators. No more escaping or quoting.

  • Korne127@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    2 months ago

    Can’t relate. I use shell all the time, and I always use spaces in file paths, especially to make sure scripts I make still work then

  • jbk@discuss.tchncs.de
    link
    fedilink
    arrow-up
    0
    ·
    2 months ago

    smells like skill issue tbh

    tools which cant handle being installed/run on directories with spaces are so annoying

      • ulterno@programming.dev
        link
        fedilink
        English
        arrow-up
        0
        ·
        2 months ago

        I vaguely remember zsh in Manjaro (by default) having a tab completion that automatically added the slashes.
        Never set it up myself though.

        But I really hate having to worry about quoting my file variables in scripts.
        So much, that after a certain complexity, I just give up the script and make the thing in C++.

        • TarantulaFudge@startrek.website
          link
          fedilink
          arrow-up
          0
          ·
          2 months ago

          You can just start the path with a quote and it will auto complete with spaces. I spend a lot of time correcting files with spaces replaced now. The spaces are better. I think music is the most annoying, since I like to use tools like EasyTag to extract metadata from filenames.

          So please stop.naming_files.like_this.its_stupid

          • ulterno@programming.dev
            link
            fedilink
            English
            arrow-up
            0
            ·
            2 months ago

            You can just start the path with a quote and it will auto complete with spaces.

            Oh, you’re right. I just tried it out and it worked the same way.
            I wonder what gave me the misconception the it doesn’t by default.