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 wchmod(np.755lubu=rwx,go=rx). Bez tej flagi domyślnie jestrwxr-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ę jakmkdir -pz 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 zxargs).-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 prawa750w jednym kroku.install -D -m 644 config.conf /etc/aplikacja/config.conf— tworzy brakujący/etc/aplikacjai 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.