Пакеты Debian могут включать установленный размер, но я не полагаю, что RPMs имеют эквивалентное поле. Это можно вычислить на основе файлов, включенных в пакет, но также и нельзя положиться из-за действий, которые могут быть приняты пред/сообщение сценарии установки.
Вот довольно хорошая ссылка для сравнения некоторых определенных функций, которые доступны для каждого определенного упаковочного формата: http://debian-br.sourceforge.net/txt/alien.htm (согласно веб-серверу, тот документ довольно стар: измененный в последний раз: Sun, 15 октября 2000 таким образом, это не могло бы быть лучшей ссылкой.)
Попробуйте эту строку:
readlink -f `which command`
Если command
находится в Вашем $PATH
переменная, иначе необходимо указать путь, который Вы знаете.
В соответствии с Linux, readlink
читает содержание символьной ссылки, и readlink -f
следует за символьными ссылками на символьные ссылки на символьные ссылки, и т.д., пока это не находит что-то, что не является символьной ссылкой.
Это не необходимо для scp хотя: scp всегда следует за символьными ссылками (он всегда копирует содержание файла, игнорируя метаданные за исключением того, что -p
сохраняет времена файла и режимы когда возможный).
Если Вы находите себя разочарованными тем, какие метаданные scp могут и не могут сохранить, я предлагаю использовать rsync. Без опции rsync копирует содержание файла, игнорирующее метаданные. Наиболее часто используемая опция -a
сохраняет все метаданные разнообразия сада (времена, символьные ссылки, полномочия и владение), и существуют опции сохранить экзотические метаданные как ACLs и жесткие ссылки.
Статистика даст Вам эту информацию:
$ stat current
File: `current' -> `/home/user/releases/build/'
...
Вы можете выполнить
readlink -f `which command`
или получить что-то подобное в Linux с помощью
stat `which command` | grep File
. Если вы добавляете это в сценарий, проверьте ошибку. Если вы не хотите видеть сообщение об ошибке в случае отсутствия символьной ссылки, используйте что-то вроде
readlink -f "`which command`"
Я использую команду ls
, stat
, readlink
.
В качестве примера возьмем файл / etc / localtime
[flying@lempstacker ~]$ ls /etc/localtime
/etc/localtime
[flying@lempstacker ~]$ ls -l /etc/localtime
lrwxrwxrwx. 1 root root 35 Aug 2 22:41 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai
Использование stat
[flying@lempstacker ~]$ stat /etc/localtime
File: ‘/etc/localtime’ -> ‘../usr/share/zoneinfo/Asia/Shanghai’
Size: 35 Blocks: 0 IO Block: 4096 symbolic link
Device: fd01h/64769d Inode: 272202388 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-11-23 09:00:59.999887800 +0800
Modify: 2016-08-02 22:41:26.090389904 +0800
Change: 2016-08-02 22:41:26.090389904 +0800
Birth: -
[flying@lempstacker ~]$ stat -c "%N" /etc/localtime
‘/etc/localtime’ -> ‘../usr/share/zoneinfo/Asia/Shanghai’
Использование readlink
[flying@lempstacker ~]$ readlink /etc/localtime
../usr/share/zoneinfo/Asia/Shanghai
[flying@lempstacker ~]$ readlink -f /etc/localtime
/usr/share/zoneinfo/Asia/Shanghai
Похоже, эта команда readlink -f
лучше.
-f, --canonicalize: канонизировать, рекурсивно переходя по каждой символической ссылке в каждом компоненте данного имени; все компоненты, кроме последнего, должны существовать —— Из
man readlink
Я бы использовал realpath
.
Возможно, то, что вы называете "источником", является "целевым" файлом в соответствии с использованием ln
: Использование: ln [OPTION]... [-T] TARGET LINK_NAME
readlink -f 'какая java'
у меня не работает.
Но это сделало:
readlink -f $(which java)
На MAC OX параметр «-f» не работает, «readlink» работает без каких-либо параметров.
KZs-MacBook-Pro:bin kz$ readlink -f pip3
readlink: illegal option -- f
usage: readlink [-n] [file...]
KZs-MacBook-Pro:bin kz$ readlink pip3
../../../Library/Frameworks/Python.framework/Versions/3.7/bin/pip3
Ниже приводится полный путь, разрешающий символическую ссылку.
which [symlink] | xargs realpath
Для macOS Catalina попробуйте-
readlink -n `which command`
-f
возвратит путь к несуществующей заключительной цели, пока цели промежуточного канала существуют... Использовать-e
избегать этого, т.е.-e
возвратит пустой указатель, если заключительная цель не будет существовать. – Peter.O 06.10.2011, 07:31-f
с ошибками сreadlink: illegal option -- f
в OSX. Удаление его хорошо работало. – Heath Borders 13.11.2013, 18:44greadlink
вместо этого. – Adam Gent 22.08.2016, 17:47