Linux - Jak zagnieździć komendy w innej komendzie terminala
Ten artykuł poświęcony zostanie zagadnieniu zagnieżdżania komend na systemach Linux. Przy okazji dotkniemy również tematu używania polecenia date i formatowania jego wyników, oraz pokażemy jak periodycznie wykonywać kolejne kopie zapasowe wskazanego pliku.
O co chodzi w zagnieżdżaniu poleceń?
Przejdźmy od razu do meritum. Zagnieżdżanie komend polega na użyciu rezultatu jednej komendy, wewnątrz wywołania drugiej, również jako jednego z wielu fragmentów. Na pewno nie brzmi to zrozumiale, ale przykład, który przytoczę za moment, na pewno wyklaruje sprawę. Nim jednak to nastąpi, należy wspomnieć o bardzo ważnej rzeczy, jaką jej sposób użycia zagnieżdżeń. Otóż zagnieżdżenie umieszcza się wewnątrz znaków ``, które nie są apostrofami! Znak ` dostępny jest na tym samym przycisku co tylda/falka ~. Dobrze, teraz możemy przejść do przykładu.Polecenie whoami zwraca nam nazwę zalogowanego użytkownika:
mateusz
$ cd /home/`whoami`/
Jak wykorzystać zagnieżdżanie?
Myślę, że nietrudno się domyślić, że zagnieżdżanie jest bardzo wygodną i często używaną opcją podczas pracy z terminalem. Ja chciałbym pokazać przykład, który uważam za ciekawy a przy tym praktyczny. Wyobraźmy sobie, że pracujemy nad jakimś plikiem tekstowym o nazwie dokument.txt i jest on dla nas na tyle ważny, że chcielibyśmy co jakiś zdefiniowany czas robić jego kopię zapasową, ale w taki sposób, by poprzednie kopie również się zachowały na wypadek konieczności powrotu do którejś z nich (czyli interesuje nas taki wyciosany krzemieniem system kontroli wersji). Oczywiście jesteśmy zbyt leniwi, żeby robić to ręcznie, a właściwie nie po to mamy komputer, żebyśmy musieli robić to ręcznie. Zatem do 60 sekund kopiujmy edytowany plik do innej lokacji, do jego nazwy dołączając datę i czas wykonania kopii.Pomocne nam będzie polecenie date. Zobaczmy co zwraca:
sob, 26 maj 2012, 20:33:54 CEST
26.05.2012-20:34:58
cp $1 /ścieżka_do_trzymania_kopii_zapasowych/$1_`date +%d.%m.%Y-%H:%M:%S`
echo "Wykonano kopię zapasową: $1 -> $1_`date +%d.%m.%Y-%H:%M:%S`"
Skoro mamy gotowy skrypt, sprawdźmy jak działa:
Wykonano kopię zapasową: dokument.txt -> dokument.txt_26.05.2012-20:45:38
Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!