Jak kopiować pliki za pomocą polecenia „zainstaluj” w systemie Linux

Opublikowany: 2022-01-29
Grafika koncepcyjna Bash na pulpicie Ubuntu Linux
Fatmawati Achmad Zaenuri/Shutterstock.com

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.

zainstaluj stronę podręcznika

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.

Reklama

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.

test narzędzia w katalogu roboczym

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 

Zainstaluj polecenie w /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.
Reklama

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 

ls w katalogu /test/ana

Następnym krokiem jest przetestowanie narzędzia ana poprzez wywołanie go w katalogu ~/test/ana .

test narzędzia ana 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 

polecenie instalacji z opcjami kopii zapasowej i ustawieniami uprawnień

  • 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). Prosimy install , 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 numerycznej chmod .

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 

ls w katalogu /test/ana

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.
Reklama

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 

polecenie instalacji z opcją porównania -C

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 

ls w /test/ana z testem narzędzia ana

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.

Reklama

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 

zainstaluj kopiowanie plików do /usr/local/bin

Możemy podać, że pliki dotarły do /usr/local/bin :

 ls-l 

ls /usr/local/bin

Jako ostatni test zmieńmy katalog na nasz katalog domowy i zobaczmy, czy możemy stamtąd wywołać nasze nowe narzędzie.

test użyteczności ana

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 

opcja instalacji z opcją -s strip

Reklama

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 

ls w katalogu roboczym

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.

POWIĄZANE: Najlepsze laptopy z systemem Linux dla programistów i entuzjastów