Как вы можете быстро получить полный путь к файлу для использования в терминале?

Как вы можете быстро получить полный путь к файлу для использования в терминале?

readlink -f foo.bar

или (сначала установите его)

realpath foo.bar

Просто перетащите файл в терминал.

Все хорошие ответы; Вот совет для другой ситуации.

Если вы просматриваете свои файлы с помощью nautilus и вам нужен полный путь к вашему текущему каталогу, затем нажмите CTRL+L. Это временно вернет кнопки breadcrumb в адресную строку старого стиля, что позволит вам скопировать путь.

Если это исполняемый файл, то выполните (в терминале):

$ which your_executable

Например: $ which ls

В дополнение к перетаскиванию значка, есть несколько способов получить полный путь без nautilus (или thunar, konqueror и др.). Затем вы должны трижды щелкнуть или перетащить и скопировать, потенциально сохранив это в вашем диспетчере буфера обмена *, и вставить его туда, где вам нужно.
(пирожок, клиппер, глиппи, глиппер, анамнез)

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

  • Вы можете использовать locate чтобы получить имя файла. (Беги sudo updatedb если это не было сделано в последнее время.)

Более реалистичным примером использования find было бы что-то вроде :

$ 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 iterationfind | 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 по ходу дела.

Легко сделать на python с помощью os.realpath() функция:

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

От одного связанный с этим ответ, вы также можете использовать readlink

$ readlink -e ./out.txt                                                                                                  /home/username/out.txt

Если вы просто копируете файл в Nautilus, то копируется полный путь.
Затем вставьте его в терминал. Просто вставляя, вы получаете:

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

Если вы щелкните правой кнопкой мыши и выберите "Вставить имена файлов", то вы получите:

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

с кавычками, как показано на рисунке.
Это отличается от Windows, которая копирует содержимое файла вместо его имени.