GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara mendapatkan direktori absolut dari sebuah file di bash?

Lihatlah realpath yang tersedia di GNU/Linux, FreeBSD dan NetBSD, tetapi bukan OpenBSD 6.8. Saya menggunakan sesuatu seperti:

CONTAININGDIR=$(realpath ${FILEPATH%/*})

untuk melakukan apa yang sepertinya Anda coba lakukan.


Untuk mendapatkan jalur lengkap gunakan:

readlink -f relative/path/to/file

Untuk mendapatkan direktori file:

dirname relative/path/to/file

Anda juga dapat menggabungkan keduanya:

dirname $(readlink -f relative/path/to/file)

Jika readlink -f tidak tersedia di sistem Anda, Anda dapat menggunakan ini:

function myreadlink() {
  (
  cd "$(dirname $1)"         # or  cd "${1%/*}"
  echo "$PWD/$(basename $1)" # or  echo "$PWD/${1##*/}"
  )
}

Perhatikan bahwa jika Anda hanya perlu pindah ke direktori file yang ditentukan sebagai jalur relatif, Anda tidak perlu mengetahui jalur absolut, jalur relatif legal, jadi gunakan saja:

cd $(dirname relative/path/to/file)

jika Anda ingin kembali (saat skrip berjalan) ke jalur asli, gunakan pushd bukannya cd , dan popd setelah selesai.

* Sedangkan myreadlink di atas cukup baik dalam konteks pertanyaan ini, ia memiliki beberapa batasan relatif terhadap readlink alat yang disarankan di atas. Misalnya tidak mengikuti tautan ke file dengan basename yang berbeda dengan benar .


Ini akan berfungsi untuk file dan folder:

absPath(){
    if [[ -d "$1" ]]; then
        cd "$1"
        echo "$(pwd -P)"
    else 
        cd "$(dirname "$1")"
        echo "$(pwd -P)/$(basename "$1")"
    fi
}

Linux
  1. Basa'?

  2. Bagaimana Cara Mendapatkan Tty Di Bash Yang Sedang Berjalan?

  3. cara menemukan pemilik file atau direktori dengan python

  1. Cara mendapatkan ukuran file tar.gz dalam (MB) dengan python

  2. Bagaimana cara mendaftar ukuran setiap file dan direktori dan mengurutkan berdasarkan ukuran menurun di Bash?

  3. Cara hanya mendapatkan jumlah baris file

  1. Bagaimana cara mendapatkan ukuran direktori sebenarnya (keluar dari du)?

  2. Bagaimana cara menjalankan skrip bash melalui jalur absolut?

  3. Bagaimana cara mendapatkan ukuran fisik file di Linux?