• Victor@lemmy.world
    link
    fedilink
    arrow-up
    1
    ·
    3 days ago

    Nobody’s getting into the real issue lol. Yes, yes, tab completion. But all you need to do is escape the dollar sign: \$. Or include it inside the single quotes.

    👍👍

  • sin_free_for_00_days@sopuli.xyz
    link
    fedilink
    English
    arrow-up
    2
    ·
    edit-2
    6 days ago

    As others have said, tab-complete should be able to do it. If not, here are two other options:

    Is it the only “folder*” in the directory?

    $  ls *folder*
    ‘folder’$‘003’
    

    If you only have that, you should be able to use the wildcards to delete it:

    rm *folder*
    

    Another is just find the inode and delete using that:

    $  ls -li | grep folder
    5120013  .rw-rw-r-- user user  0 B  Fri Jun 19 21:09:02 2026 ‘folder’$‘003’
    
    $ find . -inum 5120013 -delete
    
  • sjohannes@programming.dev
    link
    fedilink
    English
    arrow-up
    5
    ·
    8 days ago

    Is this homework of some sort?

    By default, GNU ls will quote entries containing certain special or unprintable characters. For example, if a file name contains the space character, GNU ls will print e.g. 'hello world'. This quoting is done using Bash syntax.

    In Bash, 'folder'$'\003' (or $'folder\003') represents the text folder followed by octal byte 3. Because you use Fish instead of Bash, this doesn’t work­—it has a different syntax to specify unprintable/special characters.

    I can tell you how to refer to this file in Fish, but I hesitate to do it if it’s for homework. What I will do is point you to the part of the Fish documentation where this is (kind of) explained: in Fish for bash users#Quoting.

  • AbidingOhmsLaw@lemmy.ml
    link
    fedilink
    English
    arrow-up
    6
    arrow-down
    1
    ·
    8 days ago

    Fish is the command line shell your using (similar to bash). Usaslly the $ symbol perceeds a variable name, hence the error. Do you have a folder with a $ in the name?

      • ludrol@programming.dev
        link
        fedilink
        arrow-up
        9
        ·
        8 days ago

        What does ls show?

        you can escape special charcters with \ something like \'folder\'\$\'\\003\' might work

        be careful with rm -rf as you might delete your entire disk if done badly. use some other command to test if it targets the correct directory like ls \'folder\'\$\'\\003\'

      • AbidingOhmsLaw@lemmy.ml
        link
        fedilink
        English
        arrow-up
        6
        ·
        8 days ago

        Yep as others have noted put a \ in front of each special character. The \ tells the system to treat the following character as a alphanumeric character in the string and not as a operator or a command. Since ', $ and \ are all special characters you will need a \ just before each when typing this name. Also as mentioned do this with a benign command like ls first to make sure your only acting on that specific directory or you might have a bad day.

        Edit: How the heck did you get some of those folder names? Looks like a script with incorrect variable/macro substitution made these.

      • Digit@lemmy.wtf
        link
        fedilink
        English
        arrow-up
        5
        ·
        8 days ago

        ‘folder’$‘\003’

        Oh that is unpleasantly fiddly to insert all the backslashes to escape the bits. Testing here, (fiddly to even make a dir called that, lol), for fun, instead of just pressing tab, … is it just the $ and the \ you need to escape? and the ’ are fine? Results here are inconclusive, not sure I managed to make a file with the same name, it showing here with extra outer '.

        Probably easier to just interactively… but yeah, in case needing to have it written for a script… probably easiest still to just press tab, to see how it arranges the escape syntax, and paste that into your script. ;)

        The fi in fish is friendly interactive, after all.

      • Successful_Try543@feddit.org
        link
        fedilink
        arrow-up
        2
        ·
        edit-2
        8 days ago

        Are the hyphens apostrophes and the backslash part of the folder name too?

        If so, try \'folder\'\$\'\\003\' escaping the hyphens apostrophes ', the dollar sign $ and the backslash \.

      • neo@feddit.org
        link
        fedilink
        arrow-up
        2
        ·
        8 days ago

        I believe u should Type

        rm -r \'folder\'\$\'\\003\'
        

        Basically a \ interprets the following character as a character. With the ’ I’m not sure, so maybe

        rm -r 'folder'\$'\\003'
        

        could do the trick too

        Edit: correct code

          • Successful_Try543@feddit.org
            link
            fedilink
            arrow-up
            2
            ·
            8 days ago

            there is a space between your first \ and the ' that doesn’t belong there. (The backslash escapes the space, but not the apostrophe, that’s why it’s coloured red and not cyan)

            Press Ctrl+C and try again with the corrected command.