쉘 명령의 소스 코드를 어떻게 읽습니까?


158

리눅스 명령으로 작성된 실제 소스 코드를 읽고 싶습니다. 나는 그것들을 사용하여 약간의 경험을 얻었고 이제는 내 컴퓨터와 더 깊은 수준에서 상호 작용할 때라고 생각합니다.

http://directory.fsf.org/wiki/GNU 에서 몇 가지 명령을 찾았습니다 . 불행히도 나는 시작하기에 충분히 쉬운 것처럼 보이는 'ls'와 같은 기본 명령을 찾을 수 없었습니다.

'ls'와 같은 간단한 쉘 명령의 소스 코드를 정확히 어떻게 읽습니까? 우분투 12.04에서 실행 중입니다.


1
ftp.gnu.org/pub/gnu/coreutils를 방문하십시오 . 온라인으로 코드를 찾아 볼 수 있습니다. 아카이브 중 하나를 열고 src 폴더를 확인하십시오.
Haile

안녕하세요, 유틸리티도 있습니다. util-linux입니다. 여기에서
acgtyrant

1
lsLinux의 일부가 아니라 Gnu의 일부입니다. Gnu는 Linux 및 기타 커널에서 실행됩니다.
ctrl-alt-delor 2012 년

3
github 인터페이스가 코드를 읽기가 더 쉽다는 것을 알게되었습니다. github.com/coreutils/coreutils/blob/master/src/ls.c
zyxue

답변:


168

이러한 기본 명령은 모두 coreutils패키지의 일부입니다 .

필요한 모든 정보는 여기에서 찾을 수 있습니다.

http://www.gnu.org/software/coreutils/

최신 소스를 다운로드하려면 git을 사용해야합니다.

git clone git://git.sv.gnu.org/coreutils

Ubuntu 컴퓨터에 git을 설치하려면 apt-get을 사용해야합니다 (git은 표준 Ubuntu 설치에 포함되어 있지 않습니다).

sudo apt-get install git

사실, 여기 ls명령의 특정 소스를 찾을 수 있습니다 .

http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/ls.c

'쉽게 쉽게'명령에 대한 4984 코드 줄만 ls... 여전히 읽기에 관심이 있습니까? 행운을 빕니다! :디


2
세상에! 나는 그것이 조금 더 쉽다고 생각했다. .. 길은 예상보다 길고 어렵다 :-)
Luigi Tiburzi

21
소스를cat 사용해보십시오 . 767 줄 밖에되지 않습니다.
Drew Noakes

3
Only 4984 code lines ...-4 년 만에 3 개월 ls이 더 복잡한 57 줄이되었습니다.
sherrellbc

3
나는 왜 wc동등한 Java 프로그램보다 그렇게 빠른지 이해하려고 노력했던 것을 기억 합니다. 그래서 코드를 보았습니다 ... OMG는 디스크 읽기, 버퍼링 입력 등에 최적화되어 있습니다 :)
yǝsʞǝla

@ yǝsʞǝlA 나는 C에 능숙하지 않다. 최적화 내용을 어떻게 알 수 있습니까? 예를 들어 주시겠습니까?
Abdul

127

다음의 인기있는 프로그램의 소스로 직접 연결되는 링크 coreutils:

여기에 전체 목록이 있습니다.


4
여러 줄로 된 목록을 작성해 주셔서 감사합니다. :)
Gowtham Gopalakrishnan

당신이 있습니까 su?
Aaron Esau

@Drew, 실제로 쉘 스크립트로 작성된 쉘 명령이 있는지 알고 있습니까?
Rafael


5

http://suckless.org 에서 실제로 더 많은 소스를 제공 sbase합니다.

git clone git://git.suckless.org/sbase

그들은 예를 들면, 명확 스마트, 간단하고 suckless 있습니다 ls.c단지 369 LOC있다

그 후 좀 더 복잡한 GNU 코드를 이해하는 것이 더 쉬울 것입니다.


1

다른 게시물에서 언급 한 CoreUtils는 내가 생각하는 대부분의 기능을 실제로 구현하지는 않습니다. 대부분의 경우 데이터를 검색하는 실제 기능에 대한 프론트 엔드를 제공합니다.

lib-subdirectory 의 실제 소스 코드를 사용하여 Gnulib 를 기반으로 빌드됩니다.


1

다음 명령을 사용하여 github에 가질 수 있습니다

git clone https://github.com/coreutils/coreutils.git

src 폴더에서 모든 소스 코드를 찾을 수 있습니다.

당신은 가질 필요가 자식이 설치되어 있어야합니다.

2012 년 이후 상황이 바뀌었고 ls소스 코드는 이제 5309 줄입니다.


-1
    cd ~ && apt-get source coreutils && ls -d coreutils*     

우분투에서 다음과 같은 명령을 사용하여 패키지의 소스를 수집 할 수 sudo있습니다. 다운로드 한 파일을 소유 한 위치로 가정하면 생략 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.