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

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

잠깐—소프트웨어를 설치하기 위한 것이 아닙니까?

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

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

간단히 말해서 설치는 cp(복사), 춘(소유자 변경), 채널 모드(모드 변경), mkdir(디렉토리를 만들다) 및 스트립(스트립 기호) 명령. 한 번의 작업으로 모든 기능을 사용할 수 있습니다.

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

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

이러한 모든 기능에도 불구하고 설치 명령에는 많은 옵션 와 싸우다.

언제 사용하시겠습니까?

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

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

  Windows에서 마우스 및 키보드로 감지된 Xbox 컨트롤러를 수정하는 방법

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

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

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

설치 명령을 사용하는 방법

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

ls -l ana Words.db

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

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

install -D -v ana Words.db -t ~/test/ana

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

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

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

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

ls -l

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

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

  무선 HDMI란 무엇이며 사용해야 합니까?

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

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

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

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

ls -l

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

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

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

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

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

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

ls -l

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

  iPhone, iPad 또는 Android에서 팟캐스트를 듣는 방법

프로그래머는 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에 도착했음을 나열할 수 있습니다.

ls -l

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

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

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

ls -l /usr/local/bin

요약하자면

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