On 29/09/16 13:59, Ковалев Кирилл wrote:
> Hello!
> 
> I'm writing for the first time in such list, so any advices are appreciated.
> 
> Let's say, we got a path: "/home/user/dir". *I'd like to obtain just a
> string "dir".*
> 
> I tried to execute "basename" utility with no success:
> 
> $ basename

Does basename output the logical or physical basename in this case?
(See below)...

> $ pwd | basename

Yes basename operates only on arguments rather than items from stdin.
Processing multiple arguments is supported with `generate_paths | xargs 
basename -a`
If we added operation as a filter then newer scripts using that would
break compatibility with older utilities, for no functional gain.
Also processing multiple paths is edge case functionality.

> Then I open manual / help message and realize that correct way to use it is:
> 
> $ basename $(pwd)
> 
> Which seems for me to be non-intuitive, compared with these I tried to use.

The vast majority of use is to specify a single path,
so a single argument works best for that.

Given the variables involved the current syntax seems best, which is:

basename "$(pwd -P)"
or
basename "$(pwd -L)"

p.s. use `env pwd` to get the system installed binary
rather than the shell builtin equivalent.

Reply via email to