Mich@ł 0 Zgłoś post Napisano Lipiec 1, 2010 Potrzebuje odpalić na serwerze prosty skrypt który będzie pobierał nazwę katalogu z pliku tekstowego po czym będzie go usuwał. Obecnie naskrobałem coś takiego: while read line do echo $line; rm -rdf $line done < plik.txt A tak wygląda plik z danymi: nazwa1nazwa2 nazwa3 Odczyt pliku chyba działa ok ponieważ w konsoli pojawiają mi się poszczególne linie. Nie wiem czemu nie chce działać plecenie: rm -rdf $line Gdy wpisuje w konsoli polecenie rm -rdf nazwa_katalogu to katalog ładnie się usuwa. W czym może być problem :>? W skrypcie basha nie mogę używać takich poleceń czy problem jest w składni? Od razu mówię że to moje jedno z pierwszych spotkań z bashem Z góry dzięki za pomoc. [edit] Jak widzę problem jest ze zmienna $line ponieważ po wpisaniu nazwy na sztywno katalog się usuwa :/. Dziwne że nie chce działać gdy dam zmienna pobraną z pliku. Udostępnij ten post Link to postu Udostępnij na innych stronach
p 3 Zgłoś post Napisano Lipiec 1, 2010 $ for i in `cat plik.txt`; do rm -rf $i; done Udostępnij ten post Link to postu Udostępnij na innych stronach
Mich@ł 0 Zgłoś post Napisano Lipiec 1, 2010 p, niestety ie śmiga. Odpalając Twój skrypt nic się nie dzieje. Próbowałem zmienić "ciapka" ' na " i w efekcie usuwa mi plik z listą katalogów a same katalogi pozostają bez zmian. Udostępnij ten post Link to postu Udostępnij na innych stronach
^^KaMaZZ~.^ 154 Zgłoś post Napisano Lipiec 1, 2010 A próbowałeś jako nazwa1, nazwa2, nazwa3 podać pełne ścieżki katalogów ? Udostępnij ten post Link to postu Udostępnij na innych stronach
Mich@ł 0 Zgłoś post Napisano Lipiec 1, 2010 ^^KaMaZZ~.^, pełną ścieżke czyli: /home/nazwa_konta/domains/domena.pl/public_html/nazwa1 Próbowałem i niestety też nic się nie dzieje. Udostępnij ten post Link to postu Udostępnij na innych stronach
kafi 2425 Zgłoś post Napisano Lipiec 1, 2010 p, niestety ie śmiga. Odpalając Twój skrypt nic się nie dzieje. Próbowałem zmienić "ciapka" ' na " i w efekcie usuwa mi plik z listą katalogów a same katalogi pozostają bez zmian. Skopiowałeś dokładnie komendę napisaną przez p? cat plik.txt ma być w odwróconych apostrofach (na klawiaturze to przycisk współdzielony z tyldą - ~/`), a nie normalnych ('/"). Udostępnij ten post Link to postu Udostępnij na innych stronach
Mich@ł 0 Zgłoś post Napisano Lipiec 1, 2010 A jednak skrypt napisany przez p po części działa, usuwa ostatni katalog z listy. A muszę mieć skrypt który usunie około 10 plików (10 linii) podczas 1 wykonania skryptu. Udostępnij ten post Link to postu Udostępnij na innych stronach
kafi 2425 Zgłoś post Napisano Lipiec 1, 2010 rm -rf `cat .lista` Pamiętaj o odwrotnych apostrofach przy cat. Udostępnij ten post Link to postu Udostępnij na innych stronach
Mich@ł 0 Zgłoś post Napisano Lipiec 1, 2010 Odpalam dokładnie taki skrypt: for i in `cat plik.txt`; do rm -rf /home/konto/domains/domena.pl/public_html/bash/$i; done I tak jak już wspomniałem usuwanie działa tyle że usuwa tylko ostatni katalog z listy czyli tak jak by nie śmigała pętla. Udostępnij ten post Link to postu Udostępnij na innych stronach
sysunit 0 Zgłoś post Napisano Lipiec 1, 2010 Nie prosciej uzyc xargs? Dod. pamietaj o roznicy pomiedzy sciezka wzgledna a bezwgledna. 22:33:16 - lurtz@s1 ~/tmp $ cat lista 1 2 3 4 5 6 7 8 9 22:33:19 - lurtz@s1 ~/tmp $ cat lista | xargs rm -rf 22:33:26 - lurtz@s1 ~/tmp $ ls 22:33:27 - lurtz@s1 ~/tmp $ Udostępnij ten post Link to postu Udostępnij na innych stronach
Mich@ł 0 Zgłoś post Napisano Lipiec 1, 2010 sysunit, polecenie "cat lista | xargs rm -rf" niestety nie usuwa katalogów (w katalogach są pliki). W sumie chyba nic się nie dzieje po wykonaniu tego polecenia (wpisuje je bezpośrednio do konsoli). Udostępnij ten post Link to postu Udostępnij na innych stronach
sysunit 0 Zgłoś post Napisano Lipiec 1, 2010 Eh moze po prostu pokaz 2 rzeczy: pwd cat (ta twoja lista) i wylistuj chociaz jeden katalog z tej listy za pomoca ls -la Udostępnij ten post Link to postu Udostępnij na innych stronach
Mich@ł 0 Zgłoś post Napisano Lipiec 1, 2010 pwd: /home/konto/domains/domena.pl/public_html/bash kat1: serwer:/home/konto/domains/domena.pl/public_html/bash/kat1# ls -larazem 176 drwxr-xr-x 2 konto konto 4096 lip 1 20:51 . drwxr-xr-x 4 konto konto 4096 lip 1 22:54 .. -rw-r--r-- 1 konto konto 49736 lip 1 20:51 Faktura_proforma_nr_PROF_1_07_2010.pdf -rw-r--r-- 1 konto konto 51504 lip 1 20:51 Faktura_proforma_nr_PROF_17_06_2010.pdf -rw-r--r-- 1 konto konto 51774 lip 1 20:51 Faktura_VAT_nr_23_06_2010_ORYGINAL.pdf Mój plik z listą nazw katalogów: kat1kat2 kat3 Lista plików w katalogu kat1 jest przypadkowa ponieważ są to jedynie katalogi testowe. Z usuwaniem katalogów ogólnie nie ma problemu ponieważ przy użyciu polecenia: rm -rdf nazwa_kat katalog się usuwa. Udostępnij ten post Link to postu Udostępnij na innych stronach
sysunit 0 Zgłoś post Napisano Lipiec 1, 2010 tak wiec bedac w katalogu bash i jesli faktycznie plik z lista ma kazdy katalog w osobnej sciezce wydaj polecenie: cat twoja_lista | xargs rm -rf i _musi_ to zadzialac. eot. Udostępnij ten post Link to postu Udostępnij na innych stronach
Mich@ł 0 Zgłoś post Napisano Lipiec 1, 2010 Odpalam to polecenie będąc w katalogi bash i niestety brak efektów. [edit] Oczywiście dostosowałem je do swojego pliku z listą katalogów. Udostępnij ten post Link to postu Udostępnij na innych stronach
p 3 Zgłoś post Napisano Lipiec 1, 2010 A jednak skrypt napisany przez p po części działa, usuwa ostatni katalog z listy. A muszę mieć skrypt który usunie około 10 plików (10 linii) podczas 1 wykonania skryptu. Nie po częsci, tylko działa. Po prostu coś zepsułeś p@vbox:~/x$ tree . |-- 1 | |-- a | `-- b |-- 2 | |-- c | `-- d |-- 3 | |-- e | `-- f `-- list 9 directories, 1 file p@vbox:~/x$ cat list 1 2 3 p@vbox:~/x$ for i in `cat list`; do rm -rf $i; done p@vbox:~/x$ tree . `-- list 0 directory, 1 file Udostępnij ten post Link to postu Udostępnij na innych stronach
Mich@ł 0 Zgłoś post Napisano Lipiec 1, 2010 Hehehe bardzo możliwe że coś popsułem Rano spróbuje jeszcze raz Ogólnie w pewnym sensie usuwanie w ten sposób nawet 1 katalogu już spełnia moje oczekiwania (jedynie proces usuwania się wydłuży do 3 dni) Udostępnij ten post Link to postu Udostępnij na innych stronach
Mich@ł 0 Zgłoś post Napisano Lipiec 2, 2010 p, śmiga, przynajmniej na docelowych katalogach Nie mam pojęcia co robiłem nie tak Dziękuje wszystkim za pomoc Udostępnij ten post Link to postu Udostępnij na innych stronach
d.v 1409 Zgłoś post Napisano Lipiec 2, 2010 Skrypcik niegłupi i zapewne przydatny, ale równie dobrze mogłeś po prostu użyć Midnight Commandera Udostępnij ten post Link to postu Udostępnij na innych stronach
Mich@ł 0 Zgłoś post Napisano Lipiec 2, 2010 d.v, nie mogłem z uwagi na to że ten skrypcik jest częścią innego skryptu do czyszczenia katalogów i baz danych Na początku zakładałem że katalogi będę kasował z poziomu php tak jak były tworzone tyle że miałem problemy z uprawnieniami dlatego postanowiłem spróbować z bashem Udostępnij ten post Link to postu Udostępnij na innych stronach