2014-02-15 00:30:37 +0000 2014-02-15 00:30:37 +0000
43
43

Как показать полный путь к файлу, включая полное имя файла, в терминале Mac OSX?

‘ls’ может показать имя файла, например

ls config.inc.php
config.inc.php

‘pwd’ показать полный путь к текущей папке, например

pwd
/Application/XAMPP/xamppfiles/phpmyadmin

Команда может сложить их вместе, сможет показать:

/Application/XAMPP/xamppfiles/phpmyadmin/config.inc.php

Ответы (8)

31
31
31
2015-09-18 19:36:53 +0000

Отсюда https://stackoverflow.com/a/4031502/804713

макропорты и доморощенный обеспечивают пакет coreutils, содержащий greadlink (GNU readlink). ссылка на пост Майкла Каллвайта в mackb.com

brew install coreutils

greadlink -f file.txt

20
20
20
2014-02-15 00:55:03 +0000

Есть много способов сделать это; вот один пример, который может сработать для вас:

claw:~ jonv$ echo `pwd`/`ls config.in.php`
/Users/jonv/config.in.php

Если вы хотите получить больше примеров, есть куча на this post at stackoverflow.

9
9
9
2016-03-24 06:12:55 +0000

В Mac OSX выполните следующие шаги:

  1. cd в каталог целевого файла.
  2. Введите любую из следующих команд терминала.

Терминал ls "`pwd`/file.txt" echo $(pwd)/file.txt

  1. Замените file.txt своим фактическим именем файла.
  2. Нажмите Enter.
3
3
3
2019-10-17 22:23:18 +0000

Используйте realpath

Например:

$ realpath README.md 
/Users/joe/my/long/directory/structure/README.md

Ответьте здесь на вопрос о переполнении стека: https://stackoverflow.com/a/3915075/441960

FYI, моя версия MacOS (OSX):

$ uname -a
Darwin my-machine 18.7.0 Darwin Kernel Version 18.7.0: Tue Aug 20 16:57:14 PDT 2019; root:xnu-4903.271.2~2/RELEASE_X86_64 x86_64
3
3
3
2019-01-25 01:03:16 +0000

Не понравилось ни одно из данных решений, поэтому я придумал свое собственное на основе https://stackoverflow.com/a/22684652/953327

Создать псевдоним, который просто является вызовом функции, которая сочетает в себе pwd и ls $1. Затем вы можете добавить это в вашу .bash_profile, если вы выберете.

alias lsf='function _lsf(){ echo "$(pwd)/$(ls $1)"; };_lsf'

Пример использования:

lsf registry.lock
-> /tmp/registry.lock

Я выбрал lsf для “list full” или “list file”, имеет смысл для меня, но не стесняйтесь изменять.

  • *

** Обновление (Спасибо @santiago-arizti)** Чтобы иметь возможность использовать его с относительными путями (например, lsf ../../readme.md)

alias lsf='function _lsf(){ (cd $(dirname "$1") && echo $(pwd)/$(basename "$1")) };_lsf'
```.
2
2
2
2019-07-26 22:18:13 +0000

Мне нужно было больше, чем вам нужно, мне нужна была возможность спрашивать о файлах в относительной директории, например ../../readme.md, и в результате должно было получиться что-то вроде /Users/santi/readme.md

Поэтому я создал (исполняемый) скрипт в папке, которая является частью $PATH, называемой lsf, со следующим содержимым:

#!/bin/bash
F=${1:?'usage lsf ../../readme.md'}
( cd $(dirname "$F") && echo $(pwd)/$(basename "$F") )

Так что вы можете использовать его следующим образом:

santi@santis-mac:~/p/dir1/dir2$ lsf ../../readme.md 
/Users/santi/p/readme.md

Никакие параметры не дают вам предупреждение

Fake directory дает вам предупреждение (из-за dirname)

santi@santis-mac:~/p/dir1/dir2$ lsf
/Users/santi/bin/lsf: line 3: 1: usage lsf ../../readme.md

Fake file but real directory doesn’t warning (you can add validation if you need)

santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakedir/readme.md
/Users/santi/bin/lsf: line 5: cd: ../../fakedir: No such file or directory
2
2
2
2018-01-22 10:07:23 +0000

Вы также можете использовать команду “найти” для перечисления всех файлов с полным путем:

find DirectoryName -type f

или просто следующим образом:

find . -type f
1
1
1
2019-02-07 00:12:06 +0000

Ниже приводится файл в рабочей директории, который соответствует file.txt и возвращает его абсолютный путь

find `pwd` -name file.txt
```.