blank

Życie w konsoli – ranger

Zgłębiając tajniki systemu GNU/Linux nierzadko dochodzi się do wniosku, że większość czynności można wykonać z poziomu konsoli najczęściej w sposób bardziej efektywny, rzadko bardziej efektowny. Linia poleceń jest tak potężna, że opuszczanie jej może być po prostu niewygodne (bądź nieefektywne). Kiedy bilans czasu spędzanego w terminalu zaczyna przeważać nad czasem, który wykorzystujemy na klikanie w ikonki, pojawia się potrzeba znalezienia alternatyw dla narzędzi dostępnych jedynie w środowisku graficznym.

Zgłębiając tajniki systemu GNU/Linux nierzadko dochodzi się do prostego wniosku – większość czynności można wykonać z poziomu konsoli najczęściej w sposób bardziej efektywny, rzadko bardziej efektowny. Prostą kontynuacją takiego toku myślenia będzie dojście do wniosku, iż linia poleceń jest tak potężna, że opuszczanie jej może być po prostu niewygodne (bądź nieefektywne). Kiedy bilans czasu spędzanego w terminalu zaczyna przeważać nad czasem, który wykorzystujemy na klikanie w ikonki, pojawia się potrzeba znalezienia alternatyw dla narzędzi dostępnych jedynie w środowisku graficznym.

Dzisiejszy tekst skierowany jest głównie do administratorów, których pierwszorzędnym narzędziem pracy naturalnie staje się linia poleceń. Jednak osoby, które nie są administratorami, również mogą znaleźć tutaj ciekawe informacje oraz poznać inne podejście do czynności wykonywanej wielokrotnie podczas dnia pracy – przeglądania plików. Zapraszam do prezentacji menadżera plików ranger.

Edytory

W linii poleceń jak mantrę powtarzamy polecenia pwd, ls oraz cd (bądź ciekawszą kombinację pushd + popd). Polecenia te spełniają leżącą u podstaw systemów uniksowych zasadę KISS. Wiążą się jednak z pewnym narzutem mentalnym. Z pomocą przyjdą nam wizualne reprezentacje przeglądanych przez nas plików. Warto w tym miejscu napomknąć o tak zwanych ortodoksyjnych menadżerach plików, a w szczególności najbardziej popularnym spośród nich – Midnight Commanderze. Koncepcyjnie menadżery te sprowadzały się do zasady podziału ekranu na trzy części: dwóch symetrycznie rozłożonych list obecnie otworzonych katalogów oraz linii poleceń. Jedno z okien jest aktywne, a z poziomu linii poleceń możemy wykonywać operacje na obecnie zaznaczonym obiekcie w oknie aktywnym, na przykład skopiować zaznaczony plik do lokalizacji z drugiego pasywnego okna. Jednak to nie te relikty z zaszłej ery będą tematem dzisiejszego artykułu z jednego prostego powodu – autor urodził się zbyt późno, aby przesiąknąć tym popularnym w momencie królowania systemu DOS stylem pracy z plikami.

Ranger

Menadżer plików, o którym traktuje dzisiejszy tekst, bierze dużo z wcześniej wspomnianych „ortodoksów”, gdzie głównym interfejsem interakcji z programem jest klawiatura. W przypadku rangera dostajemy skróty klawiszowe dobrze znane użytkownikom Vima. Główną różnicą jest jednak zaimplementowany sposób podglądu plików wewnątrz samego programu. Okno menadżera podzielone jest na trzy kolumny:

  • pierwsza kolumna wyświetla zawartość katalogu rodzica obecnej lokalizacji
  • druga pozawala przemieszczać się w obecnie wybranym katalogu
  • trzecia kolumna daje nam podgląd obecnie zaznaczonego pliku (bądź w przypadku katalogu – listę znajdujących się w nim plików).

ranger

 

Instalacja

Instalację w systemach Enterprise Linux najłatwiej przeprowadzić korzystając z git:

$ git clone https://github.com/ranger/ranger.git
$ cd ranger
$ sudo make install

Powyższa instalacja umieści domyślnie program w lokalizacji /usr/local/bin/ranger dostępnej dla wszystkich użytkowników systemu. Wymaga jednak uprawnień administratorskich. Możemy również zainstalować program lokalnie, należy jednak pamiętać, aby dodać lokalizację instalacji do zmiennej PATH.

Konfiguracja

Po pierwszym uruchomieniu ranger tworzy ścieżkę, w której będzie przechowywana lokalna konfiguracja. Domyślnie jest to katalog ranger w lokalizacji zdefiniowanej w zmiennej środowiskowej $XDG_CONFIG_HOME. Jeśli zmienna ta nie jest ustawiona, to będzie to: ~/.config/ranger.

Skopiowanie domyślnej konfiguracji, w której zawarte są również szeroko udokumentowane opcje, możemy wykonać za pomocą następującej komendy:

 ranger --copy-config=all
creating: /home/cmd/.config/ranger/rifle.conf
creating: /home/cmd/.config/ranger/commands.py
creating: /home/cmd/.config/ranger/commands_full.py
creating: /home/cmd/.config/ranger/rc.conf
creating: /home/cmd/.config/ranger/scope.sh

> Please note that configuration files may change as ranger evolves.
  It's completely up to you to keep them up to date.

> To stop ranger from loading both the default and your custom rc.conf,
  please set the environment variable RANGER_LOAD_DEFAULT_RC to FALSE.

Dokumentacja rangera jest bardzo precyzyjna i z tego powodu nie będziemy się w tym tekście rozwodzić nad konfiguracją i zamiast tego zachęcamy do skorzystania z manuala man 1 ranger. Wartym wytłumaczenia są dwa podstawowe koncepty stojące za obsługą tego menadżera plików:

  1. W skrypcie scope.sh znajdują się mechanizmy wykorzystywane do wyświetlania podglądu różnych plików. Twórcy rangera polegają tutaj na wielu zewnętrznych aplikacjach, aby nie wymyślać koła na nowo. Domyślnie wspierany jest jedynie podgląd tekstu, jednak wsparcie dodatkowych typów pliku wiąże się jedynie z instalacją dodatkowego oprogramowania. Ponownie odsyłamy do dokumentacji, w której wszystkie przypadki użycia zostały dokładnie opisane.
  2. Plik konfiguracyjny rifle.conf zawiera powiązania typów plików z programami, w jakich powinny zostać one uruchomione. ranger posiada wbudowany swoisty „launcher” aplikacji rozpoznający przy pomocy MIME oraz rozszerzeń plików, jakiego typu plik próbujemy uruchomić. W momencie, gdy plik zostanie zidentyfikowany, konsultuje się z powyższą konfiguracją i uruchamia plik w programie z najwyższym priorytetem (pierwszym patrząc od góry).

Obsługa

Przemieszczanie się w strukturze katalogów może odbywać się za pomocą strzałek oraz entera (uruchomienie zaznaczenia/otwarcie katalogu). Pełną moc rangera doceni jednak dopiero użytkownik Vima, bo to z myślą o nich zostały utworzone mapowania akcji.

ranger-selection

Przemieszczać się możemy za pomocą dobrze znanego hjkl. Zaznaczanie odbywa się przy pomocy spacji – zaznaczone elementy zostaną podświetlone i to one będą podlegały wszystkim następnie wykonanym akcjom. Poniżej kilka najczęściej używanych akcji wraz z ich skrótami klawiszowymi.

Skrót Akcja
yy kopiuj
dd wytnij
pp wklej
zh pokaż ukryte pliki

Drugim sposobem interakcji z rangerem jest linia poleceń, do której uzyskamy dostęp (podobnie jak w Vimie) po wpisaniu znaku :. Najbardziej przydatną dla osoby rozpoczynającej przygodę z rangerem będzie polecenie :help ;)

Bonus! Integracja z Vimem

Ostatnia rzecz spodoba się osobom nieopuszczającym rządu domowego (ang. homerow) na klawiaturze. Istnieje bardzo zgrabna wtyczka do Vima pozwalająca używać rangera jako domyślnego menadżera plików wewnątrz Vima. Po wykonaniu instrukcji instalacji, dostępnej pod podanym powyżej linkiem, możemy uruchomić rangera wewnątrz Vima przy pomocy polecenia RangerOpenCurrentDir lub RangerOpenProjectRootDir (otwiera ranger w katalogu głównym projektu gitowego, w którym się obecnie znajdujemy). Polecenia te najwygodniej przypisać do skrótu klawiszowego. Autor wtyczki poleca następujące skróty:

$ tail -2 ~/.vimrc
nnoremap c :RangerOpenCurrentDir
nnoremap f :RangerOpenProjectRootDir

Zachęcam wszystkich wojowników konsoli do przetestowania rangera – nowoczesnego, szybkiego i rozbudowanego konsolowego menedżera plików. Dzięki swoim licznym funkcjom spełni on nasze oczekiwania zarówno w TTY, jak i w emulatorze terminala. Co więcej, po skonfigurowaniu i instalacji dodatkowych programów wspierających jego działanie, zachwyci on funkcjonalnością w porównaniu z graficznymi menadżerami.

blank Autorzy

Artykuły na blogu są pisane przez osoby z zespołu EuroLinux. 80% treści zawdzięczamy naszym developerom, pozostałą część przygotowuje dział sprzedaży lub marketingu. Dokładamy starań, żeby treści były jak najlepsze merytorycznie i językowo, ale nie jesteśmy nieomylni. Jeśli zauważysz coś wartego poprawienia lub wyjaśnienia, będziemy wdzięczni za wiadomość.