Bagaimana Anda bisa dengan cepat mendapatkan path lengkap ke file untuk digunakan di terminal?

47

Bagaimana Anda bisa dengan cepat mendapatkan path lengkap ke file untuk digunakan di terminal?

Olivier Lalonde
sumber

Jawaban:

44
readlink -f foo.bar

atau (instal dulu)

realpath foo.bar
spennig
sumber
Jawaban ini lebih akurat daripada yang diterima.
Kunok
Untuk folder lengkap: ls | xargs realpath.
Pablo A
1
Kelemahan dari readlinkini adalah itu akan berfungsi bahkan jika file tersebut tidak ada. Ini dapat mengabadikan bug dengan cara yang sangat aneh.
GregRos
32

Cukup seret dan jatuhkan file di terminal.

Olivier Lalonde
sumber
1
Saya meletakkan ini di sini agar saya tidak lupa, semoga ini membantu beberapa dari Anda: D
Olivier Lalonde
Mengembalikan jalur awalan "smb: //" untuk saham yang dipasang SMB alih-alih jalur terpasang yang sebenarnya.
Kupiakos
@Kupiakos: bagi saya, gnome-terminal dengan senang hati menerjemahkan jalur file yang dijatuhkan ke'/home/alexcohn/.gvfs/…'
Alex Cohn
11

Semua jawaban bagus; Berikut ini tip untuk situasi lain.

Jika Anda meramban file menggunakan nautilus dan Anda ingin path lengkap dari direktori Anda saat ini, kemudian tekan CTRL+L. Ini mengubah tombol remah roti untuk sementara kembali ke bilah alamat gaya lama, memungkinkan Anda untuk menyalin lintasan.

Sicco
sumber
... tapi ini masih smb://bergaya, jadi tidak bisa digunakan kembali di terminal.
Alex Cohn
Menarik; pada sistem saya (Ubuntu 13.10) saya tidak mendapatkan smb://path-style.
Sicco
Persis apa yang saya cari, maksud saya terminal adalah tempat yang bagus untuk ls tetapi ada saat-saat Anda bekerja dalam tampilan folder file: ')
edencorbin
3

Jika ini adalah executable, maka jalankan (di terminal):

$ which your_executable

Sebagai contoh: $ which ls

perseo22
sumber
Ini adalah jawaban yang saya cari
Sharjeel Ahmed
1

Selain menyeret ikon, ada beberapa cara untuk mendapatkan path lengkap tanpa nautilus (atau thunar, konqueror, et al.). Anda kemudian akan klik tiga kali atau klik-seret dan salin, berpotensi menyimpan ini di clipboard manager Anda *, dan menempelkannya di tempat yang Anda butuhkan.
(pastie, klipper, glippy, glipper, anamnesis)

  • Anda dapat menggunakan finddirektori di atas file Anda. (Jika Anda tidak tahu di mana itu, mulailah dari mana shell Anda menjatuhkan Anda, [umumnya] di bagian atas direktori home Anda.)
    find . | egrep filename

  • Anda dapat menggunakan locateuntuk mendapatkan nama file. (Jalankan sudo updatedbjika itu belum dilakukan baru-baru ini.)

Contoh yang lebih realistis dari penggunaan find adalah sesuatu seperti:

$ find | egrep askubuntu | grep txt
./askubuntu-temp.txt
./drDocuments/web/meta.askubuntu.txt
./other/stuff/askubuntu.txt.iteration.1
./other/stuff/askubuntu.txt.iteration.2
[...]

Untuk memotong yang tidak Anda sukai, misalnya:

find | egrep askubuntu | grep txt | egrep -v iteration
find | egrep askubuntu | grep txt | egrep -v 'iteration|meta|other'

loc digunakan dengan cara yang sama, meskipun grep seringkali lebih diperlukan:

locate myfile | egrep home | egrep -v 'mozilla|cache|local|bin|\.pyc|test' | grep \.py

Ini bukan cara paling efisien untuk mengetik ini, tetapi biasanya jika saya kehilangan file, saya melakukannya secara iteratif, menambahkan grep clauses saat saya menggunakannya.

belacqua
sumber
1

Mudah dilakukan dengan python menggunakan os.realpath()fungsi:

$ python -c 'import os,sys;print(os.path.realpath(sys.argv[1]))' ./VirtualBox\ VMs/                                      
/mnt/HDD/VirtualBox VMs

Dari jawaban terkait , Anda juga dapat menggunakanreadlink

$ readlink -e ./out.txt                                                                                                  
/home/username/out.txt
Sergiy Kolodyazhnyy
sumber
0

Jika Anda cukup menyalin file di Nautilus, maka path lengkap disalin.
Kemudian tempel di terminal. Dengan hanya menempelkan Anda mendapatkan:

file:///home/juan/2017/agenda20170101.html

Jika Anda mengklik kanan dan memilih "Tempel nama file" maka Anda mendapatkan:

'/home/juan/2017/agenda20170101.html'

dengan tanda kutip seperti yang ditunjukkan.
Ini berbeda dari Windows, yang menyalin konten file alih-alih namanya.

Juan Lanus
sumber