estoy usandointentoshell en Ubuntu preciso.
soy parcial aenlaces simbólicosenintentoincluso cuando unenlace durotendría más sentido porque se pueden identificar más fácilmente con unes. En cambio, paraenlaces durosTengo que comparar visualmenteinodonúmeros. Esto es más engorroso en comparación con la producción deesen un enlace suave que muestra el objetivo con "-->" y puede tener aplicado un esquema de color diferente. ¿Hay alguna manera de teneres¿Diferenciar visualmente los enlaces físicos de los "archivos normales"? Por ejemplo, ¿quizás coloreando de forma diferente archivos con un recuento de referencias superior a 1?
Entiendo que la pregunta no está formulada correctamente ya que conceptualmente un enlace físico es solo otro nombre para el inodo y, por lo tanto, no se puede distinguir de un "archivo normal" y que no existe el concepto de destino como en los enlaces simbólicos, pero entiendes mi caso de uso.
Respuesta1
ls -l
El resultado muestra la cantidad de enlaces físicos a una entrada del sistema de archivos entre los permisos y el propietario:
$ mkdir foo
$ ls -ld foo
drwxr-xr-x 2 danielbeck staff 68 15 Aug 18:49 foo
Es 2
por defecto para directorios vacíos foo/.
y foo
. Cada subdirectorio agrega uno para su ..
. A menos que esté en OS X y tenga una cordura cuestionable, ese será el único directorio de enlaces físicos que obtendrá.
Los archivos, por supuesto, solo muestran enlaces físicos "reales", por lo que cualquier cosa menos 1
indica que hay un vínculo físico en alguna parte:
$ 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
Mi (BSD/OS X) ls
no tiene opciones relacionadas con enlaces físicos, pero puede escribir su propia función de shell, como la siguiente, que imprime solo el recuento de enlaces físicos y, de lo contrario, es ls -F1
(si ls -l
es demasiado engorroso):
function lss {
OLDIFS="$IFS"
IFS=$'\n'
for line in $( ls -d1 $@ )
do stat -f '%N%T (%l)' "$line"
done
IFS="$OLDIFS"
}
Salida para los dos enlaces duros y un archivo no relacionado qux
:
$ lss bar baz qux
bar (2)
baz (2)
qux (1)