Hello all, I wan to create an alias of this command:
alias dockps = "docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}""
The syntax for creating an alias is:
alias $COMMAND = "docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}""
However, since there are quote marks, I assume they neet to be escaped with \
. But in the case above, I’m getting the errors in fish and bash.
Fish error:
$ alias dockps = "docker ps --format \"table {{.ID}} {{.Names}} {{.Status}} {{.Ports}}\""
alias: expected <= 2 arguments; got 3
Bash error:
$ alias dockps = "docker ps --format \"table {{.ID}} {{.Names}} {{.Status}} {{.Ports}}\"" bash: alias: dockps: not found bash: alias: =: not found bash: alias: docker ps --format "table {{.ID}} {{.Names}} {{.Status}} {{.Ports}}": not found
What am I doing wrong?
Thanks in advance!
Edit:
For fish shell users out there, this can be accomplished by using func
:
$ function dockerps docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}" end $ funcsave dockerps
I’m leaving the question up as the question with escape characters is still relevant and can be a learning resouce.
As the others have said, your first issue is using blank spaces before and after
=
Then, when you need to use double quotes in a command, the alias should be defined with single quotes, like this:
\$ alias dockps='docker ps --format "table {{.ID}} {{.Names}} {{.Status}} {{.Ports}}"'
Thank you (and all others who replied), this worked flawlessly :-)
Just a thought: It should be possible to save the default ps output does that not fit your use case better?
man 5 docker-config-json
https://man.archlinux.org/man/extra/docker/docker-config-json.5.en
OMG! I didn’t even know about this, thanks! Will look into it, would be awesome to have ps command spit out things like I want them by default :-)
Try using ‘apostrophes’ for the outer set of quotes and see if that works
I think you have to alternate the quotations you use between doubles and singles, pairwise. Else the first pair is closed after --format.
So you have to use a pattern like “command level 1 ‘level 2 “level 3” more level 2’ more level 1”
Does that make sense?
Not at my computer so I can’t double check, but I believe you can replace the outer double quotes with single quotes. I’d also remove the spaces before and after the equal sign for the alias. I don’t know about fish but I know bash doesn’t like when you add spaces there.