Để có được con đường sử dụng đầy đủ:
readlink -f relative/path/to/file
Để có được thư mục của một tập tin:
dirname relative/path/to/file
Bạn cũng có thể kết hợp hai:
dirname $(readlink -f relative/path/to/file)
Nếu readlink -f
không khả dụng trên hệ thống của bạn, bạn có thể sử dụng điều này:
function myreadlink() {
(
cd $(dirname $1) # or cd ${1%/*}
echo $PWD/$(basename $1) # or echo $PWD/${1##*/}
)
}
Lưu ý rằng nếu bạn chỉ cần di chuyển đến một thư mục của một tập tin quy định như một đường dẫn tương đối, bạn không cần phải biết đường dẫn tuyệt đối, một đường dẫn tương đối là hoàn toàn hợp pháp, vì vậy chỉ cần sử dụng:
cd $(dirname relative/path/to/file)
nếu bạn muốn quay trở lại (trong khi kịch bản đang chạy) đến đường dẫn gốc, sử dụng pushd
thay vì cd
, và popd
khi bạn đang thực hiện.
Nguồn
2013-07-10 17:30:16
Bạn có đưa ra đường dẫn đầy đủ đến tập tin đầu vào hay chỉ là con đường tương đối so với hiện tại thư mục làm việc? – dmh
dhm: đầu vào cung cấp đường dẫn tương đối, tôi muốn đường dẫn tuyệt đối * trừ * tên tệp. – BobMcGee