Jika Anda menggunakan zsh dengan globbing diperpanjang diaktifkan, Anda bisa melakukannya dengan oneliner:
(../)#.git(:h) # relative path to containing directory, eg. '../../..', '.'
(../)#.git(:a) # absolute path to actual file, eg. '/home/you/src/prj1/.git'
(../)#.git(:a:h) # absolute path to containing directory, eg. '/home/you/src/prj1'
Penjelasan (dikutip dari man zshexpn):
Globbing rekursif
Komponen pathname dari formulir (foo/)#cocok dengan path yang terdiri dari nol atau lebih direktori yang cocok dengan pola foo. Sebagai steno, **/setara dengan (*/)#.
Pengubah
Setelah penunjuk kata opsional, Anda dapat menambahkan urutan satu atau lebih dari pengubah berikut, masing-masing didahului oleh ':'. Pengubah ini juga bekerja pada hasil pembuatan nama file dan perluasan parameter, kecuali jika disebutkan.
- Sebuah
- Ubah nama file menjadi jalur absolut: tambahkan dulu direktori saat ini, jika perlu, dan selesaikan segala penggunaan '..' dan '.'
- SEBUAH
- Sebagai ' a ', tetapi juga selesaikan penggunaan tautan simbolik jika memungkinkan. Perhatikan bahwa resolusi '..' terjadi sebelum resolusi tautan simbolik. Panggilan ini setara dengan kecuali sistem Anda memiliki
realpathpanggilan sistem (sistem modern lakukan).
- h
- Hapus komponen trailing pathname, biarkan kepala. Ini berfungsi seperti '
dirname'.
Kredit: Fauxaktif #zshuntuk saran awal penggunaan (../)#.git(:h).