tar 명령의 옵션에서 - 는 뭐죠?

잠수오리배의 이미지

안녕하세요.

방금 전에
vi에서 주석 박스를 자동으로 그려준다는 boxes 게시물을 읽고
놀라움을 금치 못해 다운받아 압축을 풀었지만,
명령을 치는데 한참을 버벅거렸습니다.

얼마전에 제대하고 리눅스라는걸 처음 써봐서 아직 모르는게 많은데요,

이건 쫌 이상하다 싶어 글을 올립니다.

boxes-1.0.1.src.tar.gz 파일을 링크를 클릭했더니
boxes-1.0.1.src.tar.tar 파일이 저장되더군요.

뭐, 확장자야 그렇다 치고 고쳤지만,

압축을 풀려고

# tar -xvfz boxes-1.0.1.src.tar.gz
tar: z: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now

하면서.. 왜 안되는 겁니까?

옵션 구문 중에서 '-' 빼고 명령하니까 드디어 실행되던데..

# tar xvfz boxes-1.0.1.src.tar.gz
성공!!

제 구닥다리 노트북의 레드햇 7.1 도움말에는 분명히 옵션 앞에 '-'가 붙여져 있어요.
저는 매우 이상하게 보이는데요...

제가 아직 모르는게 있는건가요? 으....

정태영의 이미지

입력파일 이름을 넣을 위치에 - 를 넣으면 stdin 에서 읽겠다는 얘기입니다 :)

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

랜덤여신의 이미지

음 그게... tar 버전에 따라 플래그 앞에 - 를 붙여서 되는것도 안 되는것도 있습니다.
제 리눅스 시스템에서는 되네요.

혹시 오래된 배포판을 사용하시는 것 아닌가요? 새로운 버전으로 바꿔보세요.

아... 그리고, 정태영님이 말씀하신 - 의 용법은, tar 말고도 vim 이나 wget 같은 많은 명령어가 지원하는 일종의 사투리인데, stdin/stdout 을 의미합니다. 즉 입력 파일을 받을 상황에는 표준 입력(일반적으로 키보드)으로 입력을 받고, 출력 파일을 받을 상황에는 표준 출력(일반적으로 화면)으로 출력하겠다는 겁니다.

예를 들어... ls -al | vim - 하시면... ls -al 의 출력 결과를 vim 으로 편집할 수 있구요.

tar cf - 폴더1 폴더2 | (cd /다른/디렉토리; tar xf -) 하시면 압축했다가 다른 디렉토리에 압축을 해제한 것과 같습니다. 즉, 파일 복사 명령과 동일합니다. 단 파일 복사 명령보다 좋은 점은 권한같은게 온전히 보존된다는 점이죠. cp -a 하고 같은 동작입니다. cp 에 아무런 옵션도 주지 않으면 소유자가 누구인지는 복사하지 않거든요.

이밖에도... ssh 와 - 를 이용해 이쪽 컴퓨터 백업 파일을 다른 컴퓨터에다가 쓴다든지... 이런식의 응용이 가능합니다... +_+

마지막으로, - 는 상황에 따라 /dev/stdin 이나 /dev/stdout 으로 번역된다고 보시면 맞을 겁니다.

익명 사용자의 이미지

tar 옵션은 두가지로 줄 수 있는데요.
tar 다음에 "-" 없이 옵션을 나열하는 방법이 있고, "-"를 붙여서 하나 또는 여러개를 나열하는 방법이 있습니다.
옵션 중에는 파라미터를 요구하는 게 있는데 "f"가 그 예죠. 파일 이름이 있어야 합니다. "-" 없이 한다면
tar xzvf filename.tar.gz
과 같이 할 수 있습니다. 이 때 xvfz 로도 되는데 이것은 다른 옵션이 파라미터를 요구하지 않기 때문에 가능한 것이죠. "-"를 사용하지 않을 경우에는 파라미터들을 해당하는 옵션들 순서대로 나열해 주어야 합니다.
tar -xvfz filename.tar.gz 으로 했을 때 에러가 난 것은 f 다음에 있는 것을 파일 이름으로 인식하기 때문입니다. 즉, z를 파일이름으로 받아들이기 때문입니다. 그래서
tar -xvzf filename.tar.gz 으로 하시면 될 겁니다.
tar -x -f filename.tar.gz -vz
이렇게도 되고요.
두 방식의 혼합 사용도 가능합니다.
지금은 "-"를 붙이는 방식을 권장한답니다.

잠수오리배의 이미지

앗;;;

정말 감사합니다. 어쩜 그리 잘 아시는지... 대단하시네요!!

덤으로 다른 것들을 알게되어서 좋아요~~

답변 주신 분들 정말 감사드립니다 :lol:

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.