Jak kopiować pliki za pomocą polecenia „zainstaluj” w systemie Linux
Opublikowany: 2022-01-29 install
to wszechstronne polecenie do kopiowania plików w systemach Linux i macOS. Jest idealny dla zaawansowanych użytkowników szukających wydajności. Przeczytaj ten artykuł, aby dowiedzieć się, jak pracować mądrzej, a nie ciężej.
Czekaj — to nie jest do instalowania oprogramowania?
Polecenie install
może mieć najbardziej mylącą nazwę ze wszystkich poleceń systemu Linux. W rzeczywistości nie instaluje żadnego oprogramowania. Jeśli próbujesz zainstalować pakiet oprogramowania z wiersza poleceń w Ubuntu lub innej dystrybucji opartej na Debianie, użyj polecenia apt-get
. W innych dystrybucjach Linuksa zamiast tego użyj narzędzia do zarządzania pakietami w dystrybucji Linuksa — na przykład dnf
w Fedorze lub zypper
w openSUSE.
Więc co robi instalacja?
W skrócie install
łączy elementy z poleceń cp
(kopiowanie), chown
(zmiana właściciela), chmod
(tryb zmiany), mkdir
(tworzenie katalogu) i strip
(symbole pasków). Pozwala korzystać z wszystkich funkcji w jednej akcji.
Polecenie install
może:
- Skopiuj pliki, takie jak polecenie
cp
. - Wybierz, czy zastąpić istniejące pliki.
- Utwórz katalog docelowy, jeśli nie istnieje, na przykład
mkdir
. - Ustaw flagi uprawnień użytkownika dla plików, tak jak polecenie
chmod
. - Ustaw właściciela plików, tak jak
chown
. - Usuń niepotrzebny bagaż z plików wykonywalnych, tak jak polecenie
strip
.
Pomimo całej tej funkcjonalności, polecenie install
nie ma zbyt wielu opcji do pokonania.
Kiedy go użyjesz
Polecenie install
prawdopodobnie nie będzie używane codziennie. Przydaje się, ale tylko w określonych sytuacjach. Jednym ze scenariuszy, w których install
pojawia się sama, jest tworzenie oprogramowania. Załóżmy, że programujesz nowe narzędzie. Będziesz musiał przeprowadzić testy poza środowiskiem programistycznym. Aby to zrobić, musisz skopiować nowe pliki programu do katalogu testowego. Może zaistnieć potrzeba utworzenia katalogu testowego oraz ustawienia odpowiednich uprawnień i własności plików.
Ponieważ programowanie jest czynnością iteracyjną, możesz wykonać tę sekwencję działań wiele, wiele razy. Polecenie install
wykonuje za Ciebie wszystkie ciężkie prace. Wreszcie, gdy nowe narzędzie jest gotowe do wdrożenia, możesz użyć install
, aby skopiować je z odpowiednimi uprawnieniami do ostatecznej lokalizacji roboczej.
Przykład
Programista pracuje nad takim właśnie nowym narzędziem o nazwie ana
. Składa się z wykonywalnego pliku binarnego i bazy danych. Po przetestowaniu należy go skopiować do /usr/local/bin
, aby był dostępny dla wszystkich użytkowników systemu Linux. Musisz zastąpić nazwy plików i ścieżki katalogów z naszego przykładu plikami i ścieżkami używanymi na komputerze podczas używania install
.
Dopóki nie będzie gotowe do wydania, będzie testowane w katalogu o nazwie ~/test/ana
. Członkowie grupy geek
będą mieli uprawnienia do odczytu i wykonywania. Inni użytkownicy również będą mieli uprawnienia do odczytu i wykonywania. Polecenie install
używa tej samej liczbowej reprezentacji uprawnień, co chmod
. Nasz programista zdecydował, że uprawnienia muszą być ustawione na:
- Właściciel: Czytaj, pisz i wykonuj.
- Grupa: Przeczytaj i wykonaj.
- Inne: tylko wykonaj.
Jak korzystać z polecenia install
Katalog roboczy naszego fikcyjnego programisty to ~/work
. Napisał program, skompilował go i stworzył plik binarny o nazwie ana
. Stworzył już plik bazy danych, z którym pracuje ana
, Words.db
. Więc oba pliki są gotowe do testów. Przyjrzyjmy się im:
ls -l ana Words.db
Narzędzie ana
, które właśnie napisał, tworzy anagramy z frazy podanej w wierszu poleceń. Testy weryfikacyjne są dość proste.
Nasz programista odwołał się do ana
frazą „herbatnik” i wszystko wydaje się dobrze. Teraz chce skopiować te dwa pliki do katalogu ~/test/ana
, aby sprawdzić, czy nowe narzędzie działa poprawnie poza środowiskiem programistycznym. Wydaje następującą komendę:
zainstaluj -D -v ana Words.db -t ~/test/ana
Opcje użyte w wierszu poleceń to:
- D : Utwórz katalogi, w tym katalogi nadrzędne, jeśli jest to wymagane.
- v : Szczegółowy, wypisz każdy katalog w miarę jego tworzenia i każdą kopię pliku podczas wykonywania.
- t : Katalog docelowy.
Widzimy, że install
tworzy katalog ~/test
, a następnie tworzy katalog ~/test/ana
. Pliki są wyświetlane jeden po drugim, gdy są kopiowane do katalogu docelowego.
Wyświetlenie plików w ~/test/ana
potwierdza, że zostały one poprawnie skopiowane.
ls-l
Następnym krokiem jest przetestowanie narzędzia ana
poprzez wywołanie go w katalogu ~/test/ana
.
Narzędzie działa zgodnie z oczekiwaniami, co jest świetne. Jednak uprawnienia nie są poprawne. Wymaganiem jest, aby członkowie grupy geek
mieli uprawnienia do odczytu i wykonywania, a inni użytkownicy mieli tylko uprawnienia do wykonywania.
Oba te problemy możemy rozwiązać w prosty sposób za pomocą następującego polecenia. Zwróć uwagę na użycie sudo
do uruchomienia polecenia z uprawnieniami roota. Wymagają tego opcje -o
i -g
oraz. Gdy wydamy polecenie, zostaniemy poproszeni o podanie hasła.
sudo install -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana
- Opcja
-b
(kopia zapasowa) tworzy kopie zapasowe plików przed ich nadpisaniem. - Opcja
-S
(sufiks) określa przyrostek dla plików kopii zapasowej. Jeśli nie podasz sufiksu, zostanie użyty znak~
(tylda). Prosimyinstall
, aby użyła sufiksu.bak
. - Ustawiamy właściciela pliku na
dave
za pomocą opcji-o
(właściciel). - Opcja
-g
(grupa) wymaga podania nazwy grupy. Staje się to grupą właścicieli plików. Grupa, z której będziemy korzystać, nazywa sięgeek
. - Opcja
-m
(tryb) ustawia tryby plików dla plików, używając standardowej składni numerycznejchmod
.
Nie musimy już używać opcji -D
(tworzenie katalogów), ponieważ wiemy, że katalog testowy już istnieje. Pominęliśmy również opcję -v
(pełny). Lista plików w naszym katalogu ~/test/ana
pokazuje nam szczegóły pliku:
ls-l
Potwierdza to spełnienie wszystkich naszych wymagań.
- Pliki zostały skopiowane do katalogu testowego.
- Uprawnienia zostały ustawione poprawnie.
-
dave
jest właścicielem plików. - Grupa
geek
to grupa właścicieli dwóch plików. - Wykonano kopie zapasowe każdego pliku o nazwach ana.bak i Words.db.bak.
Wszystko to udało się osiągnąć za pomocą jednego polecenia. Schludny.
Nasz programista dokonuje ostatnich zmian w narzędziu i ponownie je kompiluje. Zmienione pliki należy skopiować do katalogu ~/test/ana
z katalogu ~/work
. Możemy to zrobić za pomocą opcji -C
(porównaj). Jeśli plik źródłowy i docelowy są takie same, plik źródłowy nie jest kopiowany.
sudo install -C -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana
Wyświetlenie listy plików w katalogu docelowym pokazuje nam, że zmienił się rozmiar pliku ana
. Jest większy niż plik ana.bak
. Zmienił się również znacznik czasu na ana
. Te zmiany są spowodowane skopiowaniem nowej wersji pliku.
ls-l
Rozmiar i sygnatura czasowa pliku Words.db
nie uległy zmianie. W pliku Words.db
nie wprowadzono żadnych zmian, więc nie został on skopiowany. W projekcie z wieloma plikami opcja -C
(porównaj) może zaoszczędzić dużo czasu i churn dysku twardego, kopiując tylko te pliki, które zostały zmienione.
Programista ponownie przetestował, czy narzędzie ana
nadal działa.
Czas użyć install
do skopiowania plików do katalogu /usr/local/bin
. Dzięki temu nowe narzędzie będzie dostępne dla wszystkich użytkowników tego komputera z systemem Linux. Wiemy, że /usr/local/bin
istnieje, więc nie musimy tworzyć tego katalogu. Możemy użyć zmodyfikowanej wersji naszego ostatniego polecenia.
Zmieniliśmy katalog docelowy na /usr/local/bin
. Usunęliśmy opcję -C
(porównaj), ponieważ nie ma jeszcze kopii tych plików w katalogu docelowym, więc nie ma z czym porównywać. Podobnie nie ma niczego do utworzenia kopii zapasowej, więc możemy usunąć opcję -b
(kopia zapasowa) i opcję -S
(przyrostek).
sudo install -o dave -g geek -m 751 ana Words.db -t /usr/local/bin
Możemy podać, że pliki dotarły do /usr/local/bin
:
ls-l
Jako ostatni test zmieńmy katalog na nasz katalog domowy i zobaczmy, czy możemy stamtąd wywołać nasze nowe narzędzie.
Zauważ, że nie musieliśmy poprzedzać polecenia ana
./
, co oznacza, że jest uruchomione z /usr/local/bin
. Misja zakończona.
Wspomnieliśmy, że instalacja może usunąć nadmiarowe tablice symboli i inny bagaż z pliku binarnego, aby zmniejszyć jego rozmiar. Zróbmy to teraz. Zauważ, że poniższe polecenie nie zawiera Words.db. Dzieje się tak, ponieważ Words.db jest plikiem bazy danych, a nie binarnym plikiem wykonywalnym. Aby skopiować i zmniejszyć plik ana
a, możemy użyć następującego polecenia. Dodaliśmy opcję -s (zmniejszenie) z małą literą „s”. Dodaliśmy z powrotem opcję -b (kopia zapasowa) i opcję -S (sufiks), z wielką literą „S”.
sudo install -s -b -S .bak -o dave -g geek -m 751 ana -t /usr/local/bin
Lista plików w /usr/local/bin
pozwala nam porównać rozmiar pliku ana
z jego wersją kopii zapasowej. Plik ana
został zmniejszony do prawie 60% jego poprzedniego rozmiaru.
ls -l /usr/local/bin
W podsumowaniu
Polecenie install
jest przeznaczone do całkiem niszowych zastosowań. Dla wielu osób nie będzie używany dzień po dniu, a może nawet z miesiąca na miesiąc. Mimo to polecenie install
jest dobrym narzędziem, z którym warto się zapoznać i mieć w swoim arsenale sztuczek. W sytuacjach, gdy tego potrzebujesz, nagradza Twoją krzywą uczenia się większą wydajnością, prostotą i po prostu mniejszą liczbą naciśnięć klawiszy.
Polecenia Linuksa | ||
Pliki | tar · pv · kot · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · dysk testowy · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · ogon · stat · ls · fstab · echo · mniej · chgrp · chown · rev · wygląd · stringi · typ · zmiana nazwy · zip · rozpakuj · montuj · umount · zainstaluj · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · konwertuj · rclone · shred · srm | |
Procesy | alias · ekran · top · ładne · renice · postęp · strace · systemd · tmux · chsh · historia · w · wsad · free · co · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · ściana · tak · kill · sen · sudo · su · czas · groupadd · usermod · grupy · lshw · zamknij · restart · halt · poweroff · passwd · lscpu · crontab · data · bg · fg | |
Sieć | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
POWIĄZANE: Najlepsze laptopy z systemem Linux dla programistów i entuzjastów