GNU/Linux >> Belajar Linux >  >> Linux

Lihat File Di Bawah Direktori Skrip yang Sama Ditemukan Di $path?

Saya memiliki file skrip bash, yang diletakkan di bawah beberapa direktori yang ditambahkan ke $PATH sehingga saya dapat memanggil skrip dari direktori mana pun.

Ada file teks lain di bawah direktori yang sama dengan skrip. Saya ingin tahu bagaimana cara merujuk ke file teks dalam skrip?

Misalnya, jika skrip hanya untuk menampilkan konten file teks, cat textfile tidak akan berfungsi, karena saat memanggil skrip dari direktori lain, file teks tidak ditemukan.

Jawaban yang Diterima:

Ini harus bekerja sama, selama tidak ada symlink (dalam perluasan jalur atau skrip itu sendiri):

  • MYDIR="$(dirname "$(realpath "$0")")"

  • MYDIR="$(dirname "$(which "$0")")"

  • Versi dua langkah dari salah satu di atas:

    MYSELF="$(realpath "$0")"

    MYDIR="${MYSELF%/*}"

Jika ada symlink dalam perjalanan ke skrip Anda, maka which akan memberikan jawaban tidak termasuk resolusi tautan itu. Jika realpath tidak diinstal secara default di sistem Anda, Anda dapat menemukannya di sini.

[EDIT]: Sepertinya realpath tidak memiliki keunggulan dibandingkan readlink -f disarankan oleh Caleb, mungkin lebih baik menggunakan yang terakhir. Tes waktu saya menunjukkan itu sebenarnya lebih cepat.


Linux
  1. Cara Menemukan File Terlama Di Pohon Direktori Di Linux

  2. Output Yang Akan Disimpan Dalam File Bernama Sama Dengan File Input?

  3. Simpan Semua Output Terminal Ke File?

  1. Apa tujuan dari file .bash_profile di bawah Direktori Beranda Pengguna Di Linux?

  2. Inti dibuang, tetapi file inti tidak ada di direktori saat ini?

  3. Bagaimana cara mengarahkan stderr dan stdout ke file berbeda di baris yang sama dalam skrip?

  1. Mengapa Skrip Bash Tidak Mengenal Alias?

  2. Bagaimana saya bisa menemukan file terlama di pohon direktori

  3. Skrip SH di $PATH tidak ditemukan di Linux Alpine 3.11