Sekrety Mac OS X

My, użytkownicy komputerów Mac od dawna jesteśmy dumni z tego, że nie musimy wpisywać poleceń, aby w pełni korzystać z naszych maszyn. To wciąż prawda, ale teraz, gdy system Mac OS X otworzył wiersz poleceń systemu Unix, mamy wszystkie narzędzia niezbędne do skorzystaj z potężnych możliwości programowania i pisania skryptów, aby nasze komputery Mac mogły robić więcej naszych odrażających rzeczy praca. A w końcu, czy nie o to właśnie chodzi w komputerze?

Programowanie jest bardzo podobne do gotowania — jest to kategoria czynności obejmująca szerokie spektrum, od złożoności po Twardy szef do kulinarnej parodii podgrzewania hot doga w kuchence mikrofalowej. Zarówno programowanie, jak i gotowanie można wykonywać na wielu różnych poziomach umiejętności, ale nawet kucharze-amatorzy mogą przyrządzać smaczne potrawy, tak jak początkujący programiści mogą tworzyć przydatne skrypty. I podobnie jak nauka gotowania, nauka pisania skryptów może początkowo wydawać się zniechęcająca.

W tej kolumnie, pierwszej z serii poświęconej maniakom OS X, dowiesz się, jak używać popularnego języka skryptowego Perl, który jest wbudowany w OS X. Pokażemy ci, jak zbudować skrypt, który konwertuje zakończenia linii pliku tekstowego Maca na zakończenia linii, które może zinterpretować Unix. (Umożliwi to użycie opartych na Uniksie narzędzi do przetwarzania tekstu na zawartości pliku.) Chociaż opracowywanie skryptu może wydawać się sporym wysiłkiem, wyniki będą bardzo przydatne, jeśli kiedykolwiek będziesz musiał przekonwertować wiele tekstów akta. (Aby dowiedzieć się więcej o określaniu wielu plików w wierszu poleceń, zobacz „Przejmij kontrolę nad systemem Mac OS X”,

Jak .) Mamy nadzieję, że ten przykład posłuży jako apetyczny przedsmak bogatych smaków OS X.

Jak napisać skrypt Perla

Najpierw musisz uruchomić edytor tekstu, taki jak TextEdit, BBEdit systemu OS X lub, jeśli znasz już obszar wiersza poleceń, jeden z tradycyjnych edytorów tekstu systemu Unix, takich jak pico lub vi. Następnie wskocz od razu, wpisując następujący wiersz:

#!/usr/bin/perl -w

Ta pierwsza linia informuje system operacyjny, że ma do czynienia ze skryptem Perla. The -w na końcu wiersza mówi Perlowi, że powinien być szczególnie rygorystyczny w interpretacji skryptu i wyświetlać ostrzeżenia, jeśli napotka kod, który uzna za podejrzany. Wyrób sobie nawyk dodawania -w do twoich skryptów: często pomoże ci to odkryć i naprawić problemy ze skryptami, zanim staną się udręką.

# znaki końca linii: x0d – Mac, x0a – Unix

w tej linii # oznacza komentarz do wykorzystania przez autora skryptu lub kogoś innego, kto go czyta, więc Perl zignoruje resztę wiersza. W tym komentarzu wyjaśniono kody znaków końca wiersza w systemach Mac i Unix. Później, poza komentarzem, w X notacja powie Perlowi, że używamy liczb szesnastkowych do reprezentowania zakończeń linii.

{

Perl używa nawiasów klamrowych (czasami nazywanych „nawiasami klamrowymi”) do grupowania fragmentów kodu. Ten najbardziej zewnętrzny zestaw nawiasów klamrowych w tym skrypcie jest opcjonalnym wizualnym wskaźnikiem początku i końca głównej części skryptu.

foreach $inFileName (@ARGV) {

Skrypt tego używa dla każdego pętli, aby przejrzeć wszystkie nazwy plików, które skrypt przekonwertuje na tekst czytelny dla systemu Unix. Każda pojedyncza nazwa pliku jest przechowywana w osobnym elemencie tablicy — zbiorze zmiennych — o nazwie @ARGV, który tworzy Perl.

Ta linia tłumaczy się jako „Weź nazwę pliku z @ARGV array, umieść go w zmiennej o nazwie $wNazwaPlikui uruchom kod ujęty w następujący zestaw nawiasów klamrowych; kontynuuj robienie tego, aż skończą się nazwy plików w @ARGV”. W Perlu wszystkie zmienne zaczynają się od $ znak z wyjątkiem tablic (które są poprzedzone przez @, tak jak @ARGV ) i skróty.

otwórz (INTEXTFILE, $inFileName);

Ta linia mówi Perlowi, aby otworzył plik, z którego nazwy został pobrany @ARGVi utwórz odwołanie do niego, które nadaliśmy nazwie PLIK INTEKSTOWY. Użyjemy tego odniesienia za każdym razem, gdy będziemy musieli czytać z tego pliku; Perl nie wiedziałby, do którego pliku się odwołujemy, gdybyśmy nie nazwali go wprost.

otwórz (OUTTEXTFILE, „>”. $wNazwaPliku. „.przekształcony”);

Ta linia tworzy nowy plik, który będzie zawierał nasz przekonwertowany tekst i odwołanie o nazwie PLIK TEKSTOWY. Pozostała część wiersza zawiera nazwę pliku; the > znak jest skrótem „utwórz plik” i tak naprawdę nie wpływa na nazwę pliku. Zmienna $wNazwaPliku zawiera nazwę oryginalnego pliku, a skrypt doda .przekonwertowany do końca nazwy (aby oryginał nie został nadpisany). Kropki między elementami nazwy pliku nakazują Perlowi połączyć je w jeden ciąg tekstu.

$textFile =;

Ta instrukcja mówi Perlowi, aby odczytał cały plik tekstowy PLIK INTEKSTOWY i umieścić go w zmiennej $textFile. Upewnij się, że plik nie jest zbyt duży (większy niż około 100 KB); mimo że OS X ma pamięć wirtualną w stylu Uniksa, nie można zakładać, że dostępne są wygórowane ilości pamięci.

Teraz ciężkie podnoszenie

Ta linia wykonuje całą rzeczywistą pracę w skrypcie iw związku z tym jest dość gęsta:

$textFile =~ s/x0d/x0a/;

Perl ma wbudowaną funkcję wyszukiwania i zastępowania, reprezentowaną przez S. Wywołując tę ​​funkcję, określasz, co ma wyszukać i zamienić; te dwa ciągi są ograniczone przez / postacie. Chcemy zastąpić znaki kończące wiersze Maca znakami uniksowymi, więc to są dwa ciągi, których użyliśmy w polach wyszukiwania i zamiany. Za pomocą =~ mówi Perlowi, aby wykonał wyszukiwanie i zamianę zawartości $textFile a następnie umieść wynik z powrotem $textFile.

print OUTTEXTFILE $textFile;

Po zakończeniu konwersji użyj funkcji drukowania, aby napisać zawartość $textFile do pliku wyjściowego.

zamknij (INTEKST PLIKU);zamknij (OUTTEXTFILE);

Te końcowe instrukcje zamykają pliki wejściowe i wyjściowe, aby zachować porządek. Dodaj dwa nawiasy zamykające, aby zakończyć fragmenty kodu w nawiasach i to wszystko.

Kiedy skończysz, zapisz ten skrypt w pliku o nazwie „lineconvert.pl” – pamiętając o nadaniu temu plikowi uniksowych zakończeń linii. Następnie użyj polecenia chmod z wiersza poleceń, aby ustawić atrybuty skryptu, aby system operacyjny wiedział, że jest to skrypt wykonywalny. Aby to zrobić, wpisz chmod 744 lineconvert.pl do wiersza poleceń. (Aby dowiedzieć się więcej o chmod polecenie, wprowadź człowiek chmod w wierszu polecenia.)

Korzystanie ze skryptu Perla

Załóżmy, że masz plik tekstowy Mac o nazwie „mac.txt” i chcesz, aby jego zawartość miała zakończenia linii Unix. Wywołujesz swój skrypt, wpisując ./lineconvert.pl mac.txt w wierszu poleceń i wykonuje konwersję. Otrzymasz plik o nazwie „mac.txt.converted”, którego zawartość ma zakończenia linii uniksowych. Ta-da! Teraz możesz zmodyfikować skrypt, aby na przykład utworzyć wersję Unix-to-Mac.

Jedną z wielu funkcji, które możesz dodać do swojego skryptu, jest ulepszona obsługa błędów. Jest to szczególnie ważne, ponieważ zdarzają się błędy, na które nie masz wpływu, a nie chcesz, aby zniszczyły Twoje dane.

Naprzód

Nasz przykład przedstawia kilka składników dużej i dobrze zaopatrzonej kuchni, jaką jest programowanie w Perlu. A Perl ma niezliczone zastosowania wykraczające poza zmianę plików tekstowych: może wypełnić luki między bazami danych a serwerami sieci Web, pomagając w tworzeniu dynamicznych witryn sieci Web. Możesz nawet użyć go do skatalogowania swojego archiwum MP3.

Aby dokładniej poznać Perla, przejrzyj CPAN, kompleksową sieć archiwów Perla ( www.cpan.org ). Jeśli znajdziesz pakiety, które wydają się przydatne, możesz chcieć je zdobyć Nauka Perla, wydanie drugie, Randal L. Schwartz i Tom Christiansen (O'Reilly & Associates, 1997). Używając go jako książki kucharskiej dla początkujących, wkrótce będziesz wymyślać skrypty Perla, które zaoszczędzą ci czasu i harówki.

Wieloletni użytkownik MacPerla, redaktor współpracujący STEPHAN SOMOGYI nie boi się już wyrażeń regularnych.

Perls of Wisdom: Pisanie skryptu Perla w wierszu poleceń systemu OS X może być łatwiejsze niż się wydaje, jeśli zastosujesz się do naszych instrukcji.
  • Jul 25, 2023
  • 75
  • 0