Ż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 ranger
a 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).
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 ranger
a 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:
- W skrypcie
scope.sh
znajdują się mechanizmy wykorzystywane do wyświetlania podglądu różnych plików. Twórcyranger
a 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. - 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 ranger
a doceni jednak dopiero użytkownik Vima, bo to z myślą o nich zostały utworzone mapowania akcji.
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 ranger
em jest linia poleceń, do której uzyskamy dostęp (podobnie jak w Vimie) po wpisaniu znaku :
. Najbardziej przydatną dla osoby rozpoczynającej przygodę z ranger
em 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ć ranger
a jako domyślnego menadżera plików wewnątrz Vima. Po wykonaniu instrukcji instalacji, dostępnej pod podanym powyżej linkiem, możemy uruchomić ranger
a 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 ranger
a – 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.