Как вы можете быстро получить полный путь к файлу для использования в терминале?
Как вы можете быстро получить полный путь к файлу для использования в терминале?
Ответы:
readlink -f foo.bar
или (установите его первым)
realpath foo.bar
ls | xargs realpath
.
readlink
является то, что он будет работать, даже если файл не существует. Это может увековечить ошибки очень странными способами.
Просто перетащите файл в терминал.
'/home/alexcohn/.gvfs/…'
Все хорошие ответы; Вот подсказка для другой ситуации.
Если вы просматриваете свои файлы с помощью nautilus и хотите получить полный путь к текущему каталогу, нажмите CTRL+L
. При этом кнопки хлебных крошек временно возвращаются в адресную строку старого стиля, что позволяет копировать путь.
smb://
стиль, поэтому его нельзя использовать в терминале.
smb://
путь в стиле.
Если это исполняемый файл, то выполните (в терминале):
$ 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 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.
Легко сделать в 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, которая копирует содержимое файла вместо его имени.