Puedo mostrar el archivo de destino al que apunta un enlace ls -l
:
snowch$ ls -l /usr/local/bin/mvn
lrwxr-xr-x 1 snowch admin 29 12 Dec 08:58 /usr/local/bin/mvn -> ../Cellar/maven/3.2.3/bin/mvn
¿Hay alguna manera de mostrar menos salida sin tener que canalizar a través de otro comando como awk? P.ej:
snowch$ ls ?? /usr/local/bin/mvn
/usr/local/bin/mvn -> ../Cellar/maven/3.2.3/bin/mvn
Estoy ejecutando 3.2.53 en OS X 10.9.5. La salida de varios comandos se muestra a continuación:
snowch$ ls -H /usr/local/bin/mvn
/usr/local/bin/mvn
snowch$ ls -L /usr/local/bin/mvn
/usr/local/bin/mvn
snowch$ file /usr/local/bin/mvn
/usr/local/bin/mvn: POSIX shell script text executable
snowch$ file -b /usr/local/bin/mvn
POSIX shell script text executable
stat -f "%N -> %Y" -- /usr/local/bin/mvn
funcionó muy bien ¡Gracias!stat -c %N -- /usr/local/bin/mvn
. Para eliminar las citas tuve que canalizar esto| perl -pe 's/['"'"'`]//g'
tr -d \'\`
sería suficiente. Tenga en cuenta que ese sistema RHEL tendría GNUfind
con el que tendrá más control.Usa el
file
comando.o
También, por favor ir a leer a través de la página de hombre
ls
y comprobar las opciones-L
y-H
ver si eso sería suficiente su requisito.fuente
ls
opciones, pero nofile
. Desafortunadamente, ninguno parece funcionar :(linux
caja. Agregueosx
como una de sus etiquetas. Eso también debería llamar la atención de lososx
usuarios. He editado la publicación para agregar la etiqueta, pero no tengo suficientes créditos para que la edición aparezca de inmediato.ls
Al menos con un GNU (y, aparentemente,tcsh
la implementación de) , puede hackear la$LS_COLORS
variable de entorno para insertar delimitadores donde desee (perotcsh
el incorporadols-F
no hace objetivos de enlace, solo indicadores de enlace ) Por lo generalls
inserta escapes de terminal arbitrarios no imprimibles basado en los valores almacenados dentro de ese entorno var, pero no hay nada que nos impida insertar algo arbitrario en su lugar. Más sobre esto aquí .Por ejemplo:
Eso coloca una cadena como
//
el encabezado de cada lista (justo anteslrwcrwx
) y///\n
justo antes del nombre de archivo de cualquier enlace.sed
luego filtra en los rangos de línea:d
elegirá cada línea de entrada hasta que encuentre///
y, a partir de ahí, a través de la siguiente línea que coincida//
, eliminará las líneas que coincidan//
. Por lo tanto, solo obtiene el nombre y el destino del enlace, independientemente de los caracteres que intervienen. Esto se debe a/
que no puede aparecer en un nombre de archivo, y aquellos en cualquier rutals
pueden imprimir solo ocurrirán individualmente.¿Ver?
... que imprime:
Inténtalo tú mismo.
fuente
ls
que admitaLS_COLORS
esa forma--color=always
y las opciones y después de los argumentos? Si está en un sistema GNU, ¿por qué usaría algo complicado si puede usarfind
ostat
? Eso probablemente tampoco funcionará si haces algoln -s /// some-file
.ls
. Recuerdo haber leído eso en otro lugar hace meses acerca de quels
todos tienden a aceptar un término como la sintaxis. Un buen punto sobre elln -s ///
asunto, pero las\0
NUL también funcionan, y de forma-R
ecursiva. En cuanto a por qué, bueno, es fácil de usar. En algunos casos es más fácil quefind
, y parecía un poco más sobre el tema aquí defind
lo que hubiera sido. En cualquier caso, no muchas personas lo consideran, así que lo menciono cuando se me recuerda.tcsh
tienen una versiónls-F
incorporada que admite deLS_COLORS
la misma manera que algunas versiones de GNUls
, pero recurre a la invocaciónls -F
si le pasa alguna opción, por lo que no funcionará aquí a menos quels
sea GNUls
en su sistema.[En Linux / Bash]
Yo haría esto:
El
sed
comando contrae múltiples espacios en un solo espacio; lacut
extrae el campo noveno en adelante donde el campo-separador es un espacio.Salida típica de esto:
Las alternativas son:
Pero esos son imperfectos: el primero puede generar espacios finales; el segundo, espacios principales.
fuente