Linux에서 "install" 명령을 사용하여 파일을 복사하는 방법

게시 됨: 2022-01-29
Ubuntu Linux 데스크탑에서 Bash의 컨셉 아트
Fatmawati Achmad Zaenuri/Shutterstock.com

install 은 Linux 및 macOS의 다목적 파일 복사 명령입니다. 효율성을 원하는 고급 사용자에게 적합합니다. 이 기사를 읽고 더 열심히 일하지 않고 더 스마트하게 일하는 방법을 알아보세요.

잠시만요. 소프트웨어 설치용이 아닙니까?

install 명령은 Linux 명령 중 가장 오해의 소지가 있는 이름을 가질 수 있습니다. 실제로 소프트웨어를 설치하지 않습니다. Ubuntu 또는 다른 Debian 기반 배포의 명령줄에서 소프트웨어 패키지를 설치하려는 경우 apt-get 명령을 사용합니다. 다른 Linux 배포판에서는 Linux 배포판의 패키지 관리 도구를 대신 사용하십시오(예: Fedora의 dnf 또는 openSUSE의 zypper ).

그래서 설치는 무엇을합니까?

간단히 말해서 installcp (복사), chown (소유자 변경), chmod (모드 변경), mkdir (디렉토리 만들기) 및 strip (기호 제거) 명령의 요소를 결합합니다. 한 번의 작업으로 모든 기능을 사용할 수 있습니다.

install 명령은 다음을 수행할 수 있습니다.

  • cp 명령과 같은 파일을 복사합니다.
  • 기존 파일을 덮어쓸지 여부를 선택합니다.
  • mkdir 과 같이 대상 디렉토리가 존재하지 않는 경우 생성합니다.
  • chmod 명령과 마찬가지로 파일의 사용자 권한 플래그를 설정합니다.
  • chown 명령과 마찬가지로 파일의 소유자를 설정합니다.
  • strip 명령과 마찬가지로 실행 파일에서 불필요한 수하물을 제거하십시오.

이러한 모든 기능에도 불구하고 install 명령에는 경쟁할 수 있는 옵션이 너무 없습니다.

매뉴얼 페이지 설치

언제 사용하시겠습니까?

install 명령은 아마도 매일 사용되지 않을 것입니다. 유용하지만 특정 상황에서만 사용할 수 있습니다. install 자체가 발생하는 한 가지 시나리오는 소프트웨어 개발입니다. 새 유틸리티를 프로그래밍한다고 가정해 보겠습니다. 개발 환경 외부에서 테스트를 수행해야 합니다. 그렇게 하려면 새 프로그램 파일을 테스트 디렉토리에 복사해야 합니다. 테스트 디렉토리를 생성해야 할 수 있으며 파일에 대한 올바른 권한과 소유권을 설정해야 합니다.

광고

개발은 반복적인 활동이기 때문에 이러한 일련의 작업을 여러 번 수행하게 될 수 있습니다. install 명령은 모든 어려운 작업을 수행합니다. 마지막으로 새 유틸리티를 배포할 준비가 되면 install 을 사용하여 올바른 권한으로 최종 작업 위치에 복사할 수 있습니다.

프로그래머는 ana 라고 하는 새로운 유틸리티에 대해 작업하고 있습니다. 실행 가능한 바이너리 파일과 데이터베이스로 구성되어 있습니다. 테스트 후 Linux 시스템의 모든 사용자가 사용할 수 있도록 /usr/local/bin 에 복사해야 합니다. install 을 사용할 때 컴퓨터에서 사용 중인 파일 및 경로를 이 예제의 파일 이름과 디렉토리 경로로 대체해야 합니다.

릴리스 준비가 될 때까지 ~/test/ana 라는 디렉토리에서 테스트됩니다. geek 그룹의 구성원은 읽기 및 실행 권한을 갖습니다. 다른 사용자도 읽기 및 실행 권한을 갖습니다. install 명령은 chmod 와 동일한 숫자 표현을 사용하여 권한에 사용합니다. 우리 프로그래머는 권한을 다음과 같이 설정해야 한다고 결정했습니다.

  • 소유자: 읽고, 쓰고, 실행합니다.
  • 그룹: 읽고 실행합니다.
  • 기타: 실행만 합니다.

install 명령을 사용하는 방법

가상 프로그래머의 작업 디렉토리는 ~/work 입니다. 그는 프로그램을 작성하고 컴파일했으며 ana 라는 바이너리를 생성했습니다. 그는 이미 ana 가 작동하는 데이터베이스 파일인 Words.db 를 만들었습니다. 따라서 두 파일 모두 테스트할 준비가 되었습니다. 그것들을 살펴봅시다:

 ls -l ana Words.db 

그가 방금 작성한 ana 유틸리티는 명령줄에 제공된 문구에서 아나그램을 생성합니다. 검증 테스트는 매우 간단합니다.

작업 디렉토리에서 ana 유틸리티 테스트

우리 프로그래머는 "biscuit"라는 문구로 ana 를 호출했고 모든 것이 잘 된 것 같습니다. 그는 이제 이 두 파일을 ~/test/ana 디렉토리에 복사하여 새 유틸리티가 개발 환경에서 제대로 작동하는지 확인하려고 합니다. 그는 다음 명령을 내립니다.

 설치 -D -v ana Words.db -t ~/test/ana 

/test/ana에 명령 설치

명령줄에 사용된 옵션은 다음과 같습니다.

  • D : 필요한 경우 부모 디렉터리를 포함하여 디렉터리를 만듭니다.
  • v : 상세, 작성된 각 디렉토리와 수행되는 각 파일 복사를 나열하십시오.
  • t : 대상 디렉토리.
광고

install~/test 디렉토리를 생성한 다음 ~/test/ana 디렉토리를 생성하는 것을 볼 수 있습니다. 파일은 대상 디렉토리에 복사될 때 하나씩 나열됩니다.

~/test/ana 에 있는 파일을 나열하면 파일이 올바르게 복사되었음을 확인할 수 있습니다.

 ls -l 

ls /test/ana 디렉토리

다음 단계는 ~/test/ana 디렉토리에서 ana 유틸리티를 호출하여 테스트하는 것입니다.

/test/ana 디렉토리의 ana 유틸리티 테스트

유틸리티는 예상대로 작동합니다. 훌륭합니다. 그러나 권한이 올바르지 않습니다. 요구 사항은 그룹 geek 의 구성원이 읽기 및 실행 권한을 갖도록 설정하고 다른 사용자는 실행 권한만 갖도록 설정하는 것입니다.

다음 명령으로 이 두 가지 문제를 아주 간단하게 해결할 수 있습니다. sudo 를 사용하여 루트 권한으로 명령을 실행합니다. -o-g 및 옵션에는 이것이 필요합니다. 명령을 실행할 때 암호를 묻는 메시지가 표시됩니다.

 sudo install -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana 

백업 옵션 및 권한 설정이 있는 install 명령

  • -b (백업) 옵션은 덮어쓰기 전에 파일의 백업을 만듭니다.
  • -S (접미사) 옵션은 백업 파일의 접미사를 정의합니다. 접미사를 제공하지 않으면 ~ (물결표)가 사용됩니다. .bak 접미사를 사용하도록 install 를 요청합니다.
  • -o (소유자) 옵션을 사용하여 파일 소유자를 dave 로 설정합니다.
  • -g (그룹) 옵션에는 그룹 이름이 필요합니다. 이것은 파일의 소유자 그룹이 됩니다. 우리가 사용할 그룹은 geek 입니다.
  • -m (모드) 옵션은 표준 chmod 숫자 구문을 사용하여 파일의 파일 모드를 설정합니다.

테스트 디렉토리가 이미 존재한다는 것을 알고 있기 때문에 더 이상 -D (디렉토리 생성) 옵션을 사용할 필요가 없습니다. -v (verbose) 옵션도 생략했습니다. ~/test/ana 디렉토리에 있는 파일을 나열하면 파일 세부 정보가 표시됩니다.

 ls -l 

ls /test/ana 디렉토리

이것은 우리의 모든 요구 사항이 충족되었음을 확인합니다.

  • 파일이 테스트 디렉토리로 복사되었습니다.
  • 권한이 올바르게 설정되었습니다.
  • dave 는 파일의 소유자입니다.
  • geek 그룹은 두 파일의 소유자 그룹입니다.
  • ana.bak 및 Words.db.bak이라는 각 파일의 백업 복사본이 만들어졌습니다.
광고

이 모든 것은 하나의 명령을 사용하여 달성되었습니다. 정돈 된.

우리 프로그래머는 유틸리티를 최종적으로 변경하고 다시 컴파일합니다. 변경된 파일은 ~/work 디렉토리에서 ~/test/ana 디렉토리로 복사해야 합니다. -C (비교) 옵션을 사용하여 이를 수행할 수 있습니다. 원본 파일과 대상 파일이 동일한 경우 원본 파일이 복사되지 않습니다.

 sudo install -C -b -S .bak -o dave -g 괴짜 -m 751 ana Words.db -t ~/test/ana 

-C 비교 옵션을 사용하여 명령 설치

대상 디렉토리의 파일을 나열하면 ana 파일의 파일 크기가 변경되었음을 알 수 있습니다. ana.bak 파일보다 큽니다. ana 의 타임스탬프도 변경되었습니다. 이러한 변경 사항은 파일의 새 버전이 여기에 복사되었기 때문입니다.

 ls -l 

test fo ana 유틸리티가 있는 /test/ana의 ls

Words.db 파일의 파일 크기와 타임스탬프는 변경되지 않았습니다. Words.db 파일은 변경되지 않았으므로 복사되지 않았습니다. 많은 파일이 있는 프로젝트에서 -C (비교) 옵션은 변경된 파일만 복사하여 많은 시간과 하드 드라이브 변동을 절약할 수 있습니다.

프로그래머는 ana 유틸리티가 계속 작동하는지 다시 테스트했습니다.

이제 install 을 사용하여 파일을 /usr/local/bin 디렉토리에 복사할 차례입니다. 이렇게 하면 이 Linux 컴퓨터의 모든 사용자가 새 유틸리티를 사용할 수 있습니다. /usr/local/bin 이 존재한다는 것을 알고 있으므로 해당 디렉토리를 생성할 필요가 없습니다. 마지막 명령의 수정된 버전을 사용할 수 있습니다.

광고

대상 디렉토리를 /usr/local/bin 으로 변경했습니다. 아직 대상 디렉토리에 이러한 파일의 복사본이 없기 때문에 -C (비교) 옵션을 제거했으므로 비교할 대상이 없습니다. 마찬가지로 백업할 것이 없으므로 -b (백업) 옵션과 -S (접미사) 옵션을 제거할 수 있습니다.

 sudo install -o dave -g geek -m 751 ana Words.db -t /usr/local/bin 

복사 파일을 /usr/local/bin에 설치

파일이 /usr/local/bin 에 도착했음을 나열할 수 있습니다.

 ls -l 

/usr/local/bin의 ls

마지막 테스트로 디렉토리를 홈 디렉토리로 변경하고 거기에서 새 유틸리티를 호출할 수 있는지 확인합니다.

아나 유틸리티 테스트

ana 명령 ./ 를 붙일 필요가 없었습니다. 이는 /usr/local/bin 에서 실행되고 있음을 의미합니다. 임무 완수.

설치 시 바이너리 파일 내에서 중복된 기호 테이블과 기타 수하물을 제거하여 크기를 줄일 수 있다고 언급했습니다. 이제 해보자. 아래 명령에는 Words.db가 포함되어 있지 않습니다. Words.db는 바이너리 실행 파일이 아니라 데이터베이스 파일이기 때문입니다. 바이너리 파일 ana 를 복사하고 축소하려면 다음 명령을 사용할 수 있습니다. 소문자 "s"와 함께 -s(축소) 옵션을 추가했습니다. 대문자 "S"를 사용하여 -b(백업) 옵션과 -S(접미사) 옵션을 다시 추가했습니다.

 sudo install -s -b -S .bak -o dave -g geek -m 751 ana -t /usr/local/bin 

-s 스트립 옵션이 있는 설치 옵션

광고

/usr/local/bin 에 파일을 나열하면 ana 파일의 크기를 백업 버전과 비교할 수 있습니다. ana 파일은 이전 크기의 거의 60%로 축소되었습니다.

 ls -l /usr/local/bin 

작업 디렉토리의 ls

요약하자면

install 명령은 틈새 시장에 적합합니다. 많은 사람들에게 그것은 매일 또는 아마도 매월 사용되지 않을 것입니다. 그럼에도 불구하고 install 명령은 익숙하고 트릭의 무기고에 있는 좋은 도구입니다. 필요할 때 효율성, 단순성 및 키 입력 횟수 감소로 학습 곡선을 보상합니다.

관련: 개발자 및 열광자를 위한 최고의 Linux 노트북