Terminal

Czyszczenie ukrytej historii pobranych plików na Maku

Terminal_iconY

Surfując po bezkresnych wodach oceanu zwanego Internetem nie tylko odwiedzamy witryny internetowe, które nas interesują ale również bardzo często pobieramy wszelkiego rodzaju pliki. Przeglądarka Safari pozwala w znacznej mierze zatrzeć ślady naszej sieciowej aktywności, dzięki wybraniu z menu programu (Safari lub Historia) opcji Wymaż historię i dane witryn…

safari_clean_01

Dodatkowo możemy też bezpośrednio w oknie Pobieranie skopiować odsyłacz do pobranego pliku lub skasować wybrany wpis (lub wszystkie) z listy.

safari_clean_02

safari_clean_03

Okazuje się jednak, że wcale informacje o pobranych plikach nie są w ten sposób trwale usuwane z systemu. Ba! nawet wybranie trybu prywatnego (menu Plik -> Nowe okno prywatne) nie sprawi, że tajemnica będzie znana tylko nam.

Aby wyświetlić ukrytą historię ściągniętych z sieci rzeczy należy otworzyć aplikację Terminal a w niej wprowadzić i zatwierdzić klawiszem Enter, następujące wyrażenie:

sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV* 'select LSQuarantineDataURLString from LSQuarantineEvent'

Dodanie | sort (ta pionowa kreska to pipe) na końcu wiersza uporządkuje wyniki. Jeśli wyświetlone informacje nadal nas nie satysfakcjonują, możemy wyciągnąć z bazy dodatkowe dane, takie jak datę i porę pobrania plików. W tym celu należy użyć zmodyfikowanego polecenia (należy pamiętać, że całe wyrażenie stanowi jeden długi wiersz!):

sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV* 'select LSQuarantineTimeStamp, LSQuarantineDataURLString from LSQuarantineEvent' | php -r 'date_default_timezone_set("Europe/Warsaw"); foreach (explode("\n", file_get_contents("php://stdin")) as $l) { preg_match("/([0-9\\.]+)\\|(.*)\$/", $l, $re); echo date("Y-m-d H:i:s",strtotime("2001-01-01 01:00")+$re[1])."\t$re[2]\n"; }'

Prawda, że zatrważające? :)

Terminal_clean_download

A poważnie, to przydaje się gdy szukamy łącza to dawno pobranego pliku, a wcześniej z determinacją maniaka prywatności wyczyściliśmy skutecznie (jak widać, wcale nie) miejsca, zawierające takie informacje. Co więcej, dzięki tym informacjom możemy też sprawdzić czy nie ściągnęło się przy okazji coś, czego wcale na Maczku nie chcemy.

Oczywiście można bazę dokumentującą nasz download wyzerować. Wystarczy wpisać i zatwierdzić poniższe:

sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV* 'delete from LSQuarantineEvent'

W efekcie ponowne wywołanie wcześniejszych wyrażeń nie wyświetli żadnych wpisów. Jeśli zamierzacie skorzystać z takich porządków regularnie wystarczy stworzyć skrypt Automatora:

do shell script "sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV* 'delete from LSQuarantineEvent'"

Historia pobrań działa w połączeniu chyba ze wszystkimi popularnymi przeglądarkami www (Safari, Chrome, Firefox), powinna również rejestrować aktywność większości innych programów, jak np. klienci FTP. Wyjątkami są tu App Store (MAS) oraz iTunes Store.

Być może aplikacje typy CleanMyMac potrafią również oczyścić czeluści systemu z takich danych, tego nie wiem – jeśli macie jakieś doświadczenia w tej materii, podzielcie się w komentarzach.

Skąd w ogóle ta historia pobrań? Otóż w OS X, od wersji Leopard, gdy pobierzemy plik z sieci przechodzi on przez tzw. menedżer kwarantanny. W przypadku ściągniętych programów na pewno nie raz ujrzeliście taki monit, proszący o podjęcie decyzji:

Kwarantanna_OSX

Powodem wyświetlenia tego okna jest zwrócenie uwagi użytkownika na bezpieczeństwo. Oczywiście można to zachowanie wyłączyć, jak się domyślacie znów dzięki użyciu Terminala:

defaults write com.apple.LaunchServices LSQuarantine -bool NO

Wystarczy wznowienie komputera, przelogowanie lub zresetowanie Findera i nowe preferencje zaczną obowiązywać. Zmiana „NO” na „YES” przywraca domyślne zachowanie.

Okazuje się jednak, że mimo wyłączenia mechanizmu pokazywania tego okna, każdy pobrany plik (program bądź dokument) jest rejestrowany w bazie i dopiero opisany wyżej sposób czyści historię definitywnie.

Dwie sztuczki w Terminalu na koniec tygodnia – system_profiler i networksetup

Wraz z nadchodzącym weekendem świętujemy połowę września. Aby zakończyć tydzień w lekki acz interesujący – naszym zdaniem – sposób, poniżej przedstawiamy dwie przydatne porady wykorzystujące siłę trybu poleceń w Terminalu. Dociekliwi spędzą nad nimi trochę więcej czasu, gdyż tu przedstawimy zaledwie czubek góry lodowej.

Zwykle aby sprawdzić aktualnie ustawioną rozdzielczość otwieramy panel Monitory w Preferencjach systemowych. Jednak może się zdarzyć, że informacja ta jest nam potrzebna przy tworzeniu np. skryptu. Dlatego warto wiedzieć, że w Terminalu OS X można taką informację uzyskać wpisując następujące wyrażenie:

system_profiler SPDisplaysDataType | grep Resolution

Efektem zatwierdzenia powyższego będzie następująca informacja (aktualna, a nie maksymalna rozdzielczość ekranu – ważne zwłaszcza w przypadku ekranów Retina!):

terminal_resolution

Jak zauważyliście, korzystamy z polecenia system_profiler, które wywołane bez parametrów wyświetli nam mnóstwo informacji o komponentach sprzętowych oraz zainstalowanym oprogramowaniu. Warto ograniczyć zasób wyświetlanych danych wykorzystując dostępne przełączniki i zmienne, opisane m.in. w manualu:

terminal_system_profiler

Jeśli natomiast interesują nas wyłącznie informacje związane z wszystkimi fizycznymi interfejsami sieciowymi naszego Maczka, to z pomocą przychodzi polecenie networksetup:

networksetup -listallhardwareports

W efekcie ujrzymy podstawowe informacje o naszych kartach sieciowych – przydate np. w celu określenia, czy dany interfejs jest sprawny i widoczny przez system operacyjny:

terminal_networksetup

Jak zwykle, wykorzystana komenda oferuje znacznie więcej, wystarczy zajrzeć do manuala:

terminal_man-networksetup

Przypominam, że w sytuacji gdy problemy ze sprzętem lub oprogramowaniem spędzają nam sen z powiek szczegółową diagnozę przeprowadzicie narzędziem opisanym tutaj.

Zaawansowane systemowe narzędzie diagnostyczne – sysdiagnose

Komputery Apple, dzięki wysokim standardom produkcji, rozsądnie dobranym i dopasowanym komponentom oraz świetnemu systemowi OS X, stanowią stabilne narzędzia i uwalniają użytkowników od wielu problemów, które są dość powszechne na konkurencyjnych platformach. Mimo to, zdarzają się sytuacje kiedy sprzęt zachowuje się w sposób odbiegający od normy. W końcu to tylko hardware i software projektowany i tworzony przez ludzi, prawda? Moim zdaniem, większość kłopotów ma swoje źródło między komputerem a oparciem krzesła ;)

Nie wnikając już głębiej w przyczyny, w sytuacji awaryjnej sięgamy po różne sposoby diagnozy i narzędzia naprawcze, by skutecznie wyleczyć Maczka. Najczęściej zaczynamy od Narzędzia dyskowego, obserwujemy zachowanie procesów w Monitorze aktywności, zaglądamy do logów Konsoli. Gdy zaś liczymy na pomoc innych, często korzystamy z Informacji o systemie.

Okazuje się, że system posiada w swoich zasobach interesujące narzędzie diagnostyczne uruchamiane z lini poleceń terminala – sysdiagnose. Wywołanie tej komendy:

sudo sysdiagnose -f ~/Desktop/

gdzie parametr -f pozwala wybrać ścieżkę do folderu w którym otrzymamy zwrotnie raporty diagnostyczne (domyślnie „lądują” one w /var/tmp), rozpoczyna gruntowne skanowanie i analizę komponentów systemowych oraz sprzętowych komputera.

sysdiagnose_01

Trwa to kilka minut i w efekcie zwraca archiwum .tar.gz, które po rozpakowaniu uraczy nas ogromną ilością raportów. Większość z nich będzie zagadką dla normalnych użytkowników, ale geekom ułatwią namierzenie powodów dysfunkcji komputera.

sysdiagnose_02

Oczywiście komenda pozwala na sprecyzowanie np. diagnozowanego procesu czy nawet załączenie trybu śledzenia kernela (Thorough Mode). Jestem przekonany, że narzędzie to może okazać się przydatne również programistom.

Ja – odpukać! – mam szczęście, bo jak dotąd żadnych problemów (tym bardziej poważnych) z Macami i OS X nie miałem, więc sysdiagnose uruchomiłem wyłącznie z ciekawości.

Źródło: OSXDaily

Sztuczki na ekranie logowania OS X (2) – własna tapeta i komunikat

Programiści w Apple po za udoskonalaniem oprogramowania często wprowadzają zmiany utrudniające wykonanie niektórych operacji. Zmienia to się często w kolejnych wersjach systemu. Dzisiejsze sztuczki działają w 100% w Mavericksie, co do starszych OS X’ów jak i nowego Yosemite nie mam pewności, więc jeśli ktoś z Was to sprawdzi i podzieli się informacją w komentarzu – wdzięczni będą wszyscy.

Zmienić tło Findera potrafi każdy, ale jeśli chcielibyśmy użyć własnej tapety w ekranie logowania, zamiast „fabrycznego” szarego tła, wymaga to podjęcia nieco większej liczby kroków. Standardowy wygląd okna logowania nie jest brzydki, ale wiele osób chce spersonalizować swój komputer, a to całkiem fajny sposób. Wadą prezentowanego rozwiązania jest fakt, że pozbędziemy się również nadgryzionego jabłuszka, ale nic nie stoi na przeszkodzie by na własnej tapecie takowe (a nawet bardziej atrakcyjne) umieścić.

Dokonane zmiany będą widoczne zarówno podczas startu systemu, jak również po wybraniu okna logowania, jeśli mamy aktywną funkcję Szybkie przełączanie użytkowników.

Krok 1: Przygotowanie tapety.

Po za wybraniem motywu tła, który nas będzie satysfakcjonował warto tak dobrać plik graficzny, by jego rozdzielczość odpowiadała natywnej rozdzielczości ekranu. Ponadto należy w edytorze graficznym nieco tę tapetę zmodyfikować – dodać biały lub transparentny pasek u góry dlatego, że obraz nie jest centrowany według środka ekranu a według oryginalnej pozycji jabłka. Ja w swoim iMacu 20″ (rozdzielczość 1680 x 1050) użyłem tapety o wymiarach 1680 x 1418 piseli. To nie wszystko, nowa tapeta zakryje ikony przycisków Uśpij, Uruchom ponownie oraz Wyłącz i jeśli chcemy je oglądać i używać (a nie trafiać w nie kursorem myszy po omacku), to albo metodą prób i błędów osadzamy odpowiednie ikonki (które znajdują się w folderze, do którego ścieżkę podaję niżej) na naszej tapecie, albo dodajemy przezroczysty pasek do naszej nowej tapety od dołu. Wtedy jednak ta przestrzeń na ekranie logowania będzie miała domyślny, nudny, szary kolor. Za to przyciski będą dostępne bez zgadywania.

tapeta_01

Drugi sposób jest o tyle bardziej bezpieczny, że w przypadku gdy mamy więcej kont użytkowników to po za trzema wspomnianymi przyciskami pojawiają, odpowiednio do sytuacji inne jeszcze, tj. AnulujPrzełącz użytkownika. Gdy już posiadamy odpowiedni plik należy przekonwertować go do formatu png. Ostatnia rzecz w tym kroku to utworzenie dodatkowych 3 kopii tego samego pliku i nadanie wszystkim następujących nazw (podane nazwy plików muszą mieć dokładnie takie brzmienie!):

  • apple.png
  • apple_s1.png
  • apple_s1@2x.png
  • apple@2x.png

Krok 2: Utworzenie kopii zapasowych oryginalnych tapet systemowych (a w zasadzie plików z logo Apple) okna logowania.

Warto utworzyć folder przeznaczony do przechowywania tych domyślnych plików. Następnie w Finderze wybieramy z menu Idź opcję Idź do katalogu… (skrót: Shift+Command+G) i wpisujemy następującą scieżkę:

/System/Library/PrivateFrameworks/LoginUIKit.framework/Versions/A/
Frameworks/LoginUICore.framework/Versions/A/Resources

Znajdujemy tu pliki o identycznych do wymienionych w kroku 1 nazwach i robimy ich kopie do przeznaczonego na backup folderu. Możemy zrobić to wykorzystując funkcję „przeciągnij i upuść” przy wciśniętym jednocześnie klawiszu Alt (Option).

Krok 3: Skopiowanie nowych tapet w miejsce oryginalnych plików.

Przygotowane własne tapety wrzucamy do folderu systemowego znajdującego się pod ścieżką wskazaną w kroku 2. Zostaniemy poproszeni o uwierzytelnienie operacji zmiany plików systemowych co potwierdzamy, a spytani o to czy chcemy pozostawić obie, zatrzymać czy zastąpić – wybieramy ostatnią opcję. Potwierdzamy tę operację dla każdego z czterech plików (możemy też zaznaczyć checkbox „Zastosuj do wszystkich”) i wpisujemy hasło administratora. Zrobione.

Dodatkowo możemy „upiększyć” ekran logowania własnym powitalnym (lub ostrzegawczym) komunikatem. Aby tego dokonać skorzystamy ze znanego już nam przyjaciela – aplikacji Terminal. Wpisujemy poniższe:

sudo defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText 'applesauce.pl - Twoje źródło wiedzy i rozrywki!'

Zatwierdzamy Enterem, wpisujemy hasło administratora i przy następnym logowaniu powita nas stosowny komunikat. Aby wrócić do stanu domyślnego należy w Terminalu wprowadzić poniższe wyrażenie:

sudo defaults delete /Library/Preferences/com.apple.loginwindow LoginwindowText

Efekt końcowy u mnie wygląda obecnie tak:

tapeta_02

Smacznego!

LGBT w Terminalu – lolcat & cowsay

Apple uczestniczy w Pride Parade a okazuje się, że środowisko LBGT wesprzeć można korzystając z systemowego Terminala ;) Przy okazji przydatnych wpisów Kuby pozwalających nawet laikom poznać świat wiersza poleceń, poniżej dwa przepisy na tchnięcie życia w monochromatyczny interfejs tekstowy.

Domyślny wygląd zawartości Terminala jest conajmniej nudny, oczywiście standardową kolorystykę można zmienić na wiele sposobów, dodać nawet tło, zmienić przeźroczystość itp. W tym wpisie jednak pójdziemy na całość i uzyskamy prawdziwą tęczę. Aby tego dokonać najpierw należy zainstalować alternatywę dla systemowego polecenia catlolcat (wymaga to zainstalowanego środowiska Ruby):

sudo gem install lolcat

Użycie sudo sprawi, że unikniemy ew. problemów z uprawnieniami.

Aby lepiej poznać lolcat polecam wyświetlić treść pliku pomocy do tego polecenia:

lolcat -h

Prawda, że śliczny efekt?

 

lolcat_01

Oczywiście można w ten sposób wyświetlić praktycznie wszystko, a zastosowanie przełącznieka -a dodatkowo tęczę zaanimuje. Zróbmy sobie tęczowe jabłuszko:

echo |lolcat -a -d 50

A może kolorowy transparent? Pozwolą na to polecenia: banner i… pipa „|” ;)

 

lolcat_02

Idąc dalej zainstalujmy cowsay – dzięki czemu losowo wybrane stworzenie „narysowane” kodami ASCII będzie do nas gadać w komiksowy sposób:

sudo gem install cowsay 

W połączeniu z lolcat możemy uzyskać następujący efekt:

 

lolcat_03

 

Kolorowej zabawy!

Informacje użyte we wpisie znalezione na OSXdaily.com