Skocz do zawartości

Witaj!

Zaloguj lub Zarejestruj się aby uzyskać pełny dostęp do forum.

Zdjęcie
- - - - -

plik wykonywalny terminala.


  • Zaloguj się, aby dodać odpowiedź
11 odpowiedzi w tym temacie

#1 unikub-564a83249e

unikub-564a83249e
  • 78 postów

Napisano 20 sierpnia 2010 - 09:30

Witam, Chciałbym stworzyć plik wykonywalny terminala, który po uruchomieniu kasował by określone foldery z określonych katalogów, foldery naturalnie wraz ze znajdującymi się w nich plikami. Przeglądałem informację o komendach i znalazłem, że jest to 'rm'. Ale nie potrafię odszukać informacjo donośnie sposobu wpisywania lokalizacji katalogów. Boję się, że coś zmaluję, więc stąd prośba o pomoc. Dodam, że plik terminala chcę umieścić w dowolnym miejscu na dysku. Chciałbym też, by po odpaleniu automatycznie kasował kilka wskazanych folderów za jednym razem. Czy moglibyście napisać mi przykładową komendę, tak, bym później uzupełnił ją o konkretne nazwy katalogów i folderów? Wdrażam się w MacOSX'a, ale starość nie radość :'(

#2 javazlaz

javazlaz
  • 1 513 postów
  • SkądCzęstochowa

Napisano 20 sierpnia 2010 - 10:04

Tworzysz pusty plik w edytorze tekstowym, bez formatowania (!).

Wpisz:

#!/bin/bash
sudo rm /ścieżka/do/pliku (z tym uważaj, bo po podaniu hasła użytkownika, z którego wykonujesz komendę, usunie każdy wybrany plik)

lub jeśli są to katalogi w twoim katalogu domowym:

#!/bin/bash
rm /ścieżka/do/pliku

Tu masz więcej informacji na temat polecenia rm: Linux and UNIX rm command help

Do każdego pojedynczego pliku wpisujesz ponownie rm /cos/tam/

Jak już skończysz wypisywać, zapisz plik tekstowy i zmień rozszerzenie na sh. Potem wejdź w terminal i wpisz: sudo chmod +x /ścieżka/do/pliku.sh
W ten sposób nadasz prawa do wykonywania pliku. Zawsze przy poleceniu sudo musisz podać hasło użytkownika.

To wszystko.

#3 ftpd

ftpd

    Nie.


  • 24 347 postów
  • Płeć:
  • SkądPoznań

Napisano 20 sierpnia 2010 - 10:07

Piszesz w plik jakiś, np. twoj_plik.sh:

#!/bin/sh
rm -r /twoj/katalog/pierwszy /twoj/katalog/drugi /twoj/katalog/trzeci


Uwagi:
1) możesz dodać sobie na początek opcję -i (czyli: rm -ri /twoj/katalog/pierwszy) - wtedy będzie za każdym razem pytało, czy usunąć i będziesz mógł spokojnie sprawdzić, czy dobrze działa;
2) jeśli chcesz, dla większej przejrzystości możesz każdy katalog mieć w osobnej linii, czyli:

rm -r /katalog/pierwszy
rm -r /katalog/drugi


i tak dalej.

W Terminalu fajnie działa drag & drop - kiedy złapiesz w finderze katalog i przeciągniesz go na terminal, pojawi się w tymże dokładna ścieżka (dokładna -> bezwzględna). Może w ten sposób je sobie dodaj, będziesz miał pewność.



Na końcu zrób jeszcze:

chmod +x twoj_plik.sh

co nada mu prawa wykonywania. Odpalasz przez:

./twoj_plik.sh

(albo dwuklikiem, ale jeśli będziesz miał -i, to lepiej komendą).

#4 unikub-564a83249e

unikub-564a83249e
  • 78 postów

Napisano 20 sierpnia 2010 - 10:59

Bardzo dziękuję za cenne porady. Teraz wszystko jasne, choć to dość skomplikowane (przynajmniej bardziej niż w Windowsie). Pozdrawiam

#5 ftpd

ftpd

    Nie.


  • 24 347 postów
  • Płeć:
  • SkądPoznań

Napisano 20 sierpnia 2010 - 12:46

Wcale nie, to taka sama filozofia jak pliki .bat ;-) @javazlaz, przedtem nie widziałem Twojego posta, to się przyczepię teraz: 1) rm bez -r nie skasuje katalogu; 2) niepotrzebnie imho mącisz mu z sudo ;-)

#6 unikub-564a83249e

unikub-564a83249e
  • 78 postów

Napisano 22 sierpnia 2010 - 07:53

Zastosowałem się do poleceń i sytuacja wygląda tak. Nie mogę zmusić pliku, by otwierał się doubleclickiem, ale gdy skopiuję zawartość do terminala ręcznie, ten oczywiście kasuje mi wskazane foldery z określonych miejsc. Plik .txt przerobiłem na .sh, w terminalu wpisałem komendę chmod +x katalog/nazwapliku.sh, ale nic to nie daje, albo coś źle robię. Zapomniałem dodać, że mam leoparda, ale to pewnie nie ma znaczenia.

#7 Roberto

Roberto
  • 13 752 postów
  • SkądWrocław

Napisano 22 sierpnia 2010 - 08:45

a 'tradycyjnie' odpalany z terminala bangla? możesz też po prostu wywalić rozszerzenie

#8 unikub-564a83249e

unikub-564a83249e
  • 78 postów

Napisano 22 sierpnia 2010 - 09:51

Gdy wyrzucę rozszerzenie i kliknę dwukrotnie odpala się terminal i informuje mnie, że nie może odnaleźć pliku lub folderu. Komunikat taki podaje z osobna dla każdego polecenia rm. Nie wiem, czy ten !#/bin/sh na początku czegoś nie psuje, no ale przecież chłopaki wiedzą co piszą. Pewnie ja coś źle robię, choć wszystko według wskazówek.

#9 Roberto

Roberto
  • 13 752 postów
  • SkądWrocław

Napisano 22 sierpnia 2010 - 15:48

nie, nic nie psuje.

daj na początku skryptu "pwd" - zwróci ci ścieżkę do katalogu w którym 'pracujesz' (present working directory)
zapewne będzie to /Users/Twój_User/ po dwukliku.
więc pewnie dlatego względne (strzelam że są względne) ścieżki w twoim skrypcie są niepoprawne - są pewnie względem tego pliku

jak chcesz w skrypcie wyciągnąć w jakim katalogu się znajduje, to możesz zrobić to przy pomocy
katalog_skryptu=$(dirname "$0")
i np. używając tego konstruować odpowiednie ścieżki.

w stylu
#!/bin/bash

katalog=$(dirname "$0")
echo "$katalog/cokolwiek"


#10 macieks72

macieks72

  • 9 873 postów

Napisano 22 sierpnia 2010 - 15:57

unikub, jeśli naprawdę nie potrafisz wrzucić 'echo' w parę miejsc w skrypcie i w ten sposób go zdebudować, to lepiej sobie to całkiem odpuść, albo daj go tutaj i napisz konkretnie co ma robić to będzie wiadomo co i jak i rozwiązanie znajdzie się w 5 s.

#11 unikub-564a83249e

unikub-564a83249e
  • 78 postów

Napisano 23 sierpnia 2010 - 08:17

>Roberto - dziękuję za poradę. Sprawdzę, może coś to da, jesli nie, zastosuję się do porady macieks72, w końcu nie jest to aż takim problemem by wykasowywać te pliki ręcznie. Nie bardzo tylko rozumiem polecenie 'chmod +x twoj_plik.sh'. Z tego co wnioskuję, muszę je wpisać w oknie terminala, nie zaś w pliku. Ale w miejscu 'twoj_plik.sh' powinna się chyba pojawić ścieżka do tego pliku. I jeszcze jedna kwestia. Dlaczego gdy zmienię rozszerzenie .txt na .sh (ikona zmienia się na shell) plik dalej otwiera się przy pomocy edytora tekstu? Wybaczcie, laik ze mnie. Co z resztą widać. Przywykłem do dos'a, a i w nim nie byłem aż tak oblatany. Dzięki za pomoc wszystkim.

#12 Roberto

Roberto
  • 13 752 postów
  • SkądWrocław

Napisano 23 sierpnia 2010 - 12:51

oczywiście, że w terminalu.
program chmod to change mode. +x dodaje prawa do wykonywania - execute - danego pliku.
i tak, jasne, tam powinna się znaleźć ścieżka do twojego pliku. czy to względna czy bezwzględna.

bo najwidoczniej pliki z rozszerzeniem .sh są przypisane do edytora tekstowego. rozszerzenie tak naprawdę potrzebne nie jest i tak.
a i tak możesz skrypt 'normalnie' (aka: 'w terminalu') otworzyć.




Użytkownicy przeglądający ten temat: 1

0 użytkowników, 1 gości, 0 anonimowych