Просто для продолжения ответа birryree для путей с пробелами: вы не можете использовать команду eval
, так как она разделяет оценку пробелами. Одним из решений является временное замещение пробелов для команды eval:
mypath="~/a/b/c/Something With Spaces"
expandedpath=${mypath// /_spc_} # replace spaces
eval expandedpath=${expandedpath} # put spaces back
expandedpath=${expandedpath//_spc_/ }
echo "$expandedpath" # prints e.g. /Users/fred/a/b/c/Something With Spaces"
ls -lt "$expandedpath" # outputs dir content
Этот пример, конечно, полагается на предположение, что mypath
никогда не содержит последовательность символов "_spc_"
.