install

Kopiuje pliki ustawiając jednocześnie prawa, właściciela i tworząc katalogi.

install to coreutilsowy scyzoryk do kopiowania plików, który przy okazji ustawia prawa dostępu, właściciela i grupę, a w razie potrzeby tworzy katalogi docelowe. Brzmi jak cp z dopalaczem i dokładnie tym jest: zamiast robić cp, potem chmod, potem chown i jeszcze mkdir -p, robisz wszystko jednym poleceniem. Dlatego znajdziesz go w niezliczonych Makefile przy regułach make install oraz w skryptach wdrożeniowych. Mimo nazwy nie instaluje pakietów (to robi apt czy dnf) — operuje wyłącznie na plikach.

Składnia i najważniejsze opcje

Podstawowy wzór: install [OPCJE] ŹRÓDŁO... CEL albo do tworzenia katalogów install -d [OPCJE] KATALOG...

  • -m TRYB — ustawia prawa dostępu jak w chmod (np. 755 lub u=rwx,go=rx). Bez tej flagi domyślnie jest rwxr-xr-x, a nie odziedziczone z umask.
  • -o WŁAŚCICIEL — ustawia właściciela pliku (działa tylko jako root).
  • -g GRUPA — ustawia grupę pliku.
  • -d — tworzy podane katalogi (wraz z brakującymi rodzicami), zachowując się jak mkdir -p z kontrolą uprawnień.
  • -D — tworzy brakujące katalogi nadrzędne CELU, zanim skopiuje plik.
  • -t KATALOG — kopiuje wszystkie ŹRÓDŁA do wskazanego KATALOGU (przydatne w pętlach i z xargs).
  • -s — usuwa tablice symboli z plików binarnych (strip), żeby były mniejsze.
  • -b — robi kopię zapasową istniejącego pliku docelowego przed nadpisaniem.
  • -v — gadatliwy tryb, wypisuje co właśnie robi.

Przykłady użycia

  • install -m 755 skrypt.sh /usr/local/bin/skrypt — kopiuje skrypt i od razu nadaje mu prawa wykonywania.
  • install -d -m 750 /opt/aplikacja/dane — tworzy katalog (z rodzicami) i ustawia prawa 750 w jednym kroku.
  • install -D -m 644 config.conf /etc/aplikacja/config.conf — tworzy brakujący /etc/aplikacja i wkłada do niego plik konfiguracyjny.
  • install -o www-data -g www-data -m 640 .env /var/www/app/.env — kopiuje plik, ustawia właściciela, grupę i prawa pod serwer WWW.
  • install -b -v nowa-wersja.bin /usr/local/bin/narzedzie — nadpisuje plik, robiąc najpierw kopię zapasową starego.

Częste błędy i pułapki

Największa pułapka: install nie zachowuje domyślnych uprawnień ani daty modyfikacji oryginału. Jeśli nie podasz -m, plik dostanie 755 — co potrafi zaskoczyć, gdy kopiujesz zwykły plik tekstowy i nagle staje się wykonywalny. Druga sprawa: install kopiuje tylko pliki, nie katalogi rekurencyjnie — do drzew katalogów potrzebujesz cp -r. Pomyl też łatwo -d (twórz katalogi z argumentów) z -D (twórz rodziców celu) — to dwie różne rzeczy.

Uważaj na różnice między systemami: opisane flagi to wersja GNU (Linux). install w macOS/BSD ma inną składnię (np. tworzenie katalogów to -d, ale brak -D i --backup), więc skrypt z Linuksa nie zawsze zadziała na Macu. -o i -g wymagają roota — bez uprawnień dostaniesz Operation not permitted.

Powiązane komendy: cp, chmod, chown, mkdir, strip, rsync.