나는 아카이브를 생성하거나 관리하기 위한 Linux/UNIX의 "ar" 명령에 대해 이야기하고 있습니다.
매뉴얼에 따르면 "m" 수정자를 사용하여 아카이브의 멤버를 이동할 수 있습니다. 그러나 아무런 예도 없습니다.
매뉴얼 페이지에는 "수식자 없이 m을 사용하면 멤버 인수에 이름을 지정한 모든 멤버가 아카이브의 끝으로 이동됩니다."라고 나와 있으므로 다음과 같이 작동해야 한다고 생각합니다(그리고 성공했습니다).
$ ar -t out.a
a.txt
b.txt
c.txt
d.txt
$ ar m out.a a.txt
$ ar -t out.a
b.txt
c.txt
d.txt
a.txt
$
"a.txt" 파일이 마지막으로 성공적으로 이동되었습니다.
그러나 "a, b 또는 i 수정자를 사용하여 특정 위치로 이동할 수 있습니다"에 관해서는 문제가 있습니다.
$ ar t out.a
a.txt
b.txt
c.txt
d.txt
$ ar ma out.a a.txt
ar: a.txt: File format not recognized
$
"a"는 앞으로 이동, "b"는 뒤로 이동, "i"는 인덱스로 이동을 의미하는 줄 알았는데, 수식어 뒤에 숫자가 있을 수도 있겠네요. 그래서 나는 다음을 시도한다:
$ ar t out.a
a.txt
b.txt
c.txt
d.txt
$ ar ma 1 out.a a.txt
$ ar t out.a
b.txt
c.txt
d.txt
a.txt
$
"a.txt"는 여전히 끝으로 이동됩니다!
파일을 뒤로 이동하고 싶을 때 여전히 끝으로 이동됩니다.
$ ar t out.a
a.txt
b.txt
c.txt
d.txt
$ ar mb 1 out.a c.txt
$ ar t out.a
a.txt
b.txt
d.txt
c.txt
$
그럼 어떻게 사용하나요?
답변1
~에서ar
내 OpenBSD 시스템에 대한 GNU 문서a
수정자를 설명하세요 .
a Add new files after an existing member of the archive. If you use
the modifier a, the name of an existing archive member must be
present as the relpos argument, before the archive specification.
즉, 지정해야 합니다.이름항목을 이후(또는 이전)로 이동하려면 구성원의 항목을 보관하세요 b
.POSIX 사양 ar
posname
이에 대한 자세한 내용은 설명 (GNU 문서에 나와 있음 )에 나와 있습니다.relpos
posname
상대 위치 지정에 사용되는 아카이브의 파일 이름입니다. 옵션
-m
및 을 참조하세요-r
.
다음을 테스트하십시오( 와 함께 표준 옵션 사용 -
).
$ ar -t out.a
a.txt
b.txt
c.txt
d.txt
a.txt
다음으로 이동한 후 c.txt
:
$ ar -m -a c.txt out.a a.txt
$ ar -t out.a
b.txt
c.txt
a.txt
d.txt
이 i
수정자는 의 별칭입니다 b
.
POSIX에서는 다음과 같이 언급합니다.
-i
피연산자 로 명명된 아카이브의 파일 앞에
posname
( 와 동일 ) 아카이브의 새 파일을 배치합니다-b
.