bash :: визуальное различение жестких ссылок на ls

bash :: визуальное различение жестких ссылок на ls

Я используюБашоболочка в 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)

Связанный контент