Як можна швидко отримати повний шлях до файлу для використання в терміналі?


Відповіді:


44
readlink -f foo.bar

або (встановіть його спочатку)

realpath foo.bar

Ця відповідь точніша за одну прийняту.
Кунок

Для повної папки: ls | xargs realpath.
Пабло А

1
Мінусом readlinkє те, що він буде працювати, навіть якщо файл не існує. Це може увічнити помилок дуже дивними способами.
GregRos

32

Просто перетягніть файл у термінал.


1
Я ставлю це сюди, щоб я не забув, сподіваємось, що він допоможе комусь із вас: D
Олів'є Лалонда

Повертає попередньо встановлений шлях "smb: //" для SMB-спільних ділянок замість фактично встановленого контуру.
Купіакос

@Kupiakos: для мене gnome-terminal із задоволенням переводить шлях до файлу, який випав'/home/alexcohn/.gvfs/…'
Alex Cohn

11

Усі хороші відповіді; Ось порада для іншої ситуації.

Якщо ви переглядаєте свої файли за допомогою nautilus і хочете повний шлях до поточного каталогу, натисніть CTRL+L. Це змінює кнопки сухарі тимчасово назад до адресного рядка старого стилю, що дозволяє скопіювати шлях.


… Але це все-таки smb://стиль, тому його не можна повторно використовувати в терміналі.
Алекс Кон

Цікаво; у моїй системі (Ubuntu 13.10) я не отримую smb://-стильний шлях.
Sicco

Точно те, що я шукав, я маю на увазі, що термінал - це прекрасне місце для ls, але є ті часи, коли ви працюєте в переглядах папок файлів: ')
edencorbin


1

Крім перетягування піктограми, існує декілька способів отримати повний шлях без nautilus (або thunar, konqueror та ін.). Потім ви потрійним клацанням або перетягуванням натискаєте та копіюєте, потенційно зберігаючи це у своєму менеджері буфера обміну * та вставляйте його там, де вам потрібно.
(пасті, кліпер, гліппі, плавник, анамнез)

  • Ви можете використовувати findв каталозі над своїм файлом. (Якщо ви не знаєте, де це, почніть, куди вас скидає ваша оболонка, [як правило] вгорі домашнього каталогу.)
    find . | egrep filename

  • Ви можете використовувати locateдля отримання імені файлу. (Запустити, sudo updatedbякщо цього не було зроблено недавно.)

Більш реалістичним прикладом використання знахідки може бути щось на зразок:

$ 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
[...]

Щоб вирізати ті, що вам не подобаються, наприклад:

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

locate використовується майже однаково, хоча grep часто більш необхідний:

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

Це не найефективніший спосіб набору цього тексту, але зазвичай, якщо я втратив файл, я роблю це ітеративно, додаючи підказки-grep.



0

Якщо ви просто скопіюєте файл у Nautilus, то весь шлях буде скопійовано.
Потім вставте його в термінал. Просто вставляючи:

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

Якщо ви клацніть правою кнопкою миші та виберіть "Вставити імена файлів", ви отримаєте:

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

з цитатами, як показано.
Це відрізняється від Windows, що копіює вміст файлу замість його імені.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.