Вы можете использовать следующий скрипт:
$ cat myll
#!/bin/bash
name="$1"
while [[ -L "$name" ]]; do
ls -l "$name";
name=`readlink "$name"`;
done
Пример вывода:
$ myll /usr/bin/gnome-text-editor
lrwxrwxrwx 1 root root 35 Mar 16 2015 /usr/bin/gnome-text-editor -> /etc/alternatives/gnome-text-editor
lrwxrwxrwx 1 root root 14 Mar 16 2015 /etc/alternatives/gnome-text-editor -> /usr/bin/gedit
Здесь [[ -L "$name" ]]
проверяет, является ли файл ссылкой или нет и readlink "$name"
читает ссылку и сохраняет ее в переменной name
для следующего цикла. И, следовательно, while [[ -L "$name" ]]
зацикливается, пока не будет достигнута исходная цель/файл.
Для второго обходного пути можно использовать:
#!/bin/bash
name="$1"
while [[ -L "$name" ]]; do
echo -n "$name > ";
name=`readlink "$name"`;
done
echo "$name"
Пример вывода:
$ myls /usr/bin/gnome-text-editor
/usr/bin/gnome-text-editor > /etc/alternatives/gnome-text-editor > /usr/bin/gedit
Я думаю, что документация Bash несколько вводит в заблуждение по этому вопросу. Глядя на код, даже возвращаясь к версии 2.04, где были введены сетевые перенаправления, /dev/tcp
и /dev/udp
работают следующим образом:
configure
проверяет, поддерживаются ли различные сетевые функции; если да, то если сетевое перенаправление включено (, что имеет место по умолчанию ), встроен внутренний сетевой код; /dev/tcp
и/dev/udp
(в правильном формате )обрабатываются внутри; в противном случае выдается предупреждение («/dev/ (tcp|udp )/host/port не поддерживается без подключения к сети» )и Bash пытается открыть указанный путь в системе; Это сводится к:
/dev/tcp
и /dev/udp
всегда будут обрабатываться внутри; /dev/(tcp|udp)/host/port
, то он будет использован, иначе, по всей вероятности, перенаправление не удастся; /dev/(tcp|udp)/host/port
, то это будет использоваться, иначе, по всей вероятности, перенаправление не удастся. /dev/tcp
существует в некоторых системах, но, насколько мне известно, ни одна из них не поддерживает ту же абстракцию, что и Bash. В Solaris /dev/tcp
используется с инструментом ndd
для запроса и изменения конфигурации сети. В XTI(см. также открытую группу , если вы являетесь участником ), функцию t_open
можно использовать с /dev/tcp
для открытия TCP-соединения, но она не не используйте настройку на основе пути -, существует отдельная структура данных для указания целевого хоста и порта (и других параметров ).