Linux에서 "install" 명령을 사용하여 파일을 복사하는 방법
게시 됨: 2022-01-29 install
은 Linux 및 macOS의 다목적 파일 복사 명령입니다. 효율성을 원하는 고급 사용자에게 적합합니다. 이 기사를 읽고 더 열심히 일하지 않고 더 스마트하게 일하는 방법을 알아보세요.
잠시만요. 소프트웨어 설치용이 아닙니까?
install
명령은 Linux 명령 중 가장 오해의 소지가 있는 이름을 가질 수 있습니다. 실제로 소프트웨어를 설치하지 않습니다. Ubuntu 또는 다른 Debian 기반 배포의 명령줄에서 소프트웨어 패키지를 설치하려는 경우 apt-get
명령을 사용합니다. 다른 Linux 배포판에서는 Linux 배포판의 패키지 관리 도구를 대신 사용하십시오(예: Fedora의 dnf
또는 openSUSE의 zypper
).
그래서 설치는 무엇을합니까?
간단히 말해서 install
는 cp
(복사), 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
유틸리티는 명령줄에 제공된 문구에서 아나그램을 생성합니다. 검증 테스트는 매우 간단합니다.
우리 프로그래머는 "biscuit"라는 문구로 ana
를 호출했고 모든 것이 잘 된 것 같습니다. 그는 이제 이 두 파일을 ~/test/ana
디렉토리에 복사하여 새 유틸리티가 개발 환경에서 제대로 작동하는지 확인하려고 합니다. 그는 다음 명령을 내립니다.
설치 -D -v ana Words.db -t ~/test/ana
명령줄에 사용된 옵션은 다음과 같습니다.
- D : 필요한 경우 부모 디렉터리를 포함하여 디렉터리를 만듭니다.
- v : 상세, 작성된 각 디렉토리와 수행되는 각 파일 복사를 나열하십시오.
- t : 대상 디렉토리.
install
이 ~/test
디렉토리를 생성한 다음 ~/test/ana
디렉토리를 생성하는 것을 볼 수 있습니다. 파일은 대상 디렉토리에 복사될 때 하나씩 나열됩니다.
~/test/ana
에 있는 파일을 나열하면 파일이 올바르게 복사되었음을 확인할 수 있습니다.
ls -l
다음 단계는 ~/test/ana
디렉토리에서 ana
유틸리티를 호출하여 테스트하는 것입니다.
유틸리티는 예상대로 작동합니다. 훌륭합니다. 그러나 권한이 올바르지 않습니다. 요구 사항은 그룹 geek
의 구성원이 읽기 및 실행 권한을 갖도록 설정하고 다른 사용자는 실행 권한만 갖도록 설정하는 것입니다.
다음 명령으로 이 두 가지 문제를 아주 간단하게 해결할 수 있습니다. sudo
를 사용하여 루트 권한으로 명령을 실행합니다. -o
및 -g
및 옵션에는 이것이 필요합니다. 명령을 실행할 때 암호를 묻는 메시지가 표시됩니다.
sudo install -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana
-
-b
(백업) 옵션은 덮어쓰기 전에 파일의 백업을 만듭니다. -
-S
(접미사) 옵션은 백업 파일의 접미사를 정의합니다. 접미사를 제공하지 않으면~
(물결표)가 사용됩니다..bak
접미사를 사용하도록install
를 요청합니다. -
-o
(소유자) 옵션을 사용하여 파일 소유자를dave
로 설정합니다. -
-g
(그룹) 옵션에는 그룹 이름이 필요합니다. 이것은 파일의 소유자 그룹이 됩니다. 우리가 사용할 그룹은geek
입니다. -
-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 괴짜 -m 751 ana Words.db -t ~/test/ana
대상 디렉토리의 파일을 나열하면 ana
파일의 파일 크기가 변경되었음을 알 수 있습니다. ana.bak
파일보다 큽니다. ana
의 타임스탬프도 변경되었습니다. 이러한 변경 사항은 파일의 새 버전이 여기에 복사되었기 때문입니다.
ls -l
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
에 도착했음을 나열할 수 있습니다.
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
명령은 익숙하고 트릭의 무기고에 있는 좋은 도구입니다. 필요할 때 효율성, 단순성 및 키 입력 횟수 감소로 학습 곡선을 보상합니다.
리눅스 명령어 | ||
파일 | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · 보기 · 문자열 · 유형 · 이름 바꾸기 · zip · 압축 풀기 · 마운트 · 언마운트 · 설치 · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · 패치 · 변환 · rclone · 파쇄 · srm | |
프로세스 | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · 종료 · 재부팅 · 정지 · poweroff · passwd · lscpu · crontab · 날짜 · bg · fg | |
네트워킹 | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
관련: 개발자 및 열광자를 위한 최고의 Linux 노트북