Using the result of a command as an argument in bash?

The best way to do this is with "$(command substitution)" (thanks, Landon):

ls > "$(pwd).txt"

You will sometimes also see people use the older backtick notation, but this has several drawbacks in terms of nesting and escaping:

ls > "`pwd`.txt"

Note that the unprocessed substitution of pwd is an absolute path, so the above command creates a file with the same name in the same directory as the working directory, but with a .txt extension. Thomas Kammeyer pointed out that the basename command strips the leading directory, so this would create a text file in the current directory with the name of that directory:

ls > "$(basename "$(pwd)").txt"

Also thanks to erichui for bringing up the problem of spaces in the path.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)