28 lines
743 B
Markdown
28 lines
743 B
Markdown
# readlink
|
|
|
|
Replicate `readlink -f` as bash script using mainly dependencies available on most platforms:
|
|
|
|
* `readlink` (without options)
|
|
* `cd`
|
|
* `pwd -P`
|
|
* `dirname`
|
|
* `basename`
|
|
* `test -e` (as `[ -e <file> ]`)
|
|
|
|
# Known issues
|
|
|
|
* When `readlink` is part of a pipe some links contain the current pipe described like `pipe:[123456]` where the number changes on every call.
|
|
`readlink` resolves these as valid links.
|
|
|
|
e.g.
|
|
```
|
|
$ readlink -f /dev/stdout
|
|
/dev/pts/0
|
|
|
|
$ readlink -f /dev/stdout | cat
|
|
/proc/737861/fd/pipe:[2332393]
|
|
|
|
$ ./rdlink.sh /dev/stdout
|
|
|
|
```
|
|
Whereas `rdlink` is not able to evaluate such links, because the pipe is already invalid as soon as a expression like `result="$(readlink "${tocheck}")"` returns. |