I was surprised to find this today. The following fails:
echo /some/place/foo.txt | basename This also fails: find /somewhere -print | xargs basename This *does* work though, somehow, when the above does not: echo /some/place/foo.txt | xargs basename What is going on here? dirname is the same way.