Intenté usar el lscomando 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*sold-linux*sosashestá 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
echoo enfindlugar dels:o:
fuente
echo -- *-nen el directorio actual, eso se interpretaría como una bandera, no como algo para hacer eco.touch ./-nrm -rf /tmp/foo && mkdir /tmp/foo && cd /tmp/foo && touch ./-n oops && set -x && ls && echo *echoparece no honrar--, per se . Entonces, ¿cómo esecho -- *mejorecho "" *o mejor aúnecho "The file(s) are:" *?También puede usar el
printfcomando, en lugar de echo:printfes superior a laechode esta situación en la queechono 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-nse 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
\nse 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
printfsolució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
printfcompatible%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\ny / 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.-nnombre de archivo honestamente no debería ser un problema para POSIX-2001 +echo- en los sistemas SUSv3echose requiere que la utilidad no acepte ninguna opción.bashSinechoembargo, algunos y otros sí manejan la opción, perobashse pueden compilar con la opción de compilación--enable-xpg-echo-defaultpara que se comporte correctamente todo el tiempo. Sinechoembargo, 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,echolo traduciría.echo.Probablemente debería usar las utilidades
fileyunamepara 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
sshconexió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 salidafilemostrara 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 elbasherror.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 susllugar . ;-) (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ándarlsprograma .Por cierto, supongo que su nombre proviene del sistema Windows (o mejor dicho, DOS).
fuente
utilizar
fuente