Intenté usar el ls
comando y obtuve un error:
bash: /bin/ls: cannot execute binary file
¿Qué puedo usar en lugar de este comando?
linux
command-line
ls
jimmij
fuente
fuente
libc*so
ld-linux*so
sash
está disponible en Ubuntu Linux , como shells / sash en el árbol de puertos de FreeBSD, como un paquete Gentoo , así como en otros lugares, incluso directamente de su autor .Respuestas:
Puede usar los comandos
echo
o enfind
lugar dels
:o:
fuente
echo -- *
-n
en el directorio actual, eso se interpretaría como una bandera, no como algo para hacer eco.touch ./-n
rm -rf /tmp/foo && mkdir /tmp/foo && cd /tmp/foo && touch ./-n oops && set -x && ls && echo *
echo
parece no honrar--
, per se . Entonces, ¿cómo esecho -- *
mejorecho "" *
o mejor aúnecho "The file(s) are:" *
?También puede usar el
printf
comando, en lugar de echo:printf
es superior a laecho
de esta situación en la queecho
no no respetar la "doble guión" (--
) para indicar el final de la lista de argumentos (en algunos sistemas, incluyendo Ubuntu 14.04 que es lo que he comprobado en):En este caso, no puede lograr el resultado deseado con
echo
(ya que un archivo llamado-n
se interpreta como una opción, y el doble guión no funciona, por lo que debe usarloprintf
).Tenga en cuenta que siempre debe usar una cadena de formato como la anterior al tratar con datos desconocidos
printf
, ya que de lo contrario podría recibir resultados inesperados (¡gracias a @ G-Man por señalar esto en los comentarios!):Un archivo llamado
\n
se interpreta como una nueva línea porprintf
. Para evitar esto, usamos una cadena de formato paraprintf
(%s
) y le pasamos los nombres de los archivos (expandidos mediante globbing, como antes).Esta
printf
solución de cadena de formato + puede manejar una amplia variedad de nombres de archivo (y también trata archivos "ocultos", es decir, aquellos que comienzan con a.
, lo mismo quels
):Si es
printf
compatible%q
, también puede usar eso (printf '%q\n' *
). Esto escapará a espacios, nuevas líneas, etc. si hay caracteres extraños en sus nombres de archivo. (¡Gracias a @muru en el chat por señalar esto !)fuente
'%s'
(con\n
y / o cualquier otro texto constante que desee). Por ejemplo, prueba los comandostouch '%.0s' foo bar; ls; printf -- *
. Por el contrario, no veo por qué lo necesitas--
cuando tienes una'%s\n'
cadena de formato.--
con la cadena de formato, y he editado mi publicación para abordar la otra cosa.-n
nombre de archivo honestamente no debería ser un problema para POSIX-2001 +echo
- en los sistemas SUSv3echo
se requiere que la utilidad no acepte ninguna opción.bash
Sinecho
embargo, algunos y otros sí manejan la opción, perobash
se pueden compilar con la opción de compilación--enable-xpg-echo-default
para que se comporte correctamente todo el tiempo. Sinecho
embargo, el comportamiento correcto significa siempre interpretar escapes de reacción en sus argumentos. Por lo tanto, cualquier nombre de archivo con un escape de estilo C no se escribiría en la salida con fidelidad,echo
lo traduciría.echo
.Probablemente debería usar las utilidades
file
yuname
para tener una mejor idea de qué demonios está pasando con su máquina. Su error es indicativo de un ejecutable binario compilado para una arquitectura de sistema incompatible con aquel en el que se invoca.En mi máquina
...huellas dactilares...
... porque todo está bien con el mundo allí. Sin embargo, aquí hay una pequeña ejecución de algunos comandos que se ejecutan desde mi tableta Android en una
ssh
conexión a mi escritorio ...fuente
HOME=
cuestión es que puedo hacer~
muchas veces en lugar de hacerlo./arm_ls
, por conveniencia. El punto principal del ejercicio es que no puedo usar el binario arm en mi escritorio x86, y quería que la salidafile
mostrara que es un tipo de binario muy diferente al nativo del sistema, que se muestra en la parte superior. Y así, en lugar de shpw una compilación cruzada completa, elegí copiar un binario incompatible que tenía disponible en mi dev de brazo para mi dispositivo x86 y mostrar los resultados y cómo germinar elbash
error.Usando bash (o muchos otros shells), puede usar la finalización de pestañas para listar archivos:
fuente
Si desea algo más como
ls -l
(tamaño de archivo, permisos, propietario, marcas de tiempo, etc.), entoncesstat -- *
podría ser útil:Alternativamente, si todo lo que desea hacer es escribir mal
ls
, intente en susl
lugar . ;-) (continúe - pruébelo ... puede que tenga que instalarlo)fuente
Hay una utilidad muy similar disponible en muchos sistemas:
De acuerdo con las páginas de información, es equivalente
ls -C -b
, pero es un archivo binario independiente.El beneficio de usar
dir
(en lugar de, por ejemplo, el sistema de finalización de shell) es la disponibilidad de diferentes opciones como ordenar, mostrar archivos ocultos, colorear, etc., al igual que en el estándarls
programa .Por cierto, supongo que su nombre proviene del sistema Windows (o mejor dicho, DOS).
fuente
utilizar
fuente