GNU/Linux >> Belajar Linux >  >> Linux

Dapatkan dirname/nama file terakhir dalam argumen jalur file di Bash

Pendekatan berikut dapat digunakan untuk mendapatkan jalur apa pun dari nama jalur:

some_path=a/b/c
echo $(basename $some_path)
echo $(basename $(dirname $some_path))
echo $(basename $(dirname $(dirname $some_path)))

Keluaran:

c
b
a

Bash bisa mendapatkan bagian terakhir dari suatu jalur tanpa harus memanggil basename eksternal :

dir="/path/to/whatever/"
dir="${dir%/}"             # strip trailing slash (if any)
subdir="${dir##*/}"

Ini menggunakan ekspansi parameter Bash untuk menghapus bagian dari string sebelum garis miring (tersisa) terakhir.


basename tidak menghapus awalan direktori dari sebuah path:

$ basename /usr/local/svn/repos/example
example
$ echo "/server/root/$(basename /usr/local/svn/repos/example)"
/server/root/example

Untuk mencetak nama file tanpa menggunakan perintah eksternal,

Jalankan:

fileNameWithFullPath="${fileNameWithFullPath%/}";
echo "${fileNameWithFullPath##*/}" # print the file name

Perintah ini harus berjalan lebih cepat dari basename dan dirname .


Linux
  1. Bagaimana Anda menormalkan jalur file di Bash?

  2. Menambahkan stempel waktu ke nama file dengan mv di BASH

  3. Ambil bagian terakhir dari jalur folder di shell

  1. Cara memasukkan file dalam skrip bash shell

  2. Bagaimana cara mendapatkan path ke file saat ini (pwd) di Linux dari C?

  3. Bagaimana cara mendapatkan direktori absolut dari sebuah file di bash?

  1. Tampilan Lengkap Di Mana Variabel Path Diatur Di Bash?

  2. Dapatkan Jalur Lengkap Dari Dalam Skrip Bash?

  3. Cara hanya mendapatkan jumlah baris file