답변:
Linux 시스템에서는 readlink
GNU coreutils 프로젝트가 설치되어 있어야하며 다음을 수행 할 수 있습니다.
readlink -f file.ext
데비안 / 우분투 시스템에는 " coreutils 패키지 와 거의 같은 기능을 제공하는" realpath 유틸리티가 설치되어 있을 수 있습니다 /bin/readlink -f
.
realpath
있습니다.
대신에 pwd
명령PWD
변수를 사용하십시오 (POSIX에도 있음).
fp () {
case "$1" in
/*) printf '%s\n' "$1";;
*) printf '%s\n' "$PWD/$1";;
esac
}
Windows를 지원해야하는 경우 각 unix 도구 포트에 파일 경로 변환 규칙이 있으므로 절대 경로를 인식하는 것이 더 복잡합니다. Cygwin과 함께 cygpath
유틸리티를 사용하십시오 .
지금 사용하고있는 질문에 대한 답변 :
별칭은 현재 입력중인 위치에서 확장됩니다. 입력 한 내용 :
% fp<SPACE>file.ext
이것은된다
% echo `pwd`<SPACE>file.exe
이를 피하기 위해 함수를 사용할 수 있습니다.
function fp() {
echo `pwd`/"$1"
}
평소처럼 사용할 수 있습니다.
% fp file.ext
echo "`pwd`/$1"
*
다른 파일을 포함하는 디렉토리에있는 파일로 함수를 시도하십시오 ).
fp *
수율 /tmp/4cc3ea0c1b34b
입니다. 다른 매개 변수는 디렉토리의 다른 파일입니다. ' ' 라는 파일이있는 즉시 "*"또는 * 또는 *로 호출하여 함수가 예상대로 작동합니다.
당신이 사용할 수있는:
realpath file.ext
apt-cache search realpath
를 사용하는 경우 coreutils 및 일반 ol ' realpath 패키지 를 표시 할 수 있습니다 둘 다 포함합니다. 그런 다음 sudo apt-get install realpath
(또는 coreutils
)를 입력 하여 설치할 수 있습니다.
에서 /programming//a/3915420/5795941
이것은 나에게 허용되는 유일한 방법입니다. realpath 및 readlink와 같은 링크를 확장하지 않으며 내가 본 모든 고전적인 방법입니다.
#! /bin/sh
echo "$(cd "$(dirname "$1")"; pwd -P)/$(basename "$1")"
readlink -f
(또는realpath
호환성을 위해 유지되는 오래된 유틸리티)은 모든 기호 링크를 추가로 확장하므로 반드시 바람직하지는 않습니다.