Część III
Zdalne kopiowanie plików¶
scp¶
scp jest analogiem cp, które pozwala kopiować pliki pomiędzy różnymi maszynami.
Składnia jest podobna:
scp <source> <target>
gdzie zarówno <source> jak i <target> mogą być albo ścieżką lokalną, albo zdalną, np.
z1234567@student.tcs.uj.edu.pl:~/folder/file.txt
Często używane flagi:
-rkopiuje zawartość katalogu i wszystkich podkatalogów rekurencyjnie;-pzachowuje takie metadane plików, jak czas modyfikacji/dostępu, prawa dostępu;-iużywa klucza prywatnego zamiast hasła.
scp świetnie nadaje się do jednorazowych transferów danych.
rsync¶
rsync natomiast bardziej pasuje w scenariuszu, gdzie mamy duży folder i modyfikujemy tylko niektóre pliki.
rsync wysyła tylko zmienione/nowe pliki, a nie cały folder.
Często używane flagi:
-azachowuje metadane plików;-vwypisuje szczegóły transferu;-zkompresja danych podczas transferu;--dry-runwyświetla efekt hipotetycznego wykonania polecenia, ale nie wysyła żadnych danych.
rsync działa również lokalnie.
Ukośnik końcowy
source/ kopiuje zawartość katalogu source, natomiast source kopiuje sam katalog.
grep: wyszukiwanie w tekście¶
grep wypisuje linie, które spełniające podany wzorzec.
Na przykład
$ grep "word" info.txt
wypisze wszystkie linie w pliku info.txt, zawierające "word" (niekoniecznie oddzielone spacjami). Wzorce mogą być znacznie bardziej skomplikowane, niż po prostu słowa; o tym będzie mowa na późniejszych zajęciach.
Często używane flagi:
-iignoruje wielkość liter, tzn dopasowuje zarówno "Word", "word", jak i "WORD";-vwypisuje linie, które nie spełniają wzorca;-nprzed każdą dopasowaną linią, wypisuje jej numer;-cwypisuje tylko liczbę dopasowanych linii.
grep akceptuje też tekst podany na wejściu standardowym zamiast pliku, więc świetnie współpracuje z potokami:
$ grep ... | grep ... | grep ...
curl: zapytania HTTP¶
Najprostsze zastosowanie curl to pobieranie stron internetowych.
$ curl https://srodowisko.tcs.uj.edu.pl
-Xustawia metodę HTTP (tzn. GET, POST, PUT, albo DELETE);-ozapisuje wyjście do pliku;-Lpodąża za przekierowaniami HTTP;-Ipobiera tylko nagłówki.
Więcej o przekierowaniach strumieni¶
W części I dowiedzieliśmy, że istnieją strumienie wyjścia i wejścia standardowego, z/do których można przekierować dane do komend. Istnieje też trzeci strumień -- wyjście standardowe błędów (stderr) -- do którego większość komend przekierowuje komunikaty błędów/ostrżeżen. Domyślnie, wyjście programów jest wyświetlane w terminalu, więc zarówno stdout jak i stderr są wyświetlane obok siebie.
Podobnie jak wyjście standardowe możemy przekierować do pliku za pomocą >, do przekierowania wyjścia standardowego błędów służy 2>:
./script-with-errors.sh 2> error.log
stworzy plik o nazwie error.log, gdzie znajdą się zawartość strumienia stderr.
Stdout natomiast nadal będzie wyświetlany w terminalu, ale go można też przekierować, dodając > out.log do polecenia.