Fish

97 readers
1 users here now

A community to discuss the fish command line shell https://fishshell.com/

Looking for mods, if you want to mod the community feel free to dm @[email protected]

Icon base by Delapouite under CC BY 3.0 with modifications to add a gradient

founded 1 year ago
MODERATORS
1
 
 

I'm writing a fish script to process the output of music tagging programs (like operon). I use this for instance to list the filenames of all music tracks in a collection that are missing certain tags like a date of release or which have a CD number tag but no tracknumber tag.

Unfortunately the output I'm parsing may control control characters // escape sequences. This caused me quite a lot of headache during debugging.

Take the following string for instance: it will display as tracknumber (including the leading whitespace` in my terminal. The word itself only has 11 characters so naturally I tried to call string trim on it, but that doesn't actually alter it because on closer inspection the character sequence looks like this:

string_value= tracknumber
string_length=16
0:
:[
2:0
3:m
4:
5:t
6:r
7:a
8:c
9:k
10:n
11:u
12:m
13:b
14:e
15:r

As you can see it starts with a terminal escape sequence which is rendered as a whitespace.

Is there an easy way to strip any and all escape sequences from a variable? I used regular expression search and replace with some success, but that seems quite a brittle approach as I can't anticipate every single (edge) case and could also accidentally remove stuff I want to keep.

2
 
 

I often write multiple statements on the same logical line. For instance short loops that converts one image format to another.

Is there a way to bring up tab completions or history search for subsequent statements? After beginning a new command with ; && &or | I want to be able to make use of suggestions again.

3
4
5
Fish 3.7.1 (github.com)
submitted 1 year ago by mac to c/fishshell
5
6
7
9
Fish 3.7.0 (github.com)
submitted 1 year ago by mac to c/fishshell