Co znajdziesz w tym artykule?
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śli zdecydujemy, że jest poprawna. Można nawet 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 oprogramowania 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 oprogramowania “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śli 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, że 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, że należy wprowadzić odpowiedni alias do pliku .bashrc. Możemy to zrobić ręcznie 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, że jeśli 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ć ręcznie, 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, że 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) za pomocą strzałek lub anulować za pomocą 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 za pomocą 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śli 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 nawet 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ę, że wzięła się jej nazwa. Choć nie należy do skomplikowanych, może okazać się bardzo przydatna, szczególnie że potrafi zaoszczędzić sporą ilość czasu. Wiem, że 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.