Я используюБашоболочка в Ubuntu точная.
Я неравнодушен ксимволические ссылкивБашдаже когдажесткая ссылкаимели бы больше смысла, поскольку их можно было бы легче идентифицировать с помощьюлс. Напротив, дляжесткие ссылкиМне нужно визуально сравнитьинодычисла. Это более громоздко по сравнению с выводомлсна мягкой ссылке, которая показывает цель с помощью "-->" и может иметь другую цветовую схему. Есть ли способ иметьлсвизуально отличать жесткие ссылки от "обычных файлов"? Например, можно ли раскрасить файлы с количеством ссылок больше 1 по-разному?
Я понимаю, что вопрос сформулирован неправильно, поскольку концептуально жесткая ссылка — это просто другое название для inode и поэтому неотличима от «обычного файла», и что не существует понятия цели, как в символических ссылках, но вы поняли мой вариант использования.
решение1
ls -l
вывод показывает количество жестких ссылок на запись файловой системы между разрешениями и владельцем:
$ mkdir foo
$ ls -ld foo
drwxr-xr-x 2 danielbeck staff 68 15 Aug 18:49 foo
2
По умолчанию это пустые каталоги foo/.
и foo
. Каждый подкаталог добавляет один для своего ..
. Если вы не используете OS X и не находитесь в сомнительном здравомыслии, это единственные жесткие ссылки на каталоги, которые вы получите.
Файлы, конечно, показывают только «реальные» жесткие ссылки, поэтому все, что не 1
указывает на то, что где-то есть жесткая ссылка:
$ touch bar
$ ln bar baz
$ ls -l bar baz
-rw-r--r-- 2 danielbeck staff 0 15 Aug 18:52 bar
-rw-r--r-- 2 danielbeck staff 0 15 Aug 18:52 baz
У меня (BSD/OS X) ls
нет параметров, связанных с жесткими ссылками, но вы можете написать собственную функцию оболочки, например следующую, которая выводит только количество жестких ссылок, а в противном случае ls -F1
(если ls -l
это слишком громоздко) выводит:
function lss {
OLDIFS="$IFS"
IFS=$'\n'
for line in $( ls -d1 $@ )
do stat -f '%N%T (%l)' "$line"
done
IFS="$OLDIFS"
}
Вывод для двух жестких ссылок и несвязанного файла qux
:
$ lss bar baz qux
bar (2)
baz (2)
qux (1)