* nix에 대한 의심이 있습니다.
ls
.sh 또는 .ksh 또는 다른 종류의 시스템 실행 파일인지 여부에 관계없이 어떤 유형의 실행 파일인지 알 수 없습니다 .ls
명령 의 소스 코드가 어떻게 보이는지 보려고 할 때 읽을 수없는 것을 보여줍니다. * nix는 이러한 유형의 읽을 수없는 파일을 작성하는 데 어떤 방법을 사용하며 내 파일을 이러한 파일과 유사하게 만들 수 있습니다 (예ls
: 읽을 수 없음).
* nix에 대한 의심이 있습니다.
ls
.sh 또는 .ksh 또는 다른 종류의 시스템 실행 파일인지 여부에 관계없이 어떤 유형의 실행 파일인지 알 수 없습니다 .
ls
명령 의 소스 코드가 어떻게 보이는지 보려고 할 때 읽을 수없는 것을 보여줍니다. * nix는 이러한 유형의 읽을 수없는 파일을 작성하는 데 어떤 방법을 사용하며 내 파일을 이러한 파일과 유사하게 만들 수 있습니다 (예 ls
: 읽을 수 없음).
답변:
file
명령과 명령을 사용하여 Unix에서 실행 파일의 특성을 확인할 수 있습니다 type
.
다음 type
과 같이 디스크에서 실행 파일의 위치를 결정하는 데 사용 합니다.
$ type -a ls
ls is /usr/bin/ls
ls is /bin/ls
그래서 나는 그것이 ls
내 시스템의 두 위치에 있음을 알고 있습니다 : /usr/bin/ls
& /bin/ls
. 해당 실행 파일을 보면 동일한 것을 볼 수 있습니다.
$ ls -l /usr/bin/ls /bin/ls
-rwxr-xr-x. 1 root root 120232 Jan 20 05:11 /bin/ls
-rwxr-xr-x. 1 root root 120232 Jan 20 05:11 /usr/bin/ls
참고 :cmp
또는 을 사용하여 크기 이상으로 동일한 지 확인할 수 있습니다 diff
.
$ diff -s /usr/bin/ls /bin/ls
Files /usr/bin/ls and /bin/ls are identical
cmp로
$ cmp /usr/bin/ls /bin/ls
$
file
명령을 사용하여 쿼리하면
$ file /usr/bin/ls /bin/ls
/usr/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0x303f40e1c9349c4ec83e1f99c511640d48e3670f, stripped
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0x303f40e1c9349c4ec83e1f99c511640d48e3670f, stripped
따라서 이들은 C / C ++에서 컴파일 된 실제 물리적 프로그램입니다. 쉘 스크립트 인 경우 일반적으로 다음과 같이 표시됩니다 file
.
$ file somescript.bash
somescript.bash: POSIX shell script, ASCII text executable
ELF는 파일 형식 이며, gcc
C / C ++ 프로그램을 컴파일하는 데 사용되는 컴파일러의 출력입니다 ls
.
컴퓨팅에서 실행 가능 및 연결 가능 형식 (ELF, 이전에는 확장 가능 연결 형식이라고 함)은 실행 파일, 개체 코드, 공유 라이브러리 및 코어 덤프에 대한 일반적인 표준 파일 형식입니다.
일반적으로 파일 이름에 다음 확장명 중 하나가 있습니다. none, .o, .so, .elf, .prx, .puff, .bin
type
사용하려는 곳이면 어디든 사용하는 것이 가장 좋습니다 . which
whereis
md5sum
하거나 sha1sum
, 단지 파일 크기와 시간을 확인하지.
coreutils-8.21-13.fc19.x86_64
, Red Hat 릴리즈를 다루는 20 년 동안 동일하다는 것을 알고 있습니다.
바이너리 실행 파일입니다 (대부분의 시스템처럼 머신 코드로 컴파일됩니다). 쉘 스크립트는 "접착제"와 유사하여 부품을 하나로 결합하여 기존 솔루션으로 빠르고 유연하게 솔루션을 만들 수 있습니다. 이것이 * nix의 힘입니다.
컴파일 된 실행 파일뿐만 아니라 소스 코드 (c, 때로는 c ++는 * nix에서 가장 일반적인 언어 임)가 필요합니다. 오픈 소스이므로 온라인 리포지토리에서 모든 코드를 얻을 수 있습니다 (핵심 유틸리티는 일반적으로 gnu 프로젝트에서 제공). 그러나 git 또는 다른 버전 추적 시스템을 사용하는 방법을 모른다면 약간 까다 롭습니다.
도움이되는 경우 ls.c 파일은 다음과 같습니다. http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/ls.c