Hi, I made a following alias and put it in .zshrc; alias pu ="pip3 list -o | sed "1,2 d" |cut -d ' ' -f1 | xargs -n1 pip3 install -U” And when I restart zsh, I got a following error; /Users/akhst7/.zshrc:109: pip3 list -o | sed 1,2 not found. I’d appreciate any help on fixing this. Thanks in advance.
On 4/26/21 6:55 PM, Hoji, Aki wrote:
> alias pu ="pip3 list -o | sed "1,2 d" |cut -d ' ' -f1 | xargs -n1 pip3 install -U”
As a shell function:
pu() { ~
pip3 list -o |
sed "1,2 d" |
cut -d ' ' -f1 |
xargs -n1 pip3 install -U
}
While not to the degree of say python, whitespace matters often in shell;
You have an extra space after the name of the alias pu, so the =word triggered a different
feature of zsh that expands the path to a command. in this case "pip3 list -o | sed 1,2"
once you remove the space you still have the problem of not quoting correctly.
alias pu='pip3 list -o | sed "1,2 d" |cut -d '\'' '\'' -f1 | xargs -n1 pip3 install -U'
Is how to quote that command properly, which is less readable than a function is in my opinion.
On 27/04/2021 00:15, Eric Cook wrote:
> On 4/26/21 6:55 PM, Hoji, Aki wrote:
>> alias pu ="pip3 list -o | sed "1,2 d" |cut -d ' ' -f1 | xargs -n1
>> pip3 install -U”
>
> As a shell function:
> pu() { ~
> pip3 list -o |
> sed "1,2 d" |
> cut -d ' ' -f1 |
> xargs -n1 pip3 install -U
> }
>
> While not to the degree of say python, whitespace matters often in shell;
> You have an extra space after the name of the alias pu, so the =word
> triggered a different
> feature of zsh that expands the path to a command. in this case "pip3
> list -o | sed 1,2"
> once you remove the space you still have the problem of not quoting
> correctly.
>
> alias pu='pip3 list -o | sed "1,2 d" |cut -d '\'' '\'' -f1 | xargs -n1
> pip3 install -U'
>
> Is how to quote that command properly, which is less readable than a
> function is in my opinion.
>
thanks for this explanation Eric (I've been having my own battles with
shell white space recently)
When you are desperate to get something working not noticing a little
thing like the extra space in >>>>alias pu ="pip3<<<
Pity we don't have an online script tester for zsh (many for bash)
I prefer an Alias to a Function where possible because it's easy to tab
expand an alias and then if required tweak it
HI Eric,
Thanks for answering a newbie question. As zzapper suggested, I might try keeping this command as a function.
Aki
> On Apr 26, 2021, at 7:15 PM, Eric Cook <llua@gmx.com> wrote:
>
> On 4/26/21 6:55 PM, Hoji, Aki wrote:
>> alias pu ="pip3 list -o | sed "1,2 d" |cut -d ' ' -f1 | xargs -n1 pip3 install -U”
>
> As a shell function:
> pu() { ~
> pip3 list -o |
> sed "1,2 d" |
> cut -d ' ' -f1 |
> xargs -n1 pip3 install -U
> }
>
> While not to the degree of say python, whitespace matters often in shell;
> You have an extra space after the name of the alias pu, so the =word triggered a different
> feature of zsh that expands the path to a command. in this case "pip3 list -o | sed 1,2"
> once you remove the space you still have the problem of not quoting correctly.
>
> alias pu='pip3 list -o | sed "1,2 d" |cut -d '\'' '\'' -f1 | xargs -n1 pip3 install -U'
>
> Is how to quote that command properly, which is less readable than a function is in my opinion.
>
On Tue, Apr 27, 2021 at 12:11 AM zzapper <zsh@rayninfo.co.uk> wrote: > > Pity we don't have an online script tester for zsh (many for bash) I haven't used it myself, and it's not online, but: http://rocky.github.io/zshdb/
zzapper wrote on Tue, Apr 27, 2021 at 08:10:54 +0100: > Pity we don't have an online script tester for zsh (many for bash) What would that do, and why need it be online? > I prefer an Alias to a Function where possible because it's easy to tab > expand an alias and then if required tweak it With a function, you run fned on it, then invoke edit-command-line and delete the function's name on the first line, so you're left with an anonymous function ready to be run.
On 29/04/2021 14:30, Daniel Shahaf wrote:
> zzapper wrote on Tue, Apr 27, 2021 at 08:10:54 +0100:
>> Pity we don't have an online script tester for zsh (many for bash)
> What would that do, and why need it be online?
>
>> I prefer an Alias to a Function where possible because it's easy to tab
>> expand an alias and then if required tweak it
> With a function, you run fned on it, then invoke edit-command-line and
> delete the function's name on the first line, so you're left with an
> anonymous function ready to be run.
# did you mean
zed -f myfunc
# thanks for the anonymous function tip
zzapper wrote on Thu, Apr 29, 2021 at 14:55:56 +0100:
>
> On 29/04/2021 14:30, Daniel Shahaf wrote:
> > zzapper wrote on Tue, Apr 27, 2021 at 08:10:54 +0100:
> > > Pity we don't have an online script tester for zsh (many for bash)
> > What would that do, and why need it be online?
> >
> > > I prefer an Alias to a Function where possible because it's easy to tab
> > > expand an alias and then if required tweak it
> > With a function, you run fned on it, then invoke edit-command-line and
> > delete the function's name on the first line, so you're left with an
> > anonymous function ready to be run.
>
> # did you mean
>
> zed -f myfunc
Yes.