Как получить полный путь файла в ударе?

Я хотел бы простой способ получить полный путь в файл. Я в настоящее время ввожу это:

echo `pwd`/file.ext

Пытаясь сократить его, я сделал псевдоним удара:

alias fp='echo `pwd`/'

Но теперь если я ввожу fp file.ext, существует пространство, которое появляется между / и file.ext.

Такая команда уже существует, и я пропускаю ее? В противном случае, как я пошел бы о создании такого псевдонима или функции в ударе?

20
задан 29.07.2014, 20:39

4 ответа

В системах Linux Вы должны иметь readlink от GNU coreutils установленный проект и может сделать это:

readlink -f file.ext

Системам Debian/ubuntu можно было установить realpath утилиту, которую "обеспечивает главным образом той же функциональности как /bin/readlink -f в coreutils пакете."

27
ответ дан 07.12.2019, 10:10

Вместо pwd команда, используйте PWD переменная (это находится в POSIX также):

fp () {
  case "$1" in
    /*) printf '%s\n' "$1";;
    *) printf '%s\n' "$PWD/$1";;
  esac
}

Если необходимо поддерживать Windows, распознавая, что полные пути будут более сложными, поскольку каждый порт инструментов Unix имеет свои собственные правила для перевода путей к файлам. С Cygwin используйте cygpath утилита.

7
ответ дан 07.12.2019, 10:10

для ответа на вопрос с тем, что Вы используете прямо сейчас:

псевдоним расширяется в положении, где Вы вводите прямо сейчас. Вы ввели:

% fp<SPACE>file.ext

это становится

% echo `pwd`<SPACE>file.exe

Вы могли использовать функцию, чтобы избежать что:

function fp() {
    echo `pwd`/"$1"
}

можно использовать это, как обычно:

% fp file.ext
4
ответ дан 07.12.2019, 10:10

Можно использовать:

realpath file.ext
3
ответ дан 07.12.2019, 10:10

Теги

Похожие вопросы