한 줄짜리 셸에서 다운로드하고 압축을 푼다.

한 줄짜리 셸에서 다운로드하고 압축을 푼다.

나는 인터넷에서 GNU tar의 소스 코드를 얻어야 합니다(http://ftp.gnu.org/gnu/tar/tar-latest.tar.gz) 그리고 쉘의 한 줄에 있는 소스 코드의 모든 파일에 포함된 모든 C 헤더 파일 목록을 추출합니다. 파이프, 특히 wget 명령을 사용해야 한다는 것을 알고 있지만 어떻게 작동하게 만드는지는 모르겠습니다. 수동으로 수행하면 목록은 다음과 같습니다.

Wordsplit.h ws2tcpip.h xalloc.h xalloc-oversize.h xattr-at.h xattrs.h xgetcwd.h xsize.h

답변1

이와 같은 것이 작동하지만 컬과 타르가 있어야 합니다(대부분의 시스템에서 기본적으로 사용 가능).

$ curl -sL -o- "http://ftp.gnu.org/gnu/tar/tar-latest.tar.gz" |tar -tz --wildcards --no-anchored '*.h'
tar-1.29/build-aux/snippet/_Noreturn.h
tar-1.29/build-aux/snippet/arg-nonnull.h
tar-1.29/build-aux/snippet/c++defs.h
tar-1.29/build-aux/snippet/unused-parameter.h
tar-1.29/build-aux/snippet/warn-on-use.h
tar-1.29/gnu/uniwidth/cjk.h
tar-1.29/gnu/argp.h
tar-1.29/gnu/argp-fmtstream.h
tar-1.29/gnu/argp-namefrob.h
tar-1.29/gnu/argp-version-etc.h
tar-1.29/gnu/bitrotate.h
tar-1.29/gnu/c-ctype.h
tar-1.29/gnu/c-strcase.h
tar-1.29/gnu/full-write.h
tar-1.29/gnu/gettext.h
tar-1.29/gnu/localcharset.h
tar-1.29/gnu/mbuiter.h
tar-1.29/gnu/progname.h
tar-1.29/gnu/se-context.in.h
tar-1.29/gnu/se-selinux.in.h
---------many more files follow-------------

또는 grep과 결합할 수도 있습니다.

$ curl -sL -o- "http://ftp.gnu.org/gnu/tar/tar-latest.tar.gz" |tar -zt |grep '/src/.*\.h$'
tar-1.29/src/arith.h
tar-1.29/src/common.h
tar-1.29/src/tar.h
tar-1.29/src/xattrs.h

귀하의 질문을 고려하면"모든 C 헤더 파일 목록 추출"위와 같은 목록이 필요하다고 가정합니다.

이러한 파일의 내용을 얻으려면 .h다음과 같은 방법을 사용하여 내용을 화면에 "덤프"할 수 있습니다.

$ curl -sL -o- "http://ftp.gnu.org/gnu/tar/tar-latest.tar.gz" |tar -xzO --wildcards --no-anchored '*.h'

팁: 더 쉽게 읽을 수 있도록 AND를 |less끝에 넣으세요.

마지막으로 @don_crissti가 화면 덤프 대신 로컬 드라이브에 "*.h" 파일을 추출하도록 제안한 대로 이를 완료하려면 다음을 사용할 수 있습니다.

$ curl -sL -o- "http://ftp.gnu.org/gnu/tar/tar-latest.tar.gz" |tar -xzf - --wildcards --no-anchored '*.h'

tar-1.29.h모든 파일을 포함하는 현재 작업 디렉터리에 새 폴더가 생성됩니다 .

$ ls -ld tar-1.29
drwxr-xr-x 7 root root 4096 Mar 24 01:48 tar-1.29
$ ls -l tar-1.29
total 20
drwxr-xr-x 3 root root 4096 Mar 24 01:48 build-aux
drwxr-xr-x 3 root root 4096 Mar 24 01:48 gnu
drwxr-xr-x 2 root root 4096 Mar 24 01:48 lib
drwxr-xr-x 2 root root 4096 Mar 24 01:48 src
drwxr-xr-x 2 root root 4096 Mar 24 01:48 tests

관련 정보