답변:
여기에서 : https://stackoverflow.com/a/4031502/804713
macports 및 homebrew는 greadlink (GNU readlink)를 포함하는 coreutils 패키지를 제공합니다. mackb.com의 Michael Kallweitt 게시물에 대한 크레딧
brew install coreutils
greadlink -f file.txt
그렇게하는 방법에는 여러 가지가 있습니다. 다음은 귀하에게 적합한 예입니다.
claw:~ jonv$ echo `pwd`/`ls config.in.php`
/Users/jonv/config.in.php
더 많은 예제를 원한다면 이 게시물에 stackoverflow가 있습니다.
주어진 솔루션 중 어느 것이 마음에 들지 않아서 https : //.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
"전체 목록"또는 "목록 파일"에 대한, 나에게 의미가 있지만, 수정 주시기 바랍니다.
업데이트 (감사합니다 @ 산티아고 - arizti) 상대 경로로이를 사용할 수 있도록 (예를 들어 lsf ../../readme.md
)
alias lsf='function _lsf(){ (cd $(dirname "$1") && echo $(pwd)/$(basename "$1")) };_lsf'
lsf ../../readme.md
당신의 버전을 약간 변경 해서 이렇게 전화 해야 했어alias lsf='function _lsf(){ (cd $(dirname "$1") && echo $(pwd)/$(basename "$1")) };_lsf'
나는 당신이 필요로하는 것 이상을 원했고, 같은 상대 디렉토리의 파일에 대해 물어볼 수 있어야 ../../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
어떤 매개 변수도 경고를 제공하지 않습니다
santi@santis-mac:~/p/dir1/dir2$ lsf
/Users/santi/bin/lsf: line 3: 1: usage lsf ../../readme.md
가짜 디렉토리는 (때문에 dirname
) 경고합니다
santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakedir/readme.md
/Users/santi/bin/lsf: line 5: cd: ../../fakedir: No such file or directory
가짜 파일이지만 실제 디렉토리는 경고하지 않습니다 (필요한 경우 유효성 검사를 추가 할 수 있음)
santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakefile.md
/Users/santi/p/fakefile.md
다음은 작업 디렉토리에서 file.txt
절대 경로와 일치 하고 파일을 반환 하는 파일을 찾습니다.
find `pwd` -name file.txt
사용하다 realpath
예 :
$ realpath README.md
/Users/joe/my/long/directory/structure/README.md
stackoverflow에서 여기에 답변 : https : //.com/a/3915075/441960
참고로, 내 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
-f
비 GNU에서 작동하지 않는 이유 와 작동 방법을 생각하고있었습니다. 작동합니다. 감사합니다