“Thefuck?” – Reduktor Terminalowej Frustracji

securitybeztabu.pl 1 rok temu

Naprawa błędów ludzkich podczas korzystania z konsoli

Nieraz zdarzyło mi się wpisywać polecenie w konsoli z literówką lub bez odpowiedniej opcji. Często pomimo umiejętności korzystania ze strzałek ponownie wpisuje polecenie, poprawiając literówkę lub dodając brakującą opcje. Jednak od jakiegoś czasu, w takich sytuacjach pomaga mi polecenie o charakterystycznej nazwie “thefuck”

Do czego służy “thefuck”

“Thefuck” to narzędzie wiersza poleceń, które automatycznie poprawia błędy w poleceniach wpisanych do konsoli. Dzięki temu można zaoszczędzić czas i zmniejszyć frustrację podczas pracy z terminalem. Używanie samego “thefuck” jest bardzo łatwe: wystarczy wpisać polecenie z błędem, a następnie w następnym wierszu wpisać frazę “fuck”. Narzędzie zasugeruje poprawkę i pozwoli ją zastosować, jeżeli zdecydujemy, iż jest poprawna. Można choćby dostosować zachowanie narzędzia i stworzyć własne zasady poprawiania błędów. Działa ono na zasadzie analizy właśnie wprowadzonego polecenia i sugeruje własną poprawkę, którą można zastosować jednym naciśnięciem klawisza. Innymi słowy, “thefuck” to aplikacja, która rozwiązuje problem błędów, jakie może popełnić człowiek podczas wpisywania poleceń w terminalu. Dzięki automatycznemu korygowaniu, narzędzie to wspomaga nas w codziennych trudach pisania poleceń w terminalu.

Instalacja “thefuck”

Zainstalowanie tego systemu jest możliwe na kilka sposobów. Jednak, moim zdaniem, najprostszym z nich jest skorzystanie z systemu zarządzania pakietami pip3, ponieważ aplikacja została napisana w języku Python. W większości znanych mi dystrybucji Linux, pip3 jest dostępny w standardowym repozytorium, jednak rzadko jest automatycznie zainstalowany. Dlatego, zanim przystąpimy do samej instalacji systemu “thefuck”, musimy najpierw zainstalować wspomniany system zarządzania pakietami Pythona. Aby to zrobić, wykonujemy następujące kroki:

Systemy Debian i oparte o menadżer pakietów apt:

Aktualizujemy repozytoria:

$ sudo apt update

Instalacja systemu zarządzania pakietami pip3:

$ sudo apt install python3-dev python3-pip python3-setuptools

Systemy Red Hat Enterprise Linux i oparte o menadżer pakietów dnf.

Aktualizujemy repozytoria:

$ sudo dnf update

Instalacja systemu zarządzania pakietami pip3:

$ sudo dnf install python3-pip python3-setuptools

Instalacja aplikacji thefuck

Używamy systemu pip3:

$ pip3 install thefuck --user

Weryfikacja instalacji aplikacji:

$ thefuck -v
The Fuck 3.32 using Python 3.6.8 and Bash 4.4.20(1)-release

Pamiętaj jednak, żeby instalować paczki tego typu dla konta użytkownika bez uprawnień administratora. Dlatego też nie korzystaj z polecenia sudo, a z opcji –user. Dzięki temu zostanie ona zainstalowana dla użytkownika bez dostępu do uprawnień administracyjnych. Aplikacja wykonuje korekty błędów, jakie nastąpiły przy wpisywaniu poleceń w terminalu. W związku z tym nie ma sensu, aby posiadała większe uprawnienia. Zresztą, jak wiadomo, zawsze warto stosować się do zasady minimalnych uprawnień. Gdyby wystąpiła jakaś luka w samej aplikacji, to dzięki jej wykorzystaniu uzyskany dostęp i straty byłyby ograniczone do minimum.

W przypadku gdybyś chciał/a usunąć aplikację:

$ pip3 uninstall thefuck

Po zainstalowaniu możemy przystąpić do korzystania z aplikacji “thefuck”. jeżeli chcesz poznać inne sposoby instalacji, odwiedź stronę projektu znajdującą się pod adresem https://github.com/nvbn/thefuck.

Konfiguracja narzędzia

Jeżeli chcemy korzystać z narzędzia, wystarczy, iż w konsoli wpiszemy polecenie “fuck”:

$ fuck
Seems like fuck alias isn't configured!
Please put eval "$(thefuck --alias)" in your ~/.bashrc and apply changes with source ~/.bashrc or restart your shell.
Or run fuck a second time to configure it automatically.
More details - https://github.com/nvbn/thefuck#manual-installation

Była to moja pierwsza próba użycia polecenia, dlatego też otrzymałem powyższą informację. Wynika z niej, iż należy wprowadzić odpowiedni alias do pliku .bashrc. Możemy to zrobić manualnie lub automatycznie. W naszym przypadku pójdziemy na łatwiznę i zgodnie z instrukcjami wprowadzimy ponownie polecenie:

$ fuck
fuck alias configured successfully!
For applying changes run source ~/.bashrc or restart your shell.

Pamiętaj jednak, iż jeżeli od pierwszego wpisania polecenia minęło trochę czasu, musisz wprowadzić je ponownie. Zobaczmy teraz plik konfiguracyjny Bash-a:

Na końcu pliku znajduje się to, czego wymagała od nas aplikacja. Jak widać, można to zrobić manualnie, ponieważ polega to na wpisaniu krótkiej linii kodu.

Teraz pozostaje tylko zrestartować powłokę:

$ source ~/.bash_profile

I już powinno wszystko działać poprawnie.

$ fuck
No fucks given

Jak korzystać polecenia

Jeśli natknęliście się na projekt na Githubie, może się wydawać dość skomplikowany, ale w rzeczywistości taki nie jest. W podstawowej wersji polega na wpisaniu polecenia “fuck”, gdy popełnimy błąd, a on automatycznie powinien go naprawić. Przykładowo:

$ sl
bash: sl: nie odnaleziono polecenia…
Podobne polecenie: 'ls'
$ fuck
ls [enter/↑/↓/ctrl+c]

W moim przypadku sam Red Hat podpowiada, jednak w systemie Debian zostanie wypisana tylko informacja:

bash: sl: nie znaleziono polecenia

Wiem, iż jest to bardzo prosty przykład, ale już obrazuje możliwości aplikacji. Po wpisaniu polecenia “fuck”, program zaproponuje korektę. Możemy zaakceptować ją, naciskając enter, wybrać inną opcję (jeśli dostępna) dzięki strzałek lub anulować dzięki sekwencji klawiszy “Ctrl+C“.

Przyjrzyjmy się jednak jeszcze innemu przykładowi:

$ cd /home/user/driectory
bash: cd: /home/user/driectory: Nie ma takiego pliku ani katalogu
$ fuck
mkdir -p /home/user/driectory && cd /home/user/driectory [enter/↑/↓/ctrl+c]

W tym przypadku chcemy przejść do nieistniejącego katalogu. Aplikacja “thefuck“, w związku z brakiem takiego katalogu, zaproponuje nam utworzenie go w wskazanym miejscu oraz przejście do niego. Może to być bardzo pomocne. Istnieje wiele programów, które nie tworzą drzewa katalogów dla swoich plików konfiguracyjnych, ponieważ standardowo z nich nie korzystają. Dzięki temu możemy ułatwić sobie zadanie tworzenia takich katalogów w pewnym sensie dzięki jednego polecenia.

Innym bardzo częstym błędem popełnianym jest brak wprowadzenia “sudo” przed próbą aktualizacji czy też instalacji w dystrybucjach Linux.

$ dnf update
Not root, Subscription Management repositories not updated
Błąd: To polecenie musi być wykonywane z uprawnieniami superużytkownika (w większości systemów jest to użytkownik root).
$ fuck
sudo dnf update [enter/↑/↓/ctrl+c]

W tym przykładzie program po prostu polecił dodanie sudo przed poleceniem. Może się wydawać banalne ale wykorzystanie strzałek jest bardziej czasochłonne niż wpisanie fuck.

Jak to naprawdę działa?

Tak naprawdę, takie możliwości zmian nie biorą się znikąd. Aplikacja posiada stworzone reguły, do których dopasowuje wywołania. W ramach jednego z poprzednich przykładów nie wpisaliśmy “sudo” przed próbą zaktualizowania repozytorium. Jednak dzięki wpisaniu polecenia “fuck”, pojawiło się “sudo“. Program skorzystał ze stworzonej reguły:

sudo – prepends sudo to the previous command if it failed because of permissions;

Dlatego jeżeli zostanie znalezione dopasowanie, tworzone jest nowe polecenie, używając dopasowanej reguły, o czym już się przekonaliśmy. Wszystkie dostępne reguły znajdują się pod adresem https://github.com/nvbn/thefuck#how-it-works. Jest to bardzo duża lista, dlatego też nie będę jej przepisywać tutaj.

Własne reguły

Aplikacja umożliwia dodawanie własnych reguł, ale wymaga umiejętności programowania w języku Python. Więcej informacji na ten temat można znaleźć pod adresem https://github.com/nvbn/thefuck#creating-your-own-rules. Przykłady reguł znajdują się pod adresem https://github.com/nvbn/thefuck/tree/master/thefuck/rules.

Podsumowanie

Aplikacja “thefuck” została dobrze przemyślana choćby pod względem swojej nazwy. Co najczęściej mówimy, gdy popełnimy jakiś błąd w poleceniu? No właśnie, “fuck”, stąd też myślę, iż wzięła się jej nazwa. Choć nie należy do skomplikowanych, może okazać się bardzo przydatna, szczególnie iż potrafi zaoszczędzić sporą ilość czasu. Wiem, iż może trochę przesadzam, ale tę aplikację możemy określić jako taki mini ChatGPT dla poleceń wywoływanych w konsoli. Jednak pamiętaj, zarówno jak w przypadku ChatGPT, tak i w tym, należy czytać to, co aplikacja nam zaproponuje. Nie jest ona niezawodna.

Idź do oryginalnego materiału