如何在Mac OSX终端中显示文件的完整路径,包括文件名的完整路径?
‘ls’可以显示文件名,如
ls config.inc.php
config.inc.php
‘pwd’显示当前文件夹的完整路径,如
pwd
/Application/XAMPP/xamppfiles/phpmyadmin
有没有一个命令可以把它们放在一起,能不能显示:
/Application/XAMPP/xamppfiles/phpmyadmin/config.inc.php
‘ls’可以显示文件名,如
ls config.inc.php
config.inc.php
‘pwd’显示当前文件夹的完整路径,如
pwd
/Application/XAMPP/xamppfiles/phpmyadmin
有没有一个命令可以把它们放在一起,能不能显示:
/Application/XAMPP/xamppfiles/phpmyadmin/config.inc.php
从这里 https://stackoverflow.com/a/4031502/804713
macports 和 homebrew 提供了一个包含 greadlink (GNU readlink) 的 coreutils 包。
使用 realpath
E.g.:
$ realpath README.md
/Users/joe/my/long/directory/structure/README.md
这里在 stackoverflow 上回答。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
我不喜欢所有的解决方案,所以我根据https://stackoverflow.com/a/22684652/953327
创建别名,简单来说就是一个函数调用,把pwd
和ls $1
结合起来。
alias lsf='function _lsf(){ echo "$(pwd)/$(ls $1)"; };_lsf'
使用示例:
lsf registry.lock
-> /tmp/registry.lock
我选择了.bash_profile
作为 “list full "或 "list file "的别名,对我来说是有意义的,但可以随意修改。
更新 (感谢 @santiago-arizti)* 为了能够使用相对路径(例如lsf
)
alias lsf='function _lsf(){ (cd $(dirname "$1") && echo $(pwd)/$(basename "$1")) };_lsf'
我想要比你需要的更多,我需要能够询问相对目录下的文件,比如../../readme.md
,结果应该是像/Users/santi/readme.md
这样的结果,所以我在$PATH
的一个文件夹里创建了一个(可执行)脚本,这个文件夹是lsf
的一部分,叫dirname
,内容如下。
#!/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
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
假目录会给你警告(因为&007) &001
假文件但真实目录没有警告(如果你需要的话可以添加验证)
&001