리눅스 명령어 snippets

리눅스 명령어 snippets

2019, Oct 20    


목차


  • head : 앞쪽 보여주기

  • tail : 뒷쪽 보여주기

  • wc : 몇 줄이 적힌지 보기

  • nl : 줄 번호 보기

  • sort : 정렬

  • uniq : 중복 삭제

  • cut : 텍스트 자르기

  • tr : 텍스트 찾아 바꾸기

  • sed : 줄단위 작업

  • awk : 스크립팅

  • find : 파일 찾기

  • grep : 텍스트 검색

  • apropos : man page 검색

  • locate : 파일 위치 검색

  • which : 실행 파일 위치 검색


  • SSH: 다른 컴퓨터를 리모트로 조작

  • sudo: 임시로 관리자 권한을 얻을 때

  • grep: 다양한 문자열을 한 번에 검색

  • vim: 터미널에서 편집기 사용

  • yank: vim에서 복사, 붙여넣기, 되돌리기 사용

  • 가상 터미널: 갑작스러운 네트워크 끊김에서 복귀

  • 화면 분할: 다른 화면도 보면서 작업이 필요할 때

  • 명령어 이력: 최근 실행한 명령어 호출

  • 명령어 이력 검색: 오래전에 실행한 명령어 호출

  • scp: 네트워크를 건너서 파일을 복사

  • top: 시스템 과부하 파악

  • top 표시 전환: 시스템 메모리 부족 파악

  • 파이프라인: 로그 파일에서 필요한 줄만 추출

  • 쉘 스크립트: 작업 절차 자동화

  • 쉘 변수: 같은 문자열을 스크립트에서 재사용

  • 환경 변수: 작업 환경과 상태를 정해서 스크립트 실행

  • cut: 로그 파일에서 필요한 줄만 추출

  • sort, uniq: 같은 내용의 줄을 카운트

  • sort와 리다이렉트: csv 파일을 열의 내용에 따라 정렬

  • 명령줄 인수: 명령줄 지정으로 작업 내용을 바꾸기

  • 조건 분기: 조건에 따라 처리 흐름 바꾸기

  • 종료 상태: 명령어 이상 종료에 대응

  • for: 같은 처리를 반복

  • 쉘 함수: 공통 처리를 재사용

  • crontab: 정기적인 작업을 자동으로 처리

  • 공개키 인증: 키 인증으로 안전하게 로그인 처리


  • tree : 파일 계층 출력

  • ls : 파일 및 폴더 목록 출력

  • df, du : 디스크 및 하위 디렉토리 용량 확인

  • tar : 리눅스 파일 압축 및 해제


  • 리눅스 명령어의 응용

  • Could not get lock /var/lib/dpkg/lock - open 오류 수정

  • 텍스트파일 내의 행의 갯수를 알고 싶은 경우

  • 리눅스 특정 폴더 이하 파일 개수 세기

  • 텍스트 파일 행 단위 정렬

  • 하부 디렉토리 구조 복사하기

  • 하부 디렉토리 구조 출력

  • zip, unzip을 이용한 분할 압축 및 해제


SSH: 다른 컴퓨터를 리모트로 조작


  • 먼저 SSH란 용어부터 살펴보면 Secure Shell의 약자입니다.
  • 이 뜻은 다른 PC에 네트워크 경유로 로그인해서 자기 앞에 있는 PC처럼 조작할 수 있다는 뜻입니다.
  • 통신 경로는 SSH Tunnel인데 암호화 되어서 안전하고 인터넷 경유라도 IP 주소만 알면 리모트 조작이 가능합니다.
  • 사용 방법은 ssh 사용자명 @IP주소로 사용하면 됩니다.
    • e.g. ssh user@192.168.11.5
  • 단순히 ssh를 사용하여 원격 접속한 경우에는 커맨드라인 환경에서 작업을 해야 하는데 그래픽 환경에서 하고 싶으면 X를 이용해야 합니다.
  • X는 리눅스에서 화면 표시와 입력을 담당하는 구조입니다. 즉, 다양한 어플리케이션에서 받는 입력과 또 그러한 어플리케이션을 그래픽으로 표현하기 위해서는 X를 거쳐야 하고 그역할을 X가 하고 있습니다.
  • 만약 원격 PC를 내 컴퓨터에서 그래픽 환경으로 구성하고 싶으면 원격 PC의 X를 사용하지 말고 내 컴퓨터(클라이언트)의 X를 이용하고 그 결과를 내 컴퓨터에 출력하도록 하면 됩니다.
  • 이렇게 사용하려고 할 때 쓰는 방법이 명령어에 -Y-C를 붙이는 방법입니다. 예를 들어 ``ssh -Y -C user@192.168.11.5`라고 사용할 수 있습니다.
    • -Y는 X 전송 지정을 나타내고 -C는 통신 내용을 압축 하겠다는 뜻입니다. 이렇게 하면 응답 속도가 좋아집니다.
  • 이렇게 접속한 다음에 nautilus라는 명령어를 치면 그래픽 환경이 접근 됩니다.


sudo: 임시로 관리자 권한을 얻을 때


  • 리눅스의 파일에는 3가지 권한이 있습니다. read/write/execute
  • 이 3가지 접근 권한은 파일 소유자에 의해서 수정될 수 있는데 예외적으로 root에 의하여 수정될 수 있습니다.
  • root는 관리자 권한을 가진 특별한 사용자인데 파일 접근 권한을 자유롭게 변경하거나 다른 사람 파일을 수정할 수 있습니다.
  • 우분투에서는 root로 로그인 하는것이 제한되어 있는데 대신에 일반 사용자가 root와 같은 권한을 임시적으로 얻을 수 있도록 할 수 있습니다.
    • 즉, 임시적으로 root와 같은 특권을 사용하려면 그 때마다 암호를 입력하면 됩니다.
  • 이렇게 임시적으로 root의 권한을 암호를 통하여 얻고 싶을 때 사용하는 키워드가 sudo입니다.
  • 만약 그래픽 환경에서 작업을 하고 싶으면 다음과 같이 명령어를 입력해서 새로 뜬 그래픽 창에서는 관리자 권한이 주어집니다.
    • gksudo --sync nautilus
  • 만약 우분투에서 root로 로그인을 하고 싶으면 다음과 같이 명령어를 입력해서 실행할 수 있습니다. 하지만 root로 로그인 하면 자칫 실수로 변경하면 안되는 것을 변경할 수 있으니 주의하셔야 합니다.
    • sudo -i 또는 sudo su


grep: 다양한 문자열을 한 번에 검색


  • grepglobal regular expression print의 약자로 파일 내용을 빠짐없이 확인해서 찾는 문자열이 포함되어 있는지 확인해 줍니다.
  • 사용방법은 grep -r "검색하고 싶은 문자열" 경로 형태로 보통 사용합니다.
    • 여기서 옵션 -r은 서브 폴더까지 검색하도록 지정하는 옵션입니다. 즉, 경로를 시작점으로 하여 그 아래에 있는 서브 폴더 까지 모두 검색하는 것입니다.
    • e.g. grep -r "my name" /home/docs/ 이라고 하면 /home/docs 에서 부터 모든 문서에서 “my name” 이라는 문자열이 들어간 모든 문서를 찾는다는 뜻입니다.
  • 만약 검색할 때 대소문자를 무시하고 검색하고 싶으면 -i 옵션을 사용합니다.
    • e.g. grep -ri "my name" /home/docs/
  • 만약 찾은 문서의 몇번 째 줄에 있는지 알고 싶으면 -n 옵션을 사용합니다.
    • e.g. grep -rin "my name" /home/docs/
  • grep은 이름 그대로 regular expression을 사용하므로 정규식을 사용할 수 있습니다.
  • 정규식은 특수한 기호를 써서 검색하고 싶은 내용을 유연하게 표현하는 서식입니다. (정규표현식 관련 내용)
    • ( ) : 그룹화
    • : 좌우 중 하나
    • ? : 직전 표현이 0회 또는 1회 등장
      • : 직전 표현이 0회 이상 연속하여 등장
      • : 직전 표현이 1회 이상 연속하여 등장
    • . : 임의의 한 문자
    • ^ : 줄 머리
    • $ : 줄 끝
  • 예를 들어 제 이름으로 한번 검색해 보도록 하겠습니다. (KIM JINSOL, 김진솔)
  • 만약에 한영이 섞여 있을 수 있다고 가정해 보면 (KIM JINSOL, KIM 진솔, 김 JINSOL, 김진솔) 이렇게 있을 수 있습니다.
  • 이런 경우에 (김 | KIM)(진솔 | JINSOL) 이란 정규식을 쓰면 한글 영어의 성과 이름을 그룹화 할 수 있습니다.
  • 만약 성과 이름 사이에 스페이스가 있을 수도 있고 없을 수도 있습니다. 이럴 때에는 이렇게 사용하면 됩니다.
  • (김 | KIM) ?(진솔 | JINSOL) 또는 (김 | KIM) *(진솔 | JINSOL) 이렇게 하면 ?* 앞에 스페이스가 있기 때문에 스페이스가 0회 또는 1회, 0회 이상 등장하는 경우도 처리할 수 있습니다.
  • 그러면 실제로 이런 정규 표현식을 grep에서 어떻게 쓰는지 살펴보겠습니다. 정규식을 사용할 때에는 옵션으로 -E를 주어야 합니다.
    • e.g. grep -rinE "(김 | KIM) *(진솔 | JINSOL)" /home/docs


쉘 스크립트: 작업 절차 자동화


  • 쉘 스크립트는 쉘 작업을 자동화 하도록 만든 문서를 말합니다. 단순한 텍스트 파일로 내부는 명령어 실행 절차가 적혀져 있습니다.
  • 쉘 스크립트를 사용해서 명령어를 직접 순서대로 실행하는 대신에 쉘이 실행하도록 맡기면 됩니다.
  • 비교하자면 파이프라인은 명령어 출력을 다음 명령어로 입력하여 옆으로 연결하는 것이라면 쉘 스크립트는 명령어를 세로로 연결하는 것이라고 보면 됩니다.


  • 쉘 스크립트를 만들기 위해서 문서를 편집해야 하는데, 간편한 vim을 써서 쉘 스크립트를 한번 만들어 보겠습니다.
  • 다루어 볼 예제는 컴퓨터 셋업 이라고 하겠습니다. 그러면 vim setup.sh 명령어를 실행하겠습니다.


  • 쉘 스크립트에 가장 먼저 지정해 주어야 하는 것이 shebang 또는 hash-bang이라고 하는 것입니다.
    • 이것은 스크립트를 실행할 프로그램을 지정하는 것인데요
    • 대표적으로 bash, zsh, python, ruby 등등이 있습니다.
  • 이번에 쉘 스크립트를 간략하게 배우기 위해서 사용할 프로그램은 bash 입니다.
    • 그러면 작성할 쉘 스크립트는 bash가 실행하겠다는 의미입니다.
  • 그러면 첫 줄에 #! /bin/bash 라고 입력하겠습니다.
  • 그 다음 줄부터는 bash가 실행할 리눅스 명령어 들을 다음과 같이 입력해 보겠습니다.


Drawing


  • 위 쉘 스크립트를 보면 프로그래밍 지식이 없어도 사용할 수 있는 명령어들 입니다. 그만큼 간단합니다.
  • 첫 줄에는 shebang이 있고 그 다음줄 부터는 리눅스 명령어 들이 나열되어 있습니다.
  • 위와 같이 입력이 끝났으면 vim을 종료해 보겠습니다.


  • 그 다음으로 setup.sh 파일을 실행하려면 실행 권한을 주어야 합니다. 따라서 chmod +x setup.sh로 실행 권한을 부여합니다.
  • 실행을 할때에는 경로에 맞춰서 setup.sh 파일을 실행하고 만약 현재 경로에 있다면 ./setup.sh로 실행합니다.
  • 그러면 스크립트에 있는 명령어 들이 차례대로 실행됩니다.


#! /bin/bash
  
echo "hello"

this line is error
  
echo "hello2"


  • 만약 위와 같은 쉘 스크립트(test.sh)를 입력하면 중간에 this line is error 라는 줄에 의해 에러가 발생합니다.
  • 이 때 출력은 다음과 같습니다.


hello
./test.sh: line 5: this: command not found
hello2 


  • 만약 에러가 나도 계속 실행하는 것이 의도적이라면 위와 같이 입력해 놓으면 됩니다.
  • 만약 에러가 나면 명령을 멈추게 하려면 이렇게 명령어를 작성하면 됩니다.


#! /bin/bash
  
echo "hello"

this line is error
if [ $? != 0 ]; then exit; fi
  
echo "hello2"


  • 중간에 if [ $? != 0 ]; then exit; fi 라는 명령어를 추가해 놓으면 에러가 난 곳에서 스크립트가 멈춥니다.
    • if [ $? != 0 ]; then exit; fi에서 대괄호 사이에는 반드시 스페이스를 입력해 주어야 합니다.
  • 그러면 위 코드에서 hello2를 출력하기 전에 스크립트가 멈추게 됩니다.
  • if [ $? != 0 ]; then exit; fi의 의미를 살펴보면 #?가 뜻하는 것은 마지막으로 실행된 명령어의 상태를 뜻합니다.
  • 상태는 다음과 같이 있고 0인 경우에는 정상 적으로 실행되었다는 뜻입니다. 즉 0이 아니면 오류가 발생하였다는 것이지요.
    • Exit code 0 Success
    • Exit code 1 General errors, Miscellaneous errors, such as “divide by zero” and other impermissible operations
    • Exit code 2 Misuse of shell builtins (according to Bash documentation) Example: empty_function() {}


  • 정리하면 다음과 같습니다.
  • bash용 쉘 스크립트를 작성하려면 텍스트 파일 첫 줄에 #! /bin/bash라고 적고 두번째 줄 이후는 자동 실행하고 싶은 쉘 명령어를 작성합니다.
  • 쉘 스크립트는 chmod +x 파일명으로 실행 권한을 설정합니다.
  • 명령어가 이상이 생겨서 그 시점에서 스크립트 실행을 중단하고 싶을 때, if [ $? != 0 ]; then exit; fi라고 적습니다.


쉘 변수: 같은 문자열을 스크립트에서 재사용


  • vim에서 문서를 작성할 때, 같은 명령어에서 오류가 계속 발생한 상황이라면 한번에 모든 것을 고치는 것이 간편합니다.
  • esc를 이용하여 노멀 모드로 돌아간 다음에 :%s/원문/수정문을 이용하면 다양한 편집기에서 모두 변환하기를 사용할 수 있듯이 똑같이 한번에 변환 됩니다.
  • 만약 어떤 명령어를 계속 사용해야 하면 변수로 지정을 해버릴 수도 있습니다.
  • 예를 들어 var/log/access.log 라는 것이 계속 사용되어야 한다면 log=var/log/access.log로 변수를 지정해 버릴 수 있습니다.
  • 이렇게 변수를 선언하면 vim 또는 GNOME에서 사용 가능해집니다. 사용할 때에는 변수 앞에 $ 를 붙이면 됩니다. 따라서 $log라고 사용하면 그것은 var/log/access.log로 치환됩니다.
  • 변수 선언의 장점은 매번 동일한 명령어를 사용하지 않아도 되는 것에 있으며 이렇게 되면 실수를 하지 않을 수 있습니다.
    • 예를 들어 tar xfv 파일경로는 파일 압축 풀기이고 tar cfv 파일경로는 파일 압축을 하는 것입니다.
    • 이 때, tar_extract="tar xfv"라고 하고 tar_compress="tar cfv"라고 변수 선언을 하면 헷갈리지 않고 사용할 수 있습니다.
    • 이후에는 $tar_extract 또는 $tar_compress와 같이 사용하면 됩니다.


환경 변수: 작업 환경과 상태를 정해서 스크립트 실행


tree : 파일 계층 출력


  • tree 명령어를 이용하면 디스크 전체 및 특정 경로에서의 파일 및 폴더 구조를 tree 형태로 볼 수 있습니다.
  • tree -L depth 명령어를 이용하면 depth의 깊이 까지만 확인 할 수 있어서 데이터가 많을 때 간략하게 볼 수 있습니다.
  • 예를 들어 tree -L 2 라고 하면 $PWD 기준으로 하위 2레벨 까지의 구조만 tree 형태로 보여줍니다.


  • ls : 파일 및 폴더 목록 출력


  • ls 명령어를 이용하면 특정 경로의 파일 및 폴더의 목록을 출력할 수 있습니다. 기본 출력 방식은 파일 및 폴더의 이름 오름차순입니다. 특히 여러가지 옵션을 조합하여 사용하면 원하는 방식대로 출력이 가능합니다. 옵션은 ls -options로 사용하면 됩니다. option들은 여러개 붙여서 사용할 수 있습니다. 예를 들어 ls -al 과 같이 사용하면 됩니다.
  • ls -a : 현재 경로의 전체 목록을 보여줍니다.
  • ls -l : 목록을 1줄 간격으로 출력해 줍니다. 보기 좋아서 이 옵션은 꼭 넣어주시는 것이 좋습니다.
  • ls -t : modify 된 최근 순서대로 보여줍니다.
  • ls -r : option들을 이용하여 조합한 출력 결과를 역순으로 보여줍니다. 예를 들어 ls -tr은 modify가 오래된 순서대로 보여줍니다.


df, du : 디스크 및 하위 디렉토리 용량 확인


  • df -k : 킬로바이트 단위로 현재 남은 용량을 확인합니다.
  • df -m : 메가바이트 단위로 남은 용량을 확인합니다.
  • df -h : 한 줄씩 보기 좋게 정리해서 용량을 보여줍니다. (이 명령어를 사용하길 권장합니다.)
  • df . : 현재 디렉토리가 포함된 파티션의 남은 용량을 확인합니다.


  • 현재 디렉토리 기준으로 용량을 확인하려면 du를 사용하시기 바랍니다.
  • du -a : 현재 디렉토리의 사용량을 파일단위로 출력합니다.
  • du -s : 총 사용량을 확인합니다.
  • du -h : 한 줄씩 보기 좋게 정리해서 용량을 보여줍니다. (이 명령어를 사용하길 권장합니다.)
  • du -d depth : 현재 디렉토리 기준으로 몇 depth 까지 보여줄 지 정합니다. 예를들어 du -d 1 h와 같이 사용할 수 있습니다.
  • du -sh * : 한단계 서브디렉토리 기준으로 보여줍니다.


tar : 리눅스 파일 압축 및 해제


  • 리눅스에서 tar 관련 압축을 할 때, tartar.gz 키워드를 볼 수 있습니다.
  • tar는 리눅스의 압축방식으로 파일을 묶는 역할을 하고 gz는 압축하는 역활을 합니다. 따라서 tar는 파일을 묶어서 하나의 파일로 만드는 역할을 하는 것으로 볼 수 있으면 tar.gz는 묶은 하나의 파일을 압축 하는 용도로 볼 수 있습니다.

  • tar로 압축 : tar -cvf [파일명.tar] [폴더명]
    • 예시 : tar -cvf aaa.tar abc (abc라는 폴더를 aaa.tar로 압축)
  • ` tar 압축 풀기 : tar -xvf [파일명.tar]`
    • 예시 : tar -xvf aaa.tar (aaa.tar라는 tar파일 압축을 풀고자 한다면)
  • tar.gz로 압축 : tar -zcvf [파일명.tar.gz] [폴더명]
    • 예시 : tar -zcvf aaa.tar.gz abc (abc라는 폴더를 aaa.tar.gz로 압축)
  • tar.gz 압축 풀기 : tar -zxvf [파일명.tar.gz]
    • 예시 : tar -zxvf aaa.tar.gz (aaa.tar.gz라는 tar.gz파일 압축)


  • tar를 사용할 때, 옵션을 추가할 수 있습니다. 아래는 tar의 대표적인 옵션입니다.
  • -c : 파일을 tar로 묶음
  • -p : 파일 권한을 저장
  • -v : 묶거나 파일을 풀 때 과정을 화면으로 출력
  • -f : 파일 이름을 지정
  • -C : 경로를 지정
  • -x : tar 압축을 풂
  • -z : gzip으로 압축하거나 해제함


Could not get lock /var/lib/dpkg/lock - open 오류 수정


  • 리눅스에서 sudo apt-get install을 이용하여 패키지를 설치하는 도중 오류가 발생하면 이후에 더이상 패키지 설치가 안되는 경우가 발생합니다.
  • 이것은 패키지가 설치되는 부분에 lock이 발생한 것으로 그 부분에 해당하는 lock을 아래 명령어를 통하여 제거하면 됩니다.


sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock


텍스트파일 내의 행의 갯수를 알고 싶은 경우


  • ls | wc -l 명령어를 이용하면 new line의 갯수를 카운트 할 수 있습니다.


리눅스 특정 폴더 이하 파일 개수 세기


  • 어떤 특정 경로 이하에 존재하는 파일의 갯수를 셀 때, find 명령어와 wc -l을 이용하여 확인할 수 있습니다.


find /폴더/경로 -type f | wc -l


  • 만약 현재 경로 이하의 모든 파일의 갯수를 확인하고 싶으면 경로에 .을 입력하면 됩니다.


find . -type f | wc -l


텍스트 파일 행 단위 정렬


  • sort는 텍스트로 된 파일의 단위 정렬을 할 때 사용하는 명령어 입니다.
  • 행단위 오름차순 정렬 : sort 텍스트파일
  • 행단위 내림차순 정렬 : sort -r 텍스트파일


하부 디렉토리 구조 복사하기


  • 어떤 지점의 하부 디렉토리 전체 구조를 복사하고 싶은 경우 find 명령어와 mkdir 명령어를 이용하여 디렉토리 구조만 복사할 수 있습니다.
  • 명령어 : find path/source -type d -exec mkdir -p path/dest/{} \;
  • 예를 들어 현재 경로 및에 a, b 폴더가 있고 a 폴더 및의 디렉토리 구조를 b 폴더 및으로 복사하고 싶으면 find ./a -type d -exec mkdir -p ./b/{} \;로 나타낼 수 있습니다.


  • 위 명령어를 분석해 보면 다음과 같습니다.
  • find path -type d는 path의 하부 디렉토리를 모두 찾는 명령어 입니다.
  • -exec을 통해 find 명령어의 결과를 이용하여 mkdir를 실행합니다. 이 때, find 명령어의 결과는 mkdir -p path/dest/{}{}에 전달됩니다.
  • mkdir -p에서 -p의 의미는 생성하려는 디렉토리의 중간 경로가 없으면 생성하는 의미입니다. 예를 들어 a/b/c 구조에서 c를 생성하려는데 중간 디렉토리인 b가 없으면 b도 같이 생성하겠다는 의미입니다. 단순히 mkdir을 사용하였을 때, 중간 경로가 없으면 에러가 발생합니다.
  • -exec 명령어의 끝을 알려주기 위하여 \;을 입력해 줍니다. 마치 c언어에서 세미콜론을 찍어서 명령어의 끝을 알려주는 것과 같습니다.


하부 디렉토리 구조 출력


  • 하부 디렉토리 구조를 출력할 때에는 find 명령어와 그 옵션을 잘 이용하면 됩니다. 명령어는 다음과 같습니다.
  • find /path/ -type d -print


zip, unzip을 이용한 분할 압축 및 해제


  • 먼저 리눅스에서 zip, unzip은 추가 설치가 필요하므로 다음과 같이 설치합니다.
  • apt-get install zip unzip


  • 먼저 zip을 이용하여 파일을 압축하는 가장 기본적인 방법은 다음과 같습니다.
    • zip {압축 파일명}.zip {압축할 파일 혹은 디렉토리1} {압축할 파일 혹은 디렉토리2}...


  • 먼저 zip을 이용한 분할 압축 방법은 다음과 같은 형태로 사용 합니다.
  • zip -s 분할압축사이즈 압축결과파일명 압축할파일명 (ex. zip -s 100k -o zipped_file.zip file_to_be_zipped.txt)
  • 위 명령어에서 -s는 사이즈와 관련된 옵션입니다. k (kilobytes), m (megabytes), g (gigabytes) 지정할 수 있습니다. 예) 100k, 200m, 300g
  • 압축 하였을 때, 결과에서 deflated 비율이 퍼센트로 출력됩니다. 얼만큼 압축되었는 지에 대한 비율이고 100에 가까울수록 압축이 잘 된 것으로 볼 수 있습니다.
  • 분할 압축 결과는 예를 들어 다음과 같이 나열 됩니다.


zipped_file.z01
zipped_file.z02
zipped_file.z03
zipped_file.z04
zipped_file.z05
zipped_file.zip


  • 다음으로 분할 압축 해제 방법은 다음과 같이 사용할 수 있습니다.
  • 먼저 분할된 파일을 하나의 파일로 합칩니다.
  • zip -s 0 분할압축된_대표파일 --out 합쳐진압축파일 (ex. zip -s 0 zipped_file.zip –out joined_zip_file.zip)
  • 하나로 합쳐진 압축 파일을 해제합니다.
  • unzip 합쳐진압축파일 (ex. unzip joined_zip_file.zip)