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


Jawaban:


44
readlink -f foo.bar

atau (instal dulu)

realpath foo.bar

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.


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.


... 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


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.


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

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.