I am trying to get rid of this folder, but the result is saying that fish expects a variable name after this $. What does it mean ? And how do i get rid of this folder ?

4 points · 31 comments · view on lemmy.world

31 Comments

just_another_person@lemmy.world · 20 pts · 64d (3 replies)

Tab Completion if you're unsure how to escape characters in this case. Start the name of the folder, then hit TAB a couple times

AbidingOhmsLaw@lemmy.ml · 7 pts · 64d (2 replies)

⬆️⬆️⬆️This⬆️⬆️⬆️

moonpiedumplings@programming.dev · 3 pts · 62d (1 reply)

No, it should be:

↹↹↹This↹↹↹

bigbangdangler@reddthat.com · 2 pts · 62d

Or even:

Th↹

(Assuming you have a file/folder called "This" and no others starting with "Th")

AbidingOhmsLaw@lemmy.ml · 5 pts · 64d (19 replies)

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?

OrangePumkin@piefed.nl · 3 pts · 64d (17 replies)

'folder'$'\003'

That's the name of the folder.

ludrol@programming.dev · 9 pts · 64d

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 · 6 pts · 64d

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 · 5 pts · 64d

‘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.

neo@feddit.org · 2 pts · 64d (3 replies)

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

OrangePumkin@piefed.nl · -2 pts · 64d (2 replies)

VyxDqcxlLm2L7Xj.png

After doing the step, the cursor simply came in the centre.

Successful_Try543@feddit.org · 2 pts · 64d

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.

myster0n@feddit.nl · 1 pts · 64d
[ removed ]
Successful_Try543@feddit.org · 2 pts · 64d (9 replies)

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 \.

OrangePumkin@piefed.nl · 0 pts · 64d (5 replies)

d5sVJ1TsorJCfyZ.png

OrangePumkin@piefed.nl · 0 pts · 64d (4 replies)

Do you see the folder with the strange name here ?

Digit@lemmy.wtf · 2 pts · 64d

Oh hey, seeing that has just given me another idea (not sure if anyone else mentioned this yet elsewhere further down in the conversation... but...)

Tried just using a unique portion of the name that's easy to type, along with asterisks for the rest? e.g. rmdir *old*00* (or rm -r if it's not an empty dir you want rid of).

Successful_Try543@feddit.org · 1 pts · 64d (2 replies)

As the other commenters and I have mentioned, you should try escaping any of the special characters ', $, and \ by a backslash, i.e. \', \$ and \\

OrangePumkin@piefed.nl · 0 pts · 64d (1 reply)

rm -rf command ?

Successful_Try543@feddit.org · 1 pts · 64d

rm -rf \'folder\'\$\'\\003\'

OrangePumkin@piefed.nl · 0 pts · 64d (1 reply)

There are no hyphens.

Successful_Try543@feddit.org · 1 pts · 64d

sorry, I mean apostrophes.

OrangePumkin@piefed.nl · 0 pts · 64d

Nothing happened.

victorz@lemmy.world · 1 pts · 59d

Happy cake day!

sjohannes@programming.dev · 5 pts · 64d (3 replies)

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.

Successful_Try543@feddit.org · 4 pts · 64d (1 reply)

Would it help to use ls --literal --show-control-chars to find out if \003 is indeed the representation of a special character?

sjohannes@programming.dev · 4 pts · 63d

The default output itself is pretty definitive, assuming you are indeed using GNU ls and don't have the QUOTING_STYLE environment variable set. https://www.gnu.org/software/coreutils/manual/html_node/Formatting-the-file-names.html explains all this (including your options) and more.

$ touch $'folder\x03'
$ ls --quoting-style shell-escape  # the default
'folder'$'\003'
$ ls --quoting-style c
"folder\003"
$ ls --quoting-style escape
folder\003
BradleyUffner@lemmy.world · 2 pts · 62d

I wouldn't expect homework to use fish. It seems a less useful and niche as a learning exercise.

comrademiao@piefed.social · 4 pts · 64d

Can you not rm -rf then tab and select the folder automatically formatted as needed?

sin_free_for_00_days@sopuli.xyz · 2 pts · 62d (1 reply)

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
OrangePumkin@piefed.nl · 1 pts · 62d

I have uninstalled and reinstalled my WSL. Nothing exists now.

victorz@lemmy.world · 1 pts · 59d

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.

👍👍