Как получить список всех файлов в текущем каталоге, второй символ которых является цифрой? [дубликат]

Como ya dijo Gerard H. Pille, esos archivos son ejecutables, diseñados para ser leídos directamente por el sistema operativo y el procesador. Técnicamente, el nombre del formato de archivo es Mach -O, o formato de archivo de objeto Mach .

Con el comando strings, puede ver cualquier cadena de texto sin comprimir dentro de un ejecutable. Si necesita identificar un archivo ejecutable desconocido, esto a veces es útil. Por ejemplo:strings /usr/bin/csrutil | less

Técnicamente, es posible volver a traducir el código de la máquina a una forma más -legible por humanos. A esto se le llama desmontar un ejecutable, y el resultado sería en lenguaje ensamblador específico de cada arquitectura de procesador :por ejemplo, el lenguaje ensamblador de los Mac modernos basados ​​en 64 -Los procesadores Intel x86 de bits serían diferentes del lenguaje ensamblador de los viejos PowerMacs que usaban los procesadores PowerPC de Motorola.

También puede usar una utilidad de depuración , idealmente con el archivo de símbolos de depuración que coincide con el ejecutable que está depurando, para monitorear el funcionamiento interno de un ejecutable en ejecución. O si tiene un problema que hace que un programa se bloquee,podría habilitar volcados de núcleo y luego usar un depurador para analizar el archivo de volcado de núcleo resultante del bloqueo de un programa.

Leer el lenguaje ensamblador no se parece en nada a leer un script de shell :requiere mucha más comprensión de los detalles técnicos del procesador y el sistema operativo. Incluso una operación simple, como la salida de un texto, requiere una serie de instrucciones en lenguaje ensamblador para ubicar la dirección de memoria del texto que se mostrará y luego llamar a la función adecuada del sistema operativo que realmente hace el trabajo.

Sin embargo, existe una advertencia legal :dependiendo de su legislación local, es posible que haya aceptado no desensamblar ningún ejecutable del sistema operativo (si la jerga legal en la que tuvo que hacer clic al instalar el sistema operativo es aplicable)-y la ley de derechos de autor definitivamente restringirá el uso de la información obtenida de dicho desmontaje.

Dado que el sistema operativo macOS es propietario y no de código abierto, probablemente tendría que ser empleado de Apple (o al menos tener una muy buena razón y haber firmado un NDA apropiado )para tener la oportunidad de obtener para ver el código fuente real que produjo cualquier versión publicada de macOS.

0
18.06.2018, 12:45
2 ответа

?[0-9]* только заменяется именами в текущем каталоге , вторым символом которых является цифра. ls, при получении имени каталога, очевидно, покажет содержимое этого каталога, а это значит, что вам придется сказать ls, чтобы он этого не делал.

Вы делаете это сls -d:

ls -d -- ?[0-9]*

или

ls -d./?[0-9]*

--и ./не позволяют lsинтерпретировать первый символ имени файла как вариант, если он начинается с дефиса.

Если вас интересуют только не -каталоги (и вы хотите также отсеять символические ссылки на каталоги ), то есть два очевидных способа сделать это.

  1. Используйте цикл оболочки, проверяя каждое имя, чтобы определить, является ли оно каталогом или нет, и отображайте имя, если это не так:

    for name in ?[0-9]*; do
        [ ! -d "$name" ] && printf '%s\n' "$name"
    done
    

    Чтобы включить файлы, начинающиеся с точки (скрытые файлы ), оболочка может иметь параметр оболочки dotglob, который можно установить перед циклом(shopt -s dotglobвbash).

  2. Используйте findдля поиска не -каталогов (и отсеивания символических ссылок на каталоги )в текущем каталоге:

    find -L. -maxdepth 1 ! -type d -name '?[0-9]*'
    

    Опция -Lдля findзаставляет -type dссылаться на цель любой символической ссылки (, если текущий путь является символической ссылкой ).

1
28.01.2020, 04:20

Вы можете направить ls в egrep, используя такое регулярное выражение:

ls | egrep '.\d.*'
-1
28.01.2020, 04:20

Теги

Похожие вопросы