2010-08-21 20:21:57 +0000 2010-08-21 20:21:57 +0000
167
167

¿Qué significa el asterisco después de un nombre de archivo cuando se escribe `ls -l`?

He hecho un ls -l dentro de un directorio, y mis archivos se muestran así :

james@nevada:~/development/tools/android-sdk-linux_86/tools$ ll
total 9512
drwxr-xr-x 3 james james 4096 2010-05-07 19:48 ./
drwxr-xr-x 6 james james 4096 2010-08-21 20:43 ../
-rwxr-xr-x 1 james james 341773 2010-05-07 19:47 adb*
-rwxr-xr-x 1 james james 3636 2010-05-07 19:47 android*
-rwxr-xr-x 1 james james 2382 2010-05-07 19:47 apkbuilder*
-rwxr-xr-x 1 james james 3265 2010-05-07 19:47 ddms*
-rwxr-xr-x 1 james james 89032 2010-05-07 19:47 dmtracedump*
-rwxr-xr-x 1 james james 1940 2010-05-07 19:47 draw9patch*
-rwxr-xr-x 1 james james 6886136 2010-05-07 19:47 emulator*
-rwxr-xr-x 1 james james 478199 2010-05-07 19:47 etc1tool*
-rwxr-xr-x 1 james james 1987 2010-05-07 19:47 hierarchyviewer*
-rwxr-xr-x 1 james james 23044 2010-05-07 19:47 hprof-conv*
-rwxr-xr-x 1 james james 1939 2010-05-07 19:47 layoutopt*
drwxr-xr-x 4 james james 4096 2010-05-07 19:48 lib/
-rwxr-xr-x 1 james james 16550 2010-05-07 19:47 mksdcard*
-rw-r--r-- 1 james james 205851 2010-05-07 19:48 NOTICE.txt
-rw-r--r-- 1 james james 33 2010-05-07 19:47 source.properties
-rwxr-xr-x 1 james james 1447936 2010-05-07 19:47 sqlite3*
-rwxr-xr-x 1 james james 3044 2010-05-07 19:47 traceview*
-rwxr-xr-x 1 james james 187965 2010-05-07 19:47 zipalign*

¿Qué significa ese asterisco?

También soy incapaz de ejecutar un archivo en particular, de la siguiente manera

james@nevada:~/development/tools/android-sdk-linux_86/tools$ ./emulator 
bash: ./emulator: No such file or directory

EDIT : Estoy intentando que Eclipse utilice emulator, pero sigue quejándose de que el archivo no existe, y sin embargo está aquí?

Respuestas (5)

81
81
81
2010-08-21 21:14:02 +0000

Ignacio Vazquez-Abrams ya ha explicado lo del * :

Significa que el fichero es ejecutable. Se muestra un clasificador cuando se pasa -F a ls a través de la línea de comandos o de otra manera.

En cuanto al emulator que parece ejecutable y que en realidad no se puede ejecutar, esto puede ocurrir cuando el cargador dinámico solicitado por emulator no existe. Puedes comprobar qué tipo de archivo es emulator con el comando file emulator, y comprobar qué cargador dinámico y bibliotecas necesita con ldd emulator (cualquier línea que muestre “no encontrado” es algo que necesitas instalar).

Dado el nombre del directorio y el tamaño del archivo, emulator es probablemente un binario Linux x86. Sospecho que tienes un sistema amd64. Si es así, necesitas instalar un entorno de ejecución para aplicaciones de 32 bits; en Ubuntu, necesitas el paquete ia32-libs (y quizás también ia32-libs-gtk).

También podrías obtener este mensaje de error para un script cuyo intérprete, como se indica en la línea #!, no existe.

80
80
80
2010-08-21 20:27:26 +0000

Significa que el archivo es ejecutable. Se muestra un clasificador cuando se pasa a -F a través de la línea de comandos o de otra manera.

35
35
35
2010-08-21 22:24:06 +0000

De info ls:

`-F'
`--classify'
`--indicator-style=classify'
     Append a character to each file name indicating the file type.
     Also, for regular files that are executable, append `*'. The file
     type indicators are `/' for directories, `@' for symbolic links,
     `|' for FIFOs, `=' for sockets, `>' for doors, and nothing for
     regular files.
21
21
21
2012-11-05 16:30:44 +0000

Ubuntu (12.04, y probablemente otras versiones también) incluye la siguiente configuración por defecto:

alias ll='ls -alF'

Y como otros han explicado, -F es responsable del asterisco.

IPython utiliza automáticamente la bandera F bajo el capó (por defecto), por lo que sólo introduciendo ls producirá el efecto que estás viendo allí.

Editar: por cierto, estás afirmando que estás ejecutando ls -l, ejecutar ll puede no ser lo mismo en absoluto.

9
9
9
2010-08-22 01:54:36 +0000

Como otros han mencionado, la opción -F de ls marcará los ejecutables con el asterisco. Usted no tiene un -F en su línea de comandos, pero es probable que el ls tenga un alias. Puedes comprobar los alias en el shell que elijas (en bash, usa el comando incorporado alias para listar los alias), o escapa el comando ls con una barra invertida para desactivar el alias.