너의 데이터 옵션 지정은 매우 낡았다

4075 단어 Linux

개시하다


mattn씨는 다음과 같은 일에 대해 중얼거렸다.
tar 지령에 z 로고를 붙이면 아저씨가 드러난다.-mattn (@mattn_jp) 2018년 3월 7일
그것에 대한 회답.
지금은 자동 판정입니다.-mattn (@mattn_jp) 2018년 3월 7일
나 아저씨야.
이 일대의 처리는 버퍼다.c의 check_compressed_archive 함수로 진행합니다.이번 주제는 여기에 없기 때문에 이 말은 여기까지 하겠습니다.
그러자 아저씨들도 옵션에 대한 이야기에 흥분했습니다.
다시 아저씨가 되면 tar cf-|gzip -9 > foo.tar.gz처럼 따로 실행하고 있습니다.당시 사용한 SunOS나 Solaris의 tar는 z 옵션을 지원하지 않지만 확실하지 않습니다.-Hiroaki Nakamura (@hnakamur2) 2018년 3월 7일
시끄러워, tar하면 xvzf야.(노년피해 - Daisuke Maki(anova)(@lestrat)2018년 3월 7일
좋아!(전쟁 발발 - MURAKA Taro(@kaoriya)2018년 3월 7일
그나저나 내가 펼쳤을 때는 이렇게 썼다.
$ tar xfz archive.tar.gz
그렇다면 지금까지 아무런 의문 없이 읽은 사람은 모두 아저씨다.

옵션 지정 방법


우리 설명서를 좀 봅시다.네, 인터넷에서 본 man은 아직 좋지 않아요. 혼자 하세요man tar.
그러면 xzf든 xfz든 연결 문자가 없는 지정된 방법에 대한 설명이 있습니까?
없습니다.예, 실제로 하이픈이 없는 옵션은 Old Style이라고 지정되어 있으며 이전 형식의 m9입니다(^)Д^)찰싹찰싹지금의 작법은 이렇다.
$ tar -xzf archive.tar.gz
그나저나 이걸 할 수 있는 건 GNU의 tar입니다. BSD의 tar는 다를 수도 있지만 리눅스 얘기입니다.1
참고로 man에는 없지만 info에는 Old Style에 대한 설명이 있습니다.

Old Style을 지정할 때의 동작


참, 갑자기 올드 스타일이 어떻게 처리됐는지 신경 쓰이네요.또한, 내가 좋아하는 지정 방법 xfz는 연결 문자가 있는 것이다
$ tar -xfz archive.tar.gz
tar: z: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now

응, 알아. 하지만 전반적으로 이쪽 행동이 옳았어. 그래서 나는 지금까지도 Old Style에 2라고 썼어. 그건 말도 안 돼. Old Style이 지목되었을 때의 동작이야.이걸 보면 왜'xfz'가 좋은지 알 수 있어요.'-xfz'는 안 돼요.
상응하는 곳은 타다.c의 decodeoptions 함수의 이 일대
뭐 하는지 말해야지.
  • 하이픈 없이 지정하는 경우
  • 하이픈으로 교체 옵션
  • 옵션으로 분리
  • 후속 매개 변수의 유형을 선택할 수 있는 상황에서 집합 옵션의 다음 매개 변수를 끼워넣는다
  • $ tar xfz archive.tar.gz
    
    이러한 지정은 다음 옵션으로 지정된 처리로 나중에 처리됩니다.
    $ tar -x -f archive.tar.gz -z
    
    한편, 처음부터 하이픈이 붙은 상태에서는 이 케어를 할 수 없다.즉
    $ tar -xfz archive.tar.gz
    
    다음과 같습니다.3
    $ tar -x -f z archive.tar.gz
    
    만약 z 파일이 없다면, 파일 오류가 없습니다.

    후기


    xfz파가 구원된 것은 우연인가? 실제로 많은 사람들이 지목(그래서 이를 감안하여 실시했다), 문자와 비옵션 형식의 tar가 연결된 상황에서 어떻게 옵션 해석을 실시하는지 등 수수께끼가 깊어지고 있다.예전부터 사용했던 지령이 호환성을 고려해야 한다는 고생을 보여준 것 같다.Linux나 UNIX의 지령원을 보면 즐겁다고 하더군요.
    아까랑 순서가 다르죠?이렇게 생각하는 사람은 매우 예민하다. 
    그런데 왜 xfz를 선택했을까. tar는 z 옵션을 지원하지 않을 때 배웠기 때문에 x, 파일 지정 f, 압축 후 gzip의 z 지정은 말할 것도 없다. 
    처음부터 하이픈이 있으면 데이터 원본에서 분리되지 않습니다.argp라는 프로그램 라이브러리를 사용했습니다. 

    좋은 웹페이지 즐겨찾기