Freesco, NND, CDN, EOS
http://forum.freesco.pl/

BASH
http://forum.freesco.pl/viewtopic.php?f=28&t=15390
Strona 1 z 1

Autor:  kryspi [ sobota, 26 maja 2007, 21:48 ]
Tytuł:  BASH

Witam,

Pisze jeden skrypcik i utknalem na dwoch rzeczach. W zwiazku z tym mam ddwa pytania. W jaki spoosb w bashu ze sciezki /home/franek/test.txt wyciagnac sama sciezke?
Czy da sie za pomoca cp lub innego polecenia skopiowac dany plik w inne miejsce z zachowaniem strktury katalogow. ?

Za pomoc bede wdzieczny, bo nie moge cos nic znalesc na ten temat.

Pozdrawiam

Autor:  Mis' [ sobota, 26 maja 2007, 22:18 ]
Tytuł:  Re: BASH

kryspi pisze:
W jaki spoosb w bashu ze sciezki /home/franek/test.txt wyciagnac sama sciezke?


nie ma to nic wspólnego z bashem ale chyba najlepiej użyć

dirname /home/franek/test.txt

jeśli zaś potrzebujesz tylko nazwy pliku to:

basename /home/franek/test.txt

W bashu by się pewnie też dało, ale to dośc skomplikowane raczej by było... nie warto, chyba że w systemie na którym to ma działać nie masz powyższych programów.

kryspi pisze:
Czy da sie za pomoca cp lub innego polecenia skopiowac dany plik w inne miejsce z zachowaniem strktury katalogow. ?


o ile dobrze rozumiem co chcesz zrobić to

cp -P /scieżka/plik /katalog

załatwi ten problem.

kryspi pisze:
Za pomoc bede wdzieczny, bo nie moge cos nic znalesc na ten temat.


a do man cp zajrzałeś? nie wydaje mi się... a to powinno być pierwsze miejsce gdzie się takich rzeczy szuka.

Autor:  kryspi [ sobota, 26 maja 2007, 23:05 ]
Tytuł: 

Ok dzieki, obszedlem to juz jednak inaczej. Nie wiedzialem ze takie dwie piekne komendy istnieja :) jakos sie nie natknalem na nie, pewnie by mi to przyspieszylo napisanie tego skryptu. Ja uzylem w koncu do okreslenia sciezki do pliku polecenia

: [/] [] ()
find -iname $plik -printf "%h"`


a ta komende cp -P znalazlem ale jednak cos mi to nie dzialalo nie realizowalo tego co napisalem, nie wiem moze cos zle tego uzylem. Zrobilem ze najpierw mkdir zaklada katalog wyciagniety za pomoca powyzszej funkcji a potem kopiuje tylko do niego plik.

W kazdym badz razie dziekuje za chec pomoc, instrukcje pewnie sie przydadza jeszcze w przyslosci.

Autor:  Mis' [ sobota, 26 maja 2007, 23:44 ]
Tytuł: 

kryspi pisze:
. Ja uzylem w koncu do okreslenia sciezki do pliku polecenia

: [/] [] ()
find -iname $plik -printf "%h"`


fajnie, tylko że fing przeszukuje dysk, i jesli użyty jest w np. w pętli to trochę czasu to zajmie. Zarówno basename jak i dirname operują na stringu zawierajacym ścieżkę czyli są nieporownywalnie szybsze.

kryspi pisze:
a ta komende cp -P znalazlem ale jednak cos mi to nie dzialalo


cp -P musi dostać jako drugi parametr nazwę katalogu. Wewnątrz tego katalogu tworzone jest całe drzewko podkatalogów i do ostatniego kopiowany jest plik podany wraz ze ścieżką jako pierwszy parametr.

Autor:  kryspi [ niedziela, 27 maja 2007, 00:25 ]
Tytuł: 

tak to prawda ze napewno moje rozwiazanie jest duzo wolniejsze, ale to byl skrypcik dla znajomego na zaliczenie moze jakos to zniesie :)

jesli chodzi o te cp -P to mi to nie dziala sprawdzam u siebie na NND, sprawdzales czy u Ciebie wlasnie tak robi. Moze nadal cos zle podaje.
Ale robie tak. Wchodze do katalogu powiedzmy /home/franek/ i chce skopiowac z niego plik o nazwie plik.txt wraz z cala struktura katalogow do katalogu /tmp

wpisuje

cp -P plik.txt /tmp/

kopiuje mi tylko pliczek plik.txt natomiast struktury katalogow nie :(.

Autor:  Mis' [ niedziela, 27 maja 2007, 10:14 ]
Tytuł: 

kryspi pisze:
jesli chodzi o te cp -P to mi to nie dziala sprawdzam u siebie na NND,



no cóż... mea culpa! przełącznik -P wziąłem z pamięci i potwierdziłem że dobrze pamiętam w książce "Linux in a nutshell"... ale widać od czasu wydania (rok 2000) autorzy cp zmienili znaczenie tego przełącznika. Obecnie znaczy on "never follow symbolic links"... wersja długa czyli --parents działa nadal tak samo. Czyli

cp --parents /scieżka/plik /katalog

skopiuje plik tworząc w katakog całe drzewko określone przez scieżka.

kryspi pisze:

cp -P plik.txt /tmp/

kopiuje mi tylko pliczek plik.txt natomiast struktury katalogow nie


po pierwsze przed plik.txt musi być ścieżka, inaczej struktura katalogów nie zostanie skopiowana bo cp jej nie zna
po drugie nie jest ci potrzebny ostatni slash na końcu katalogu /tmp,
po trzecie zamiast -P użyj --parents

Strona 1 z 1 Strefa czasowa UTC+2godz.
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/