Windows의 명령줄에서 아카이브를 열려고 하면 문제 없이 파일 확장자의 관련 프로그램이 열립니다. 예를 들어 이 명령을 사용하면 .rar 파일을 지원하는 기본 아카이브 관리자를 사용하여 아카이브가 열립니다.
$env:temp/SuperArchive.rar
Linux에서는 아카이브를 열 수 없거나 다음과 같은 명령을 사용하여 추출할 수 없는 이유는 무엇입니까?
~/tmp/SuperArchive.tar.gz
답변1
이는 Windows와 Unix가 프로그램을 로드하는 방식의 디자인 차이 때문입니다. Unix는 기본적으로 애플리케이션 중심입니다. 애플리케이션을 실행하고 해당 애플리케이션에서 일부 파일을 엽니다. 그런 점에서 Windows는 대부분 문서 중심입니다. 사용자가 문서를 열면 Windows가 사용자를 위해 응용 프로그램을 선택합니다.
두 모델 모두 장점과 단점이 있습니다. 기본이 아닌 응용 프로그램에서 문서를 열려고 할 때까지는 Windows가 사용하기 더 쉬운 경우도 있습니다. 아니면 단지 아카이브 내부에 무엇이 있는지 보고 싶을 수도 있습니다. 또는 아카이브의 압축을 다른 디렉토리에 풀고 싶습니다. 또는 현재 디렉터리에 새 문서를 만들고 싶습니다. Unix의 그래픽 파일 관리자는 문서 중심 모델을 구현합니다.
이 설계 결정과 관련하여 Unix는 응용 프로그램의 접근성을 향상시킵니다. 모든 실행 파일은 명령 검색 경로의 여러 디렉터리에 설치되므로 명령줄에서 실행 파일 이름을 입력하여 응용 프로그램을 호출할 수 있습니다. 예를 들어, Ark에서 아카이브를 열려면 다음을 실행하세요 ark myarchive.tar.gz
. 시스템은 일반적으로 해당 특정 애플리케이션에 적합한 파일 이름만 입력하는 데 도움을 줍니다.
당신은 실행할 수 있습니다xdg-open
이 명령은 시스템에서 선택한 응용 프로그램에서 파일을 엽니다. 파일 의 경우 .tar.gz
그래픽 아카이브 관리자를 호출할 수 있습니다. 호출되는 프로그램은 설치된 항목과 그래픽 환경에 따라 다릅니다.
답변2
바이너리 애플리케이션 및 스크립트셰르본실행 가능합니다. 파일은 .gz
실행 가능하지 않으며 파일을 열려면 프로그램이 필요합니다.
설치되면 xdg-utils
관련 프로그램으로 파일을 열 수 있습니다.
xdg-open <file>
답변3
타르의 원래 뜻은시간원숭이증강 현실치버.
이렇게 사용하시면 될 것 같아요
tar cf /dev/rmt0 dir1 dir2
로컬 드라이브에 있는 모든 테이프 의 dir1
내용 을 저장 합니다 .dir2
/dev/rmt0
파일은 다음을 사용하여 읽혀집니다.
tar xf /dev/rmt0 dir2
dir2
로컬 테이프에서만 추출합니다.
UNIX 철학에서는 파일이나 파이프에 보관할 수 있습니다.
tar cf - foo | ( ssh remote "cd /distant ; tar xf - ")
- 로컬에서 원격 호스트의 /distant 디렉토리로 전송
또는
tar cf project.tar foo
project.tar를 누군가에게 메일로 보내세요.
따라서 tar는 결코 자체 추출이 불가능합니다. 유닉스에서 가장 가까운 것은 거의 이런 일을 하는 shar(shell archiver)이다. project.shar
다음 실행 이라는 파일을 받게 됩니다.
sh project.shar
이렇게 하면 로컬 디렉터리의 파일이 축소됩니다(부수적으로 일부 보안 위험이 발생함).
답변4
자동 추출 아카이브에는 바이너리 구성 요소가 필요하며 비표준 실행 환경의 바이너리 구성 요소는 Win-DOS
UNIX와 같은 표준 실행 환경에서 작동하지 않습니다.
또한 UNIX는 소스 코드 표준이므로 UNIX는 고유한 바이너리 표준을 지정하지 않습니다.
UNIX에는 자동 추출 아카이브( .extracting archives 라고 함 shell archies
)가 있지만 이러한 아카이브는 적절한 압축을 제공하지 않는다는 단점이 있습니다.