OmniGraffle wypluwa mi w eksporcie do html'a pliki niby html ale za kazdym razem musze im dodac cos na poczatku i na koncu (proste znaczniki html'owe) - i wlasnie tu widze niepowtarzalna szanse dla automatora. Mamy paczke plikow, w kazdym dodajemy na poczatku i na koncu kilka linijek powtarzalnego kodu, po całej operacji wypluwamy zmodyfikowane.
Generalnie można pomyśleć też szerzej - wspomniana akcja miałaby na celu dodać wpisany na stałe tekst do każdego z wrzuconych plików tekstowych przed pierwszym i po ostatnim znaku.
Ok - dzieki code - to jest jakiś sposób - tylko i tak wymaga to ode mnie troche wiecej pracy niż chciałbym regularnie musieć w to wkładać - czy mamy jeszcze jakieś pomysły?
#!/bin/bash
p='Tu wpisz to co chcesz wstawic na poczatek pliku';
k='Tu wpisz to co chcesz wstawic na koniec pliku';
typ="html";
x=1; export x;
y=`[replacer_a]
Plik umieść w katalogu domowym.
Następnie nadaj prawa uruchamiania dla tego pliku (chmod +x nazwa_pliku).
W pliku zmodyfikuj wg. własnej potrzebny pierwsze trzy zmienne tj:
p="Tu wpisz to co chesz wstawic na poczatek pliku";
k="Tu wpisz to co chcesz wstaawic na koniec pliku";
typ="html";
p i k domyślasz się o co chodzi
typ to zmienna określająca typ plików które będziemy zmieniać a raczej rozszerzenie plików
następnie do jakiegoś katalogu wrzuć wszystkie pliki, które chcesz zmienić (pamiętając aby typ zgadzał się z rozszerzeniem owych plików)
i wykonaj polecenie
Kod:
~/nazwa_pliku
Skrypt robi co następuje:
1. Zlicza ilość plików o podanym rozszerzeniu (zmienna typ)
2. Podaje po kolei nazwy plików pasujących do wzorca
3. Dodaje na początku i końcu każdego z plików zadane ciągi znaków (zmienne p i k)
Pamiętać musisz że skrypt zmienia WSZYSTKIE pliki z rozszerzeniem "typ" w katalogu w którym jesteś.
Cały czas gdzieś mnie korci żeby zrobić to za pomocą Automatora albo applescripta
Ale po co, skoro można szybciej i łatwiej za pomocą tak potężnego narzędzia jakim iest UN*X'owa powłoka
Zresztą, pomyślałem, że taki skrypt:
Kod:
#!/bin/bash
for plik in *.html # zamiast *.html można wstawić dowolne inne wyrażenie określające pliki
do
cp $plik $plik.old;
cat plik_z_tym_co_na_poczatku.txt $plik.old plik_z_tym_co_na_koncu.txt > $plik;
rm $plik.old;
echo "Plik $plik przetworzony...";
done
zrobi to szybciej i dla definiowalnych zbiorów plików (tylko trzeba uważać, żeby nie spaprać sobie plików z początkiem i końcem np, jak przerabiasz pliki html to daj tym dwom inne rozszerzenia, etc.)
bash jest naprawdę mocny i warto się z nim zaprzyjaźnić
I będzie dobrze
Czyli zamieniasz na początku i końcu znak " na '
Napisał Mateo
PS: Cały czas gdzieś mnie korci żeby zrobić to za pomocą Automatora albo applescripta
Mateo, Oba "skrypty" będą" działać a ich używanie zdecydowanie będzie szybsze i wygodniejsze niż Automator, chyba że nie masz na stałe otwartego Terminala
Napisał beru
Zresztą, pomyślałem, że taki skrypt:
Również dobre rozwiązanie ale stwierdziłem, że lepiej sprawe załatwić jednym plikiem zamiast trzema.
Prócz "pomógł" wspomniany okocim przy najbliższej okazji
beru, Twój sposób też wydaje się dobry. Jego zaletą może być to że wklejanie większych kawałków kodu zachowa formatowanie z tabulacjami itd. Wypróbuje w wolnej chwili. Dziękuję
Pociąg do Automatora bierze się z dwóch powodów:
1. Faktycznie nie mam otwartego terminala non stop ale to jeszcze jest do przejscia
2. Chciałbym przygotować taką akcję działającą na zasadzie "zaznacz grupę plików i wedle makowej filozofii przeciągnij na ikonkę akcji czy wybierz z menu podręcznego i już... To mogłoby być bardzo przydatne dla zupełnie nie terminalowych.